- ベストアンサー
Mapleで連立方程式の解の順序と複合表示について
- Mapleで連立方程式を解く際、解の表示順序が異なる場合があります。解がx,yの順に表示される場合とy,xの順に表示される場合があります。
- 解の表示順序は連立方程式の式の順序や数式の書き方によって異なります。
- 解を複合表示するには、連立方程式をsolve関数で解き、解の符号を考慮して表示する必要があります。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
WinXP&Maple5です。 >解がx,yの順に表示されないのは何故なのでしょうか? 参考文献によると、この原因はsolveコマンドが、連立方程式のように解が複数あるとき、解の組を「集合」として扱うからのようです(集合には順序はない)。しかし、それを「リスト」として扱うと(例えば集合をリストに代入)、指定した順序で表示されます。以下のようにすれば必ずx,yの順番で表示されます。 f:=abs(3*x+y)/10*10^(1/2)-abs(y); g:=abs(y)-abs(2*x-y-1)/5*5^(1/2); h:=abs(2*x-y-1)/5*5^(1/2)-abs(3*x+y)/10*10^(1/2); soln:=solve({f,g,h},{x,y}): for i from 1 to 4 do x[i]:=subs(soln[i],x):y[i]:=subs(soln[i],y) od; 最初の連立方程式はf=0、g=0、h=0の形式に書き換えました(あとで検算するため)。Mapleではf:=...=0と書かなくても、=0と解釈してくれます。 solnは解の組を入れる変数で、この段階では「集合」のままですので順番はMapleまかせです。次のfor文でこのsolnからx[ ],y[ ]に解を分けて入れていきます。x[ ],y[ ]はリストではありませんが、順番を指定しているのでx[ ],y[ ]の順で表示されます(odの後が;で終わっているので表示を確認できると思います)。配列変数x[1~4]とy[1~4]が解です。x[1]とy[1]は同じ組の解です。こうすれば解を後の計算に使うことができます。 x[ ],y[ ]が確かに解になっていることを確認するには以下を実行します(30桁計算の例)。mapコマンドを使う方法もありますが、subsのほうが理解しやすいのでそうしました。 for i from 1 to 4 do evalf(subs(x=x[i],y=y[i],[f,g,h]),30) od; >上記の解を複合±を使って表示させるにはどうしたらいいのでしょうか? 参考書やWebサイト、Helpファイルを調べましたが表示する方法は見つかりませんでした。複号は2種類(±と干)しかないので、出てくる符号の組み合わせによっては複号同順では1つの式で表せず、かといって複号任意とすると全ての組み合わせが解になってしまうという問題があるからでしょう。 参考文献:「はじめてのMaple V リリース4」シュプリンガー・フェアラーク東京株式会社(1990),p.67.
お礼
有難うございます。 お蔭様で大変参考になりました。