実際の問題を単純化するために、以下の記号式を定義しましょう。私は何とかa
に新しいものを割り当てた場合シンボリック配列が更新されると、最初の配列の要素を使用する別の変数をもう更新できません
a=sym('a',[1,3]);
b=a(1);
、私はb
を更新することができません。これを行う正しい方法は何ですか?
例1:
a=sym('a',[1,3]);
b=a(1);
a=sym([1,2,3]);
b
subs(b)
subs(b,a(1),100)
例1つの出力:
b =
a1
ans =
a1
ans =
a1
例2:
a=sym('a',[1,3]);
b=a(1);
a=subs(a,a(1),3);
b
subs(b)
subs(b,a(1),100)
例2出力:
b =
a1
ans =
a1
ans =
a1
例3:
a=sym('a',[1,3]);
b=a(1);
a(1)=sym(3);
b
subs(b)
subs(b,a(1),100)
例3出力:
b =
a1
ans =
a1
ans =
a1
私の実際の問題は、以下のとおりです。私はN
の未知数
a=sym('a',[1,N]);
とN
方程式を持っています。
EQN=sym('EQN',[1,N]);
N
は、ユーザの入力に応じて定義されており、私はそれが事前にどうなるかわかりません。私はa
に依存する他の変数も持っています。
% some code here such as b = [2*a(1),3*a(2),..] etc.
その後、私は今、私はb
での未知数を取り除くしたいが、私はのためにできない未知の
% some code here to derive EQN(1), EQN(2), ... EQN(N).
SOL=solve(EQN,a);
のための方程式を解くと
SOL = struct2cell(SOL);
SOL = [SOL{:}];
a=subs('a',a,SOL);
にソリューションを代用私が最初に説明しようとした理由。
'subs(b、SOL)'についてはどうですか? – m7913d
@ m7913d 'SOL'が' [3,2,1] 'になったと仮定して、例2の最後に' subs(b、[3,2,1]) 'を書き、その行の出力は'[3、2、1]'。私はそれが「3」だけであると予想した。 –
私は 'solve'関数によって返される' SOL'を意味します。これは構造体 'subs(b、solve(EQN、a))'です。 – m7913d