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行。为了可视化,您需要连接这些图。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

让我们解决以下形式的简单方程

设置 列向量的形式。

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

您还可以使用函数执行矩阵A的奇异分解 svd().

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

更多关于线性代数矩阵的操作可以在[线性代数]一节中找到(https://engee.com/helpcenter/stable/julia/stdlib/LinearAlgebra.html#LinearAlgebra.det )。