Mapleでの検算の限界について

このQ&Aのポイント
  • Win2kでMaple7を使用して化学計算をしています。
  • 連立方程式を解くために検算を行った結果、解が0に近い値となりました。
  • Mapleでの検算の限界について調査してみましたが、詳細な情報は見つかりませんでした。
回答を見る
  • ベストアンサー

Mapleでの検算の限界について

Win2kでMaple7を使用して化学計算をしています。 xz/y=1.75×10^(-5) y+z=0.05 x=z+w wx=10^(-14) という連立方程式でxの値を求めようとして w,y,zを消去して x^3+1.75^(-5)*x^2-(1.0*10^(-14)+0.05*1.75^(-5))*x-1.75^(-5)*1.0*10^(-14)=0 として > solve({x^3+1.75^(-5)*x^2-(1.0*10^(-14)+0.05*1.75^(-5))*x-1.75^(-5)*1.0*10^(-14)=0},{x}); {x = -.9350613693e-1}, {x = -.2000000000e-12}, {x = .3257914223e-1} となりました。 x = .3257914223e-1 という解の検算をしてみました。 > p:=x^3+1.75^(-5)*x^2-(1.0*10^(-14)+0.05*1.75^(-5))*x-1.75^(-5)*1.0*10^(-14);    p := x^3+.6092699470e-1*x^2-.3046349735e-2*x-.6092699470e-15 > subs(x=0.03257914223,p);    -.4060926995e-13 となりました。 これは0に近いと見なさざるえないのですかね。

  • mk278
  • お礼率61% (279/456)

質問者が選んだベストアンサー

  • ベストアンサー
  • yaksa
  • ベストアンサー率42% (84/197)
回答No.1

数値で計算すれば、誤差がでます。 普通は、数値は16桁程度の有効桁です。 せっかくMapleなんだから、記号計算すれば誤差はなくなると思います。 1.75を175/100 0.05を5/100 と書けば、記号のまま計算してくれるでしょう。 (めちゃめちゃ複雑な答えになると思いますが。) それから、ついでに数値で計算するときには、 p := x^3+.6092699470e-1*x^2-.3046349735e-2*x-.6092699470e-15 ではなくて、 p := ((x+.6092699470e-1)*x-.3046349735e-2)*x-.6092699470e-15 の形にして計算すると、桁落ちの影響がすくなくなって、もう少し0に近づくかもしれません。 Mapleがデフォルトで整式は、こうやって計算してる可能性が高いのでおそらく変わらないとは思いますが。

mk278
質問者

補足

ご回答有難うございます。 > 数値で計算すれば、誤差がでます。 > 普通は、数値は16桁程度の有効桁です。 有難うございます。覚えておきます。 > せっかくMapleなんだから、記号計算すれば誤差はなくなると思います。 > 1.75を175/100 > 0.05を5/100 > と書けば、記号のまま計算してくれるでしょう。 > (めちゃめちゃ複雑な答えになると思いますが。) > それから、ついでに数値で計算するときには、 > p := x^3+.6092699470e-1*x^2-.3046349735e-2*x-.6092699470e-15 > ではなくて、 > p := ((x+.6092699470e-1)*x-.3046349735e-2)*x-.6092699470e-15 > の形にして計算すると、桁落ちの影響がすくなくなって、もう少し0に近づく > かもしれません。 > Mapleがデフォルトで整式は、こうやって計算してる可能性が高いのでおそら > く変わらないとは思いますが。 有難うございます。 早速、試してみましたら何故か虚数が含まれる解ばかりが出力されてしまいました(下記)。 plotコマンドでグラフを出力すると(下記のように)x軸と3箇所で交わっているので虚数解は出ない筈だと思うのですが、、、 これはどうしてなんでしょうか? 後、 解を少数で出力させるにはsolveコマンドにどう記述したらいいでしょうか? > solve({((x^2+(175/10000000)*x)-(1/100000000000000+(5/100)*(175/10000000)))*x-(175/10000000)*(1/100000000000000)=0},{x}); 65632657 -------- (1/3) 15000000 {x = 1/15000000 %1 + -------- - 7/1200000}, {x = 1/3 %1 (1/3) 65632657 1 - 1/30000000 %1 - -------- ------- - 7/1200000 30000000 (1/3) %1 / (1/3) 131265314 1 \ + 1/800000 I sqrt(3) |2/75 %1 - --------- -------|}, {x | 75 (1/3)| \ %1 / (1/3) 65632657 1 = - 1/30000000 %1 - -------- ------- - 7/1200000 30000000 (1/3) %1 / (1/3) 131265314 1 \ - 1/800000 I sqrt(3) |2/75 %1 - --------- -------|} | 75 (1/3)| \ %1 / %1 := -8613950975 + 12 I sqrt(1962833543397105872547) > plot(((x^2+(175/10000000)*x)-(1/100000000000000+(5/100)*(175/10000000)))*x-(175/10000000)*(1/100000000000000),x=-0.002..0.002,y=-0.0000000005..0.0000000005);

関連するQ&A

  • Mapleで1/eの近似値の出し方は?

    Win2k,Maple7の環境です。 k:=subs(x=e,1/x); evalf(k,10); としても1/eが出力されるだけで近似値が出ません。 どうすれば出るのでしょうか?

  • Mapleで連立方程式で表示される解の順序と複合での表示について

    度々すいません。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の順に表示されるのでしょうか? それと上記の解を複合±を使って表示させるにはどうしたらいいのでしょうか?

  • Mapleで連立方程式の解が正常に出力されません

    こんにちは。 Windows2000でMaple7の環境です。 A(-1,-2),B(3,4),C(5,6)の△ABCの内心の座標を求めています。 各辺の直線の方程式を求めて点と直線間の距離の公式を使って内心の座標を求めようと試みたのですが何故か最後の連立方程式の解が4組も出力されてしまいます。これは何が原因なのでしょうか? x1=-1;y1=-2;x2=3;y2=4;x3=5;y3=6; subs({x1=1,y1=1,x2=3,y2=2,x3=2,y3=3},{y-y1=(y1-y2)/(x1-x2)*(x-x1)}); {y - 1 = 1/2 x - 1/2} subs({x1=1,y1=1,x2=3,y2=2,x3=2,y3=3},{y-y1=(y1-y3)/(x1-x3)*(x-x1)}); {y - 1 = 2 x - 2} subs({x1=1,y1=1,x2=3,y2=2,x3=2,y3=3},{y-y3=(y3-y2)/(x3-x2)*(x-x3)}); {y - 3 = -x + 2} d1:=abs((1/2*x-y-1/2))/((1/2)^2+(-1)^2)^(1/2); d1 := 1/5 | 1/2 x - y - 1/2 | sqrt(5) sqrt(4) d2:=abs((2*x-y-1))/((2)^2+(-1)^2)^(1/2); d2 := 1/5 | 2 x - y - 1 | sqrt(5) d3:=abs((x+y-1))/((1)^2+(1)^2)^(1/2); d3 := 1/2 | x + y - 1 | sqrt(2) solve({d1=d2,d2=d3,d3=d1},{x,y}); {y = 1/18*sqrt(5)*sqrt(2)+2/9, x = 8/9+1/18*sqrt(5)*sqrt(2)}, {y = -1/6*sqrt(5)*sqrt(2)-1/3, x = 1/6*sqrt(5)*sqrt(2)+1/3}, {y = 2/9-1/18*sqrt(5)*sqrt(2), x = 8/9-1/18*sqrt(5)*sqrt(2)}, {x = 1/3-1/6*sqrt(5)*sqrt(2), y = -1/3+1/6*sqrt(5)*sqrt(2)}

  • この連立方程式の変な解の呼び名は?

    連立方程式 w+x+2y+4z=3 3w+x+6y+2z=3 -x+2x-2y+z=1 の解は (w,x,y,z)=(1/2,1/2,0,1/2)+k(-2,0,1,0) という非自明解でも解空間 {(w,x,y,z)∈V;(w,x,y,z)=(1/2,1/2,0,1/2)+k(-2,0,1,0)} が線形部分空間にならない特殊な解ですよね。 それで解空間が線形部分空間にならないと困る(?)ので この連立方程式の解空間は {(w,x,y,z)∈V;(w,x,y,z)=k(-2,0,1,0)} で基底は{(-2,0,1,0)}はと定義するのですね。 このような変な非自明解の呼び名はあるのでしょうか?

  • 連立1次方程式について知りたいです

    連立1次方程式は解をもつか、またもつ場合は解の値が何になるのか分かりません。 (1) {2x+2y+z=9 {x-y+2z+2w=5 {x+2yーz-w=2 (2) {x+y+z=0 {x+ay+z=0 {ax+y=0     です。 よろしくお願いします。

  • 連立一次方程式の基本変形について

    連立一次方程式の基本変形について 次の連立一次方程式を、拡大係数行列を用いて掃き出し法で解け。 解は列ベクトル(x,y,z,w)で解答せよ。 x+y-z+3w=-3 x+2y-3z+w=-11 3x+y+z-w=7 -2x+3y-z+2w=-6 ( 1 1 -1 3 | -3 ) ( 1 2 -3 1 | -11) ( 3 1 1 -1 | 7 ) (-2 3 -1 2 | -6 ) とするところまではわかるのですが、教科書等を見てもいまいち解き方が理解できませんでした。 掃き出し法とは具体的にどのようにすればいいのでしょうか?ご教授お願いします。

  • 掃きだし法による連立一次方程式の解

    次の連立1次方程式を、拡大係数行列を用いて掃きだし法で解け。解は列ベクトル(x,y,z,w)で解答せよ。 y+z+5w=3 2x+y+7z+w=7 3x+y+9z+w=8 いまいちやり方がわからないので分かりやすく解説いただけるとうれしいです。

  • 次の微分方程式の問題を解いてください

    (1)関数z(x) (x>0)に関する方程式 (x^2)z''+3xz'+z=0・・・(*) を考える。x=e^tすなわちt=logxと変数変換したときz(e^t)=w(t)の満たす微分方程式を求めよ (2)微分方程式(*)の一般解を求めよ (3)(*)の解でさらに条件 x(1)=0, ∫[e,1] z(x)dx=1 を満たすものを求めよ

  • 3元連立1次方程式の解を持つ条件とその解

    3元連立1次方程式の解を持つ条件とその解 次の3元連立1次方程式(1)x+2y+3z=a (2)2x+3y+4z=b (3)3x+4y+5z=c の解を持つ条件とその解を求めます。-2x-y=8a-3b,2y+4z=3a-c,x-z=-3a+2bなどの関係式を求めたのですが、そこからの展開がわかりません。よろしくお願いします。 

  • 微分方程式の検算

    次の微分方程式の一般解を求めよ。 dy/dx = 1/(2y + x + 1) u = 2y + x + 1とおくと u' = 2y' + 1 これを用いると微分方程式は、 y' = 1/2 (u'-1) = 1/u すなわち、 ∫(u/u+2) du = ∫dx 積分を実行して u - 2 log |u + 2| = x + C であるから、求める解は 2y - log(2y + x + 3)^2 = C' ・・・と本には書いてあります。 しかし、 u - 2 log |u + 2| = x + C で、u = 2y + x + 1 と元に戻すと 2y + x + 1 - 2 log |2y + x + 1 + 2| = x + C 2y + 1 - 2 log |2y + x + 1 + 2| = C      ;x を消しました 2y + 1 - 2 log |2y + x + 3| = C 2y + 1 - log (2y + x + 3)^2 = C ・・・と、2y "+ 1" - log (2y + x + 3)^2 = Cになりませんか? CがC'になっているところを見ると、まさか+1がCに取り込まれてしまったんですか? 検算をお願いします。