Engee 文档
Notebook

基本矩阵运算

本例展示了在 Engee 中处理矩阵的基本方法和函数。

基本矩阵操作

首先,让我们定义一个包含 9 个元素的向量。

In [ ]:
Pkg.add(["LinearAlgebra"])
In [ ]:
a = [1 2 3 4 6 4 3 9 10]
Out[0]:
1×9 Matrix{Int64}:
 1  2  3  4  6  4  3  9  10

将每个元素的值增加 2,并将结果存储到一个新的向量中。在 Julia 中,可以通过运算符.+ 来实现。

In [ ]:
b = a .+ 2
Out[0]:
1×9 Matrix{Int64}:
 3  4  5  6  8  6  5  11  12

让我们绘制得到的向量字符串 b。为了实现可视化,有必要连接 Plots.jl 库。并将列向量输入函数plot() 的输入端。为此,使用运算符' 对 b 进行转置。

In [ ]:
c = b'
Out[0]:
9×1 adjoint(::Matrix{Int64}) with eltype Int64:
  3
  4
  5
  6
  8
  6
  5
 11
 12
In [ ]:
using Plots

plot(c)
Out[0]:

我们还可以制作另一种图表。例如,让我们以图表的形式显示向量 c 的值。为此,首先调用函数plotlyjs()

In [ ]:
plotlyjs()
bar(c, xlabel="месяц",ylabel="количество")
Out[0]:

要创建矩形矩阵,必须通过; 指定行。

In [ ]:
A = [1 2 0; 2 5 -1; 4 10 -1]
Out[0]:
3×3 Matrix{Int64}:
 1   2   0
 2   5  -1
 4  10  -1

将矩阵平移,并将结果写入另一个变量,例如 B。将矩阵 A 与结果矩阵 B 相乘。

In [ ]:
B = A'
Out[0]:
3×3 adjoint(::Matrix{Int64}) with eltype Int64:
 1   2   4
 2   5  10
 0  -1  -1
In [ ]:
C = A * B
Out[0]:
3×3 Matrix{Int64}:
  5  12   24
 12  30   59
 24  59  117

但我们也可以将矩阵 A 的每个元素与矩阵 B 的每个元素相乘,就像前面处理向量那样。也就是说,矩阵的乘法规则不是 "行对列",而是元素对元素。

In [ ]:
D = A .* B
Out[0]:
3×3 Matrix{Int64}:
 1    4    0
 4   25  -10
 0  -10    1

让我们求解一个如下形式的简单方程 $$ A*x=b $$ 设$b$ 为列向量。

In [ ]:
b = [1,3,5]
Out[0]:
3-element Vector{Int64}:
 1
 3
 5
In [ ]:
#Решение уравнения
x = A\b
Out[0]:
3-element Vector{Float64}:
  1.0
 -0.0
 -1.0
In [ ]:
#Покажем, что Ax=b
r = A*x - b
Out[0]:
3-element Vector{Float64}:
 0.0
 0.0
 0.0

线性代数部分的矩阵运算

通过LinearAlgebra 库,您可以处理各种矩阵特征和矩阵计算。例如,让我们找出矩阵 A 的特征值。为此,我们应用函数eigvals()

In [ ]:
using LinearAlgebra
eigvals(A)
Out[0]:
3-element Vector{Float64}:
 0.267949192431123
 0.9999999999999999
 3.732050807568875

将给定矩阵作为输入值传递给函数det() ,即可求出矩阵的行列式。

In [ ]:
M = [1 0; 2 2]
det(M)
Out[0]:
2.0

还可以使用函数svd() 对矩阵 A 进行奇异分解。

In [ ]:
svd(A)
Out[0]:
SVD{Float64, Float64, Matrix{Float64}, Vector{Float64}}
U factor:
3×3 Matrix{Float64}:
 -0.179911  -0.521682   0.833954
 -0.443397   0.799785   0.404652
 -0.878084  -0.296971  -0.375203
singular values:
3-element Vector{Float64}:
 12.317062005786141
  0.5148992632302947
  0.15767781817449114
Vt factor:
3×3 Matrix{Float64}:
 -0.371764  -0.922107    0.107289
 -0.213631  -0.0274913  -0.976527
  0.903412  -0.385958   -0.18677

更多线性代数中的矩阵运算可参阅 Linear Algebra