SolveやFindRootの結果からどのように解を抽出できますか.
Solve,FindRoot,その他の類似の関数は次のようなものを返します.
{{x -> 2.5}}
これらの関数は,2つ以上の変数について解く場合もあるので,2.5のような数値を返しません.もし数値のみが返されたら,どの数値がどの変数のものか分からなくなります.それぞれの変数が複数の解を持つ場合は,特にそうです.以下がその例です.
In[1]:= Solve[{x^2 + y^2 == 1, x + y == .5},{x, y}]
Out[1]= {{x -> -0.411438, y -> 0.911438},
{x -> 0.911438, y -> -0.411438}}
解と変数名の間の連結記号が示されていなければ,どの解がxあるいはyのものであるのか,また,yの解が0.911438であるときのみ,xの解が-0.411438になるということが分かる術はありません.
Mathematica は規則のリストを返します.規則はMathematica 中でうまく定義・文書化されている概念で,簡単に抽出できます.上記のSolveコマンドの結果からxについての規則をすべて引き出したい場合,次を評価してください.
In[2]:= x /. %
Out[2]= {-0.411438, 0.911438}
「/.」はReplaceAllの省略表現で,これによりMathematica は左側にあるxをすべて右側のxの規則で置き換えます.実際,左側はx,y,あるいはどのような変数の式でも構いません.
In[3]:= x^2 - y/2 + x y z /. %%
Out[3]= {-0.286438 - 0.375 z, 1.03644 - 0.375 z}
これは2つの解のそれぞれで評価された式を返します.zは規則ではないので,解の中で評価されていないことにご注意ください.
Questions or comments? Send email to support@wolfram.com.
|