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

时间:2013-02-02 16:13:44

标签: matlab linear algebra symbolic-math

这可能非常简单,但我在设置矩阵时无法使用符号对象解决两个线性方程式。

方程式如下:

(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循环?

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

1 个答案:

答案 0 :(得分:2)

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