これはおそらく非常に簡単ですが、シンボリックオブジェクトを使用して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ループの代わりに何ができるかということです。
(これは非常に単純で、検索することで簡単に見つけることができるものだと思います。問題は、これが何と呼ばれるかわからないため、何を探すべきかわからないことです。)