subs
シンボリック代入
構文
説明
シンボリック スカラー変数とシンボリック関数の代入
は、現れるすべての snew
= subs(s
,old
,new
)old
を new
に置き換え、次に s
を評価して s
のコピーを返します。ここで、s
はシンボリック スカラー変数またはシンボリック関数の式であり、old
には代入の対象となるシンボリック スカラー変数またはシンボリック関数を指定します。
old
およびnew
がいずれも同じサイズのベクトルまたは cell 配列の場合、subs
はold
の各要素をnew
の対応する要素で置き換えます。old
がスカラーであり、new
がベクトルまたは行列である場合、subs(s,old,new)
はすべての演算を要素単位で実行して、s
におけるold
のインスタンスをすべてnew
に置き換えます。s
のすべての定数項は、すべて 1 のベクトルまたは行列にその定数をかけた項に置き換えられます。
は、snew
= subs(s
,new
)s
に現れる既定のシンボリック スカラー変数をすべて new
に置き換え、次に s
を評価して s
のコピーを返します。既定の変数は symvar(s,1)
で定義されます。
シンボリック行列変数とシンボリック行列関数の代入
例
入力引数
ヒント
subs(s,__)
はs
を変更しません。s
を変更するには、s = subs(s,__)
を使用します。s
が一変数多項式で、new
が数値行列の場合、polyvalm(sym2poly(s),new)
を使用して行列としてs
を評価します。すべての定数項は、単位行列にその定数をかけた項に置き換えられます。R2022b 以降、微分または関数
diff
を含むシンボリック代入では、代入されるシンボリック オブジェクトの入力順序に従います。たとえば、次のコードは関数diff
を含むシンボリック代入を実行します。R2022b より前では、コードは次の出力を返します。syms m k x(t) syms x_t x_t_ddot eqSHM = m*diff(x(t),t,2) == -k*x(t); eqSHMnew = subs(eqSHM,[x(t) diff(x(t),t,2)],[x_t x_t_ddot])
eqSHMnew = m*x_t_ddot == -k*x_t
R2022b 以降では、コードは次の出力を返します。
出力が異なるのは、eqSHMnew = 0 == -k*x_t
subs
が最初にx(t)
にx_t
を代入するようになったためであり、この結果はdiff(x_t,t,2)
、つまり0
に等しくなります。以前のリリースと同じ代入結果を得るには、最初にdiff(x(t),t,2)
項を指定して、それがx(t)
項の前に代入されるようにします。eqSHMnew = subs(eqSHM,[diff(x(t),t,2) x(t)],[x_t_ddot x_t])
eqSHMnew = m*x_t_ddot == -k*x_t