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のコーシー分布に従ってランダムな初期推定が生成されます。そのため、初期推定は実数値で、繰り返し呼び出す値の範囲が広くなります。
