# equationsToMatrix
将线性方程转换为矩阵形式
函数库: TySymbolicMath
# 语法
A, b = equationsToMatrix(eqns)
A, b = equationsToMatrix(eqns, vars)
# 说明
A, b = equationsToMatrix(eqns) 将方程 eqns 转换为矩阵形式。对于使用 symvar 函数在 eqns 中找到的所有变量来说,eqns 必须是线性方程组。示例
A, b = equationsToMatrix(eqns, vars) 将方程 eqns 转换为矩阵形式,其中 eqns 在 vars 中必须是线性的。示例
# 示例
将线性方程转换为矩阵形式
将线性方程组转换为矩阵形式。equationsToMatrix 使用 symvar 自动检测方程中的变量。返回的系数矩阵遵循 symvar 确定的变量顺序。
using TySymbolicMath
@variables x y z
eqns = [x + y - 2 * z == 0, x + y + z == 1, 2 * y - z == -5]
A, b = equationsToMatrix(eqns)
A = 3×3 Matrix{Num}:
1 1 -2
1 1 1
0 2 -1
b = 3-element Vector{Num}:
0
1
-5
vars = symvar(eqns)
vars = 3-element Vector{Num}:
x
y
z
您可以通过指定其他变量顺序来更改系数矩阵的排列方式。
vars = [x, z, y]
A, b = equationsToMatrix(eqns, vars)
A = 3×3 Matrix{Num}:
1 -2 1
1 1 1
0 -1 2
b = 3-element Vector{Num}:
0
1
-5
使用伴随矩阵和行列式求矩阵的逆
通过指定自变量将线性方程组转换为矩阵形式。当方程在这些变量中是线性的时,equationsToMatrix 才会生效。
对于此线性方程组,指定自变量为 [s t],因为此线性方程组对于 r 是非线性的。
using TySymbolicMath
@variables r s t
eqns = [s - 2 * t + r^2 == -1, 3 * s - t == 10]
vars = [s t]
A, b = equationsToMatrix(eqns, vars)
A = 2×2 Matrix{Num}:
1 -2
3 -1
b = 2-element Vector{Num}:
-1 - (r^2)
10
仅返回方程的系数矩阵
using TySymbolicMath
@variables x y z
eqns = [x + y - 2 * z == 0, x + y + z == 1, 2 * y - z == -5]
A, = equationsToMatrix(eqns)
A = 3×3 Matrix{Num}:
1 1 -2
1 1 1
0 2 -1
求复数类型的系数矩阵
对于复数类型输入,需要手动构造一个由符号表达式构成的向量或矩阵,而不应该以符号方程形式输入,即不应该包含 == 或 ~ 运算符。
using TySymbolicMath
@variables x y z
eqns = [x + (5 + im) * y - 2 * z, x + y + z - 4 * im, 2 * y - z * im + 5 + 7 * im]
A, b = equationsToMatrix(eqns)
A = 3×3 Matrix{Number}:
1 5 + im -2
1 1 1
0 2 -im
b = 3-element Vector{Number}:
0
4im
-5 - 7im
A, b = equationsToMatrix(eqns, x)
A = 3×1 Matrix{Num}:
1
1
0
b = 3-element Vector{Complex{Num}}:
-5y + 2z - im*y
4im - y - z
-5 - 2y + im*(-7 + z)
求解作为时间函数的方程组
考虑以下线性方程组,它们是时间的函数:
声明方程组。
using TySymbolicMath
@variables t x(t) y(t) z(t) u(t) v(t)
eqn1 = 2 * x + y + z == 2 * u
eqn2 = -x + y - z == v
eqn3 = x + 2 * y + 3 * z == -10
eqn = [eqn1; eqn2; eqn3]
eqn = 3-element Vector{Num}:
(2x(t) + y(t) + z(t)) == (2u(t))
(-x(t) + y(t) - z(t)) == v(t)
(x(t) + 2y(t) + 3z(t)) == -10
将方程中的自变量 x(t)、y(t) 和 z(t) 指定为符号向量 vars。使用 equationsToMatrix 函数将方程组转换为矩阵形式。
vars = [x, y, z]
A, b = equationsToMatrix(eqn, vars)
A = 3×3 Matrix{Num}:
2 1 1
-1 1 -1
1 2 3
b = 3-element Vector{Num}:
2u(t)
v(t)
-10
# 输入参数
eqns - 线性方程符号表达式 | 符号方程 | 符号向量 | 符号矩阵
线性方程,指定为符号方程、符号表达式或由符号方程、符号表达式构成的符号向量、符号矩阵。符号方程是使用 == 或 ~ 运算符定义的,例如 x + y == 1、x + y ~ 1。对于符号表达式,equationsToMatrix 假定右侧为 0。
方程 eqns 对于自变量 vars 必须是线性的。
提示
对于复数类型输入,需要手动构造一个由符号表达式构成的向量或矩阵,而不应该以符号方程形式输入,即不应该包含 == 或 ~ 运算符。对于符号方程,可以通过将方程右侧移动到左侧,然后去掉 == 或 ~ 运算符来变成一个符号表达式。
复数支持: 是
vars - 自变量符号表达式 | 符号函数 | 符号向量 | 符号矩阵
方程 eqns 中的自变量,指定为符号函数、符号表达式或由符号函数、符号表达式构成的符号向量、符号矩阵。
复数支持: 否
# 输出参数
A - 系数矩阵符号矩阵
线性方程组的系数矩阵,指定为符号矩阵。
数据类型: Num
b - 方程的右侧符号向量
包含方程右侧的向量,指定为符号向量。
数据类型: Num
# 详细信息
线性方程组的矩阵表示
一个线性方程组如下:
这个方程组可以表示为矩阵方程