如何使用符号对象求解简单的线性代数方程


这可能

非常简单,但我在设置矩阵以使用符号对象解决两个线性方程时遇到了麻烦。

等式的形式如下:

(1) a11*x1 + a12*x2 + b1 = 0
(2) a21*x1 + a22*x2 + b2 = 0

所以我有一个向量 {E}:

      [ a11*x1 + a12*x2 + b1 ]
{E} = [ a21*x1 + a22*x2 + b2 ]

我想得到一个矩阵 [A] 和一个向量 {B},这样我就可以解方程,即 [A]*{X} + {B} = 0 => {X} = -[A]{B}.

哪里

      [ x1 ]
{X} = [ x2 ]
      [ a11 a12 ]
[A] = [ a21 a22 ]
      [ b1 ]
{B} = [ b2 ]

矩阵 [A] 只是 {E} 的雅可比矩阵,但我必须在 {E} 上执行什么操作才能获得 {B},即不包含 x 的项?

这是我所做的:

x = sym('x', [2 1]);
a = sym('a', [2 2]);
b = sym('b', [2 1]);
E = a*x + b;
A = jacobian(E,x);
n = length(E);
B = -E;
for i = 1:n
    for j = 1:n
        B(i) = subs(B(i), x(j), 0);
    end
end
X = AB

我认为一定有一些功能可以在一行中执行此操作。

所以基本上我的问题是:我能做什么来代替那些循环?

(我意识到这是非常简单的事情,通过搜索很容易找到。问题是我不知道这叫什么,所以我不知道要寻找什么。

这只是B = subs(B,x,[0 0])

最新更新