- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Mapleでの検算の限界について)
Mapleでの検算の限界について
このQ&Aのポイント
- Win2kでMaple7を使用して化学計算をしています。
- 連立方程式を解くために検算を行った結果、解が0に近い値となりました。
- Mapleでの検算の限界について調査してみましたが、詳細な情報は見つかりませんでした。
- みんなの回答 (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がデフォルトで整式は、こうやって計算してる可能性が高いのでおそらく変わらないとは思いますが。
補足
ご回答有難うございます。 > 数値で計算すれば、誤差がでます。 > 普通は、数値は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);