学习Julia矩阵操作与保持年轻的秘诀

2020-03-06 09:35:23 浏览数 (3)

自语:

话说Julia是一个神奇的语言,语法简单,速度贼快,是吹牛装X的不二神器。记得一个物理学家说过,那些旧理论之所以消失,不是因为人们改变了看法,而是持那种看法的人死光了。

同样的道理(同样在哪里???),以后Fortran或者其它旧式的语言之所以消失,不是因为大家都学习了新语言,而是使用他们的人死光了。

为了证明自己还永远年轻,就用一些时髦的词汇,看bilibili,玩QQ空间,听《两只老虎爱跳舞》,学习Julia。。。

对于嘲笑我装嫩的年轻人,我引用王朔的话:“让我欣慰的是:你也不会年轻很久了”

加油吧,骚年,还在朋友圈打卡RPython么,试试Julia吧!

1.1 矩阵的生成

生成一个4行4列的矩阵, 这里使用1~16数字. 注意, 这里生成矩阵时, 需要首先定义一个空的数组, 然后再进行填充.

代码语言:javascript复制
mat = Array(Int32,4,4)
代码语言:javascript复制
4×4 Array{Int32,2}:
 125804192  256236432   79364176   79364176
         0          0          0          0
  79234864   79266064  125805712  248775184
         0          0          0          0
代码语言:javascript复制
mat[:]=1:16
mat
代码语言:javascript复制
4×4 Array{Int32,2}:
 1  5   9  13
 2  6  10  14
 3  7  11  15
 4  8  12  16
也可以使用reshape构建矩阵
代码语言:javascript复制
reshape(1:15,3,5)
代码语言:javascript复制
3×5 Base.ReshapedArray{Int64,2,UnitRange{Int64},Tuple{}}:
 1  4  7  10  13
 2  5  8  11  14
 3  6  9  12  15

1.2 提取主对角线

代码语言:javascript复制
diag(mat)
代码语言:javascript复制
4-element Array{Int64,1}:
  1
  6
 11
 16

1.3 生成对角线为1的对角矩阵

代码语言:javascript复制
eye(4)
代码语言:javascript复制
4×4 Array{Float64,2}:
 1.0  0.0  0.0  0.0
 0.0  1.0  0.0  0.0
 0.0  0.0  1.0  0.0
 0.0  0.0  0.0  1.0

1.4 提取矩阵的下三角

代码语言:javascript复制
tril(mat)
代码语言:javascript复制
4×4 Array{Int64,2}:
 1  0   0   0
 2  6   0   0
 3  7  11   0
 4  8  12  16

1.5 提取矩阵的上三角

代码语言:javascript复制
triu(mat)
代码语言:javascript复制
4×4 Array{Int64,2}:
 1  5   9  13
 0  6  10  14
 0  0  11  15
 0  0   0  16

1.6 矩阵转置

代码语言:javascript复制
mat'
代码语言:javascript复制
4×4 Array{Int64,2}:
  1   2   3   4
  5   6   7   8
  9  10  11  12
 13  14  15  16

1.7 矩阵相乘

代码语言:javascript复制
a = [[1,3] [2,4]]

代码语言:javascript复制
2×2 Array{Int64,2}:
 1  2
 3  4
代码语言:javascript复制
b = [[2,4] [3,5]]
代码语言:javascript复制
2×2 Array{Int64,2}:
 2  3
 4  5

对应数值相乘

代码语言:javascript复制
a.*b
代码语言:javascript复制
2×2 Array{Int64,2}:
  2   6
 12  20

矩阵相乘

代码语言:javascript复制
a*b
代码语言:javascript复制
2×2 Array{Int64,2}:
 10  13
 22  29

1.8 矩阵求逆

代码语言:javascript复制
inv(a)
代码语言:javascript复制
2×2 Array{Float64,2}:
 -2.0   1.0
  1.5  -0.5
代码语言:javascript复制
inv(a)*a
代码语言:javascript复制
2×2 Array{Float64,2}:
 1.0          0.0
 2.22045e-16  1.0

0 人点赞