用julia写一个计算线性代数的程序
时间: 2023-10-27 14:07:22 浏览: 44
以下是一个简单的线性代数计算程序,使用Julia编写。它包括向量加法、向量点积、矩阵乘法和矩阵求逆。请注意,这只是一个简单的示例,可能并不是最优的实现。
```julia
# 向量加法
function vector_addition(v1::Array{Float64,1}, v2::Array{Float64,1})
if length(v1) != length(v2)
error("Vectors must have the same length.")
end
return [v1[i] + v2[i] for i in 1:length(v1)]
end
# 向量点积
function dot_product(v1::Array{Float64,1}, v2::Array{Float64,1})
if length(v1) != length(v2)
error("Vectors must have the same length.")
end
return sum([v1[i] * v2[i] for i in 1:length(v1)])
end
# 矩阵乘法
function matrix_multiplication(m1::Array{Float64,2}, m2::Array{Float64,2})
if size(m1, 2) != size(m2, 1)
error("Number of columns in first matrix must be equal to number of rows in second matrix.")
end
result = zeros(size(m1, 1), size(m2, 2))
for i in 1:size(m1, 1)
for j in 1:size(m2, 2)
for k in 1:size(m1, 2)
result[i,j] += m1[i,k] * m2[k,j]
end
end
end
return result
end
# 矩阵求逆
function matrix_inverse(m::Array{Float64,2})
if size(m, 1) != size(m, 2)
error("Matrix must be square.")
end
if det(m) == 0
error("Matrix is not invertible.")
end
return inv(m)
end
```
使用示例:
```julia
v1 = [1, 2, 3]
v2 = [4, 5, 6]
println(vector_addition(v1, v2)) # 输出 [5.0, 7.0, 9.0]
v1 = [1, 2, 3]
v2 = [4, 5, 6]
println(dot_product(v1, v2)) # 输出 32.0
m1 = [1 2; 3 4]
m2 = [5 6; 7 8]
println(matrix_multiplication(m1, m2)) # 输出 [19.0 22.0; 43.0 50.0]
m = [1 2; 3 4]
println(matrix_inverse(m)) # 输出 [-2.0 1.0; 1.5 -0.5]
```