七、Julia中的线性代数基础

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 4

2-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.253814

3-element Array{Float64,1}:
13.211998802513484
-5.711543314643205
-1.7591520750452676

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值