このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
vpasolve
シンボリック方程式の数値的な求解
構文
説明
は、初期推定または検索範囲 S
= vpasolve(eqn
,var
,init_param
)init_param
を使用して、変数 var
について方程式 eqn
を数値的に解きます。
は、初期推定または検索範囲 Y
= vpasolve(eqns
,vars
,init_param
)init_param
を使用して、変数 vars
について方程式系 eqns
を数値的に解きます。
[
は、初期推定または検索範囲 y1,...,yN
] = vpasolve(eqns
,vars
,init_param
)init_param
を使用して、変数 vars
について方程式系 eqns
を数値的に解きます。
___ = vpasolve(___,
は、ランダムな初期推定を使用して解を求めます。この入力を使用して、非多項方程式に対して同じ解を繰り返し返すのを回避します。すべての変数について初期推定を指定すると、'Random'
,true)'Random'
を true
に設定しても影響はありません。
例
入力引数
出力引数
ヒント
vpasolve
で解を求められない場合は、空のオブジェクトを返します。初期推定を行い、ソルバーが解を求められるようにします。例については、初期推定を使用した求解を参照してください。多項方程式の場合、
vpasolve
はすべての解を返します。非多項方程式の場合、すべての解を求める一般的な方法はありません。vpasolve
は既定では 1 つの解のみを返します。非多項式の異なる複数の解を求めるには、'Random'
を true に設定し、vpasolve
を繰り返し使用することができます。一意ではない解をもつ方程式系を解く場合、
vpasolve
の動作は方程式系が多項式か非多項式であるかによって異なります。多項式の場合、vpasolve
は任意のパラメーターを採用してすべての解を返します。非多項式の場合、解が存在する場合は 1 つの数値的な解を返します。有理方程式系を解く場合、
vpasolve
はその分母を乗算することで方程式を多項式に変換します。vpasolve
は、結果として得られる多項式系のすべての解を返します。これには、分母の根も含まれます。vpasolve
は変数に設定された仮定を無視します。引数init_param
を使用して適切な検索範囲を指定し、返される結果を特定の範囲に制限できます。ただし、vars
で指定された求解対象変数以外の変数が方程式または式に含まれている場合、vpasolve
は、一般に複素数である他の変数について求めたvars
の解を返します。出力変数
y1,...,yN
は、vpasolve
で方程式または方程式系を解く対象となる変数を指定しません。y1,...,yN
がeqns
に含まれる変数であっても、vpasolve(eqns)
が正しい順序でy1,...,yN
に解を代入することは保証されません。したがって、[a,b] = vpasolve(eqns)
の呼び出しではa
の解がb
に代入されたり、その逆になる可能性もあります。返される解の順序を確定するには、変数vars
を指定します。たとえば、呼び出し[b,a] = vpasolve(eqns,[b,a])
は、a
の解をa
に、b
の解をb
に代入します。solve
を使用して方程式をシンボリックに解いてから、vpa
を使用してその結果を数値的に近似することができます。この方法を使うと、シンボリック ソルバーで見つかったすべての解の数値近似が求められます。ただし、シンボリックに求解してからその結果を後処理することは、数値ソルバーvpasolve
を直接使用するよりも時間がかかるため、計算速度が低下する可能性があります。
アルゴリズム
'Random'
をtrue
に設定し、変数の検索範囲を指定すると、内部の (一様分布をもつ) 乱数発生器により検索範囲内でランダムな初期推定が選択されます。'Random'
をtrue
に設定し、変数の検索範囲を指定しない場合、半値幅100
のコーシー分布に従ってランダムな初期推定が生成されます。そのため、初期推定は実数値で、繰り返し呼び出す値の範囲が広くなります。