ReturnConditions モードによるパラメトリック方程式の求解
この例では、Symbolic Math Toolbox™ を使ってパラメーター化された代数方程式の解を求める方法を示します。
代数方程式をシンボリックに解くには関数 solve
を使用します。関数 solve は、パラメーター化により方程式のすべての解 (たとえその数が膨大であっても) に関する完全な情報を提供することができます。また、どのような条件の下でこれらの解が有効であるかに関する情報も提供します。これらの情報を得るには、オプション ReturnConditions を true に設定してください。
方程式 sin(C*x) = 1
を解きます。求解に使用する変数として x
を指定します。関数 solve
は C
を定数として扱います。解とそれに含まれる新たに生成されたパラメーター、およびその解についての条件用に 3 つの出力変数を用意します。
syms C x eq = sin(C*x) == 1; [solx, params, conds] = solve(eq, x, 'ReturnConditions', true)
solx =
params =
conds =
解を検証するには、subs
を使用して方程式に解を代入します。この例がこれ以降、conds
にある仮定の下で処理されるように、assume
を使用します。isAlways
を使用して解をテストします。関数 isAlways
は、解が与えられた仮定の下では常に正しいことを示す論理 1
(true
) を返します。
SolutionCorrect = subs(eq, x, solx)
SolutionCorrect =
assume(conds) isAlways(SolutionCorrect)
ans = logical
1
無数にある解から 1 つの解を取得するには、パラメーターについての条件 conds
を解き、パラメーター params
の値を求めます。オプション ReturnConditions は指定しないでください。subs
を使用して k
のこの値を解に代入し、一連の解から解を求めます。
k0 = solve(conds, params)
k0 =
subs(solx, params, k0)
ans =
特定の条件を満たすパラメーター値を求めるため、条件を solve
の入力に追加します。99/4
よりも大きいパラメーターの値を求め、代入して解を求めます。
k1 = solve([conds, params > 99/4], params)
k1 =
subs(solx, params, k1)
ans =
指定区間内の解を求めるには、区間を指定する不等式を用いて元の方程式を解きます。
[solx1, params1, conds1] = solve([eq, x > 2, x < 7], x, 'ReturnConditions', true)
solx1 =
params1 =
conds1 =
あるいは、既存の解を使用して、追加の条件で制限することもできます。条件が変化しても解は変わらない点に留意してください。関数 solve
は solx
と solx1
を異なるパラメーターで表現しますが、それらは同等です。
[~, ~, conds2] = solve(x == solx, x < 7, x > 2, x, 'ReturnConditions', true)
conds2 =
定数 C の特定の値に対して、新しい条件を満たすパラメーター値を求めます。
conds3 = subs(conds2, C, 5)
conds3 =
solve(conds3, params)
ans =