Julia的语法和很多其它语言相似,但是有一些不同需要我们注意。
将矩阵赋值给其它变量
A = rand(1:4, 3, 3)
3×3 Array{Int64,2}:
3 1 1
2 3 3
3 4 3
B = A
C = copy(A)
[B C]
3×6 Array{Int64,2}:
3 1 1 3 1 1
2 3 3 2 3 3
3 4 3 3 4 3
A[1] = 17
[B C]
3×6 Array{Int64,2}:
17 1 1 3 1 1
2 3 3 2 3 3
3 4 3 3 4 3
生成全零向量
x = ones(3)
3-element Array{Float64,1}:
1.0
1.0
1.0
注意
A
A
A的类型是Array{Int64,2}
,而
x
\boldsymbol{x}
x的类型是Array{Float64,1}
。Julia定义了别名Vector{type}=Array{type,1}和Matrix{type}=Array{type,2}
很多基本运算和其它语言相同
乘法
b = A * x
3-element Array{Float64,1}:
19.0
8.0
10.0
转置
和其它语言一样,A'
是A的共轭转置,A.'
是A的转置
Asym = A + A'
3×3 Array{Int64,2}:
34 3 4
3 6 7
4 7 6
转置乘法
Julia中可以省略转置乘法中的乘号*
Apd = A'A
3×3 Array{Int64,2}:
302 35 32
35 26 22
32 22 19
求解线性方程组
\
函数可以求解线性方程组
A
x
=
b
Ax = b
Ax=b,其中
A
A
A是方阵
A\b
3-element Array{Float64,1}:
1.0
1.0
1.0
超定方程组
当A的行数大于列数时,\
函数可以计算超定方程的最小二乘解
Atall = A[:,1:2]
display(Atall)
Atall\b
3×2 Array{Int64,2}:
17 1
2 3
3 42-element Array{Float64,1}:
1.0093556662139733
1.8335596800965746
\
函数也可以计算秩亏最小二乘问题。在这种情况下最小二乘解不是唯一的,Julia返回范数最小的解。
A = randn(3,3)
3×3 Array{Float64,2}:
1.54474 0.200157 0.151139
0.865631 0.52354 0.253814
-0.312786 -0.638537 1.51334
[A[:, 1] A[:, 1]] \ b
2-element Array{Float64,1}:
5.125803052168922
5.125803052168925
不定方程组
当
A
A
A的行数小于列数时,\
函数返回最小范数解
Ashort = A[1:2, :]
display(Ashort)
Ashort\b[1:2]
2×3 Array{Float64,2}:
1.54474 0.200157 0.151139
0.865631 0.52354 0.2538143-element Array{Float64,1}:
13.211998802513484
-5.711543314643205
-1.7591520750452676