Main Content

シンボリック式の変数の置き換え

ソルバーのオプション ReturnConditions を使用して次の三角関数方程式を解き、完全解を求めます。ソルバーは、解およびその中で使用されているパラメーターとこれらパラメーターの条件を返します。

syms x
eqn = sin(2*x) + cos(x) == 0;
[solx, params, conds] = solve(eqn, x, 'ReturnConditions', true)
solx =
       pi/2 + pi*k
     2*pi*k - pi/6
 (7*pi)/6 + 2*pi*k
 
params =
k
 
conds =
 in(k, 'integer')
 in(k, 'integer')
 in(k, 'integer')

パラメーター k を新しいシンボリック変数 a と置き換えます。まず、シンボリック変数 k および a を作成します (ソルバーは、変数 k を MATLAB® ワークスペース内には作成しません)。

syms k a

関数 subs を使用して、解ベクトル solx 、パラメーター params および条件 conds 内の ka と置き換えます。

solx = subs(solx, k, a)
params = subs(params, k, a)
conds = subs(conds, k, a)
solx =
       pi/2 + pi*a
     2*pi*a - pi/6
 (7*pi)/6 + 2*pi*a
params =
a
conds =
 in(a, 'integer')
 in(a, 'integer')
 in(a, 'integer')

パラメーター a の値は 2 であると分かっているとします。解ベクトル solxa2 を代入します。

subs(solx, a, 2)
ans =
  (5*pi)/2
 (23*pi)/6
 (31*pi)/6

または、params2 を代入します。この方法では、同じ結果が返されます。

subs(solx, params, 2)
ans =
  (5*pi)/2
 (23*pi)/6
 (31*pi)/6

パラメーター a に浮動小数点数を代入します。ツールボックスは、数値を浮動小数点数に変換しますが、sym(pi)exp(sym(1)) などのシンボリック式をそのまま保持しています。

subs(solx, params, vpa(2))
ans =
                               2.5*pi
 3.8333333333333333333333333333333*pi
 5.1666666666666666666666666666667*pi

subs によって返された結果に vpa を使用して浮動小数点数を代入し、その結果を近似します。

vpa(subs(solx, params, 2))
ans =
 7.8539816339744830961566084581988
 12.042771838760874080773466302571
 16.231562043547265065390324146944