3

これはおそらく非常に簡単ですが、シンボリックオブジェクトを使用して2つの線形方程式を解くための行列の設定に問題があります。

方程式は次の形式になります。

(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}のジャコビアン行列ですが、{B}を取得するには、{E}に対してどのような操作を実行する必要がありますか。つまり、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ループの代わりに何ができるかということです。

(これは非常に単純で、検索することで簡単に見つけることができるものだと思います。問題は、これが何と呼ばれるかわからないため、何を探すべきかわからないことです。)

4

1 に答える 1

3

ただB = subs(B,x,[0 0])

于 2013-02-02T16:24:25.480 に答える