这可能非常简单,但我在设置矩阵以使用符号对象求解两个线性方程时遇到了麻烦。
方程在表格上:
(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 = A\B
我在想一定有一些功能可以在一行中执行此操作。
所以基本上我的问题是:我能做些什么来代替那些 for 循环?
(我意识到这是非常简单的东西,很容易通过搜索找到。问题是我不知道这叫什么,所以我不知道要找什么。)