アプリ版:「スタンプのみでお礼する」機能のリリースについて

度々すいません。Win2k&Maple7の環境の者です。

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);
solve({f,g,h},{x,y});

とした場合に解がx,yの順に表示されないのは何故なのでしょうか?
今迄、連立方程式を解かせる度にy,xの順に解が表示される時もあれば、x,yの順に表示される時もあります。どういう場合にy,xやx,yの順に表示されるのでしょうか?

それと上記の解を複合±を使って表示させるにはどうしたらいいのでしょうか?

A 回答 (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.
    • good
    • 0
この回答へのお礼

有難うございます。
お蔭様で大変参考になりました。

お礼日時:2007/07/17 13:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!