2026a

# 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

# 详细信息

线性方程组的矩阵表示

一个线性方程组如下:

这个方程组可以表示为矩阵方程 ,其中 是系数矩阵:

是包含方程右侧的向量。

# 另请参阅

symvar | sym_linsolve