- ベストアンサー
方程式が解けません。
x^5 + {0.45+2*10~(-5)}・x^4 ‐ 1.1*10~(-5)・x^3 ‐ 6*10~(-32)・x ‐ 12*10~(-37)=0 ってどうやって解くんでしょうか? 化学の問題の計算式の途中で出てきたのですが、こんな5次方程式どうやって解くのかサッパリわかりません… ちなみに答えは、 x=2.44・10^(-5) だそうなんですが…
- みんなの回答 (9)
- 専門家の回答
質問者が選んだベストアンサー
「化学」ですから、大体式変形の途中で「この項は (現在の条件では)無視できる」とかいう評価が出来る はずですが... まあさておき、今xが何を表しているか分かりませんが、 *xは正で *絶対値は充分小さいもの という事が多分分かっているものと仮定します。 与式を変形し、 x^5 + (0.45 + 2E(-5)} x^4 = 1.1E(-5) x^3 +(6eE-32) x + 12E-37 (2E-5は2*(10^(-5))の意味) としておきます。今xが充分小さいとして、 *まず左辺ですが、 *(少なくとも有効数字3桁では)0.45 >> 2E-5なので、 2E-5の方は無視します。 *又、x^5と 0.45 x^4の比較ですが、x<1E-3であれば (有効数字3桁で)x^5 << 0.45 x^4です。 *で、右辺ですが、 *先ず、1.1E(-5) x^3 と(6eE-32) xの比較ですが、 x>10^(-12)であれば 1.1E(-5) x^3 >> (6eE-32) x と評価できます。 *更に1.1E(-5) x^3 と12E-37の比較ですが、 x> 10^(-9) であれば1.1E(-5) x^3 >>12E-37です。 と言う訳で、1E-9 < x < 1E-3の範囲では、結局 0.45 x^4 = 1.1E(-5) x^3の項だけ残り、 x = 2.44 E-5となります *でも、式を見る限りでは有効数字2桁ですよね?
その他の回答 (8)
>「代数的に」解く・・・xという数字を使って解くと言う意味? x=の解の公式をつくるという事です。2次方程式ax^2+bx+c=0の解の公式、 x=(1/2a)×(-b±(b^2-4ac)^(1/2)) はご存知ですよね?。方程式の係数に、四則演算と根号を有限回施した組合せで、x=与えれば、それで「代数的に解いた」事になります。5次方程式以上には、解の公式が存在しない事を、ガロアだったかアーベルが証明しました。という訳で、高次方程式は一般に、数値計算頼みとなりますが、次は予備知識です。 コンピュータは無限の桁数を持てないので、国際規格でコンピュータ内部数値の有効桁数が決まっています。標準では8桁または16桁で、それぞれ単精度浮動小数点実数型,倍精度浮動小数点実数型です。略して単長,倍長とも呼ばれます。長は、桁数の長さです。倍精度実数以上の有効桁数を持つ実数型を、多倍長と言い、標準でCPUがサポートしないので、自分で専用プログラムを書いたりします。95桁の精度などは、その例です。5次方程式は、倍精度実数による数値計算の限界付近にあるので、標準では倍精度で計算します。単精度では駄目です。 数値計算を効率よく行うには、現場条件の吟味が大事です。例えばxがモル濃度だとすると、xは負ではありません。また5次方程式の0次の係数-12*10^(-37)molなんて濃度は、現実的に作りようがありません。そうすると、これを0とみなしても、実用解を得られる可能性があります。そこで方程式の主要部を判断します。各次数の係数の大きさを比較する、という事です。 5次の係数:10の0乗. 4次の係数:10の-1乗くらい. 3次の係数:10の-5乗くらい. 1次の係数:10の-32乗くらい. 0次の係数:10の-37乗くらい. 3次と1次の間で極端にオーダーが違うので、0次と1次は実用上省略できると仮定し、2次方程式に持ち込みます。x=2.4442*10^(-5)(>0)と決まります。ここで問題は、係数を比較した時、x^5などの影響を無視していた点です。そこで今度は、xの影響も考慮して方程式のオーダーを判断し、検算します。 求めたxは10の-5乗程度なので、xの影響も考慮すれば、 5次の項:10の-25乗くらい. 4次の項:10の-21乗くらい. 3次の項:10の-20乗くらい. 1次の項:10の-37乗くらい. 0次の項:10の-37乗くらい. となり、3,4,5次の項は5桁程度の違いなので、これは無視できません。0と1次は3次の項と比べて17桁も小さいので、ふつうは無視できるという判断になります。 最後に念のため、もとの5次方程式に代入し、数値計算自体の精度をチェックします。零点誤差は4.67734*10^(-32)です。3次の項より12桁小さいので、十分実用に耐えると自分は判断します。 何故3次の項かと言うと、問題の誤差規模は、最大の項の大きさで決まり、許容される誤差限度も最大項でふつうは決まるからです。有効数字2桁でいいなら、10の-22乗程度です。計算は、全てExcelで行いました。 で、解は1個なんでしょうか?。これも現場条件の一部です。2個以上あるという理論的根拠があれば、今のxで因数分解などして、さらに解を探し検算します。だから理論の定性的性質は、思いのほか大事です。
お礼
ありがとうございます!
- 178-tall
- ベストアンサー率43% (762/1732)
>ちなみに答えは、 x=2.44・10^(-5) ↑ これを見るぎり、いかにも「化学の問題の計算式」らしい。 だとすると、「代数方程式論」は的外れなのかもしれません。 原方程式の導出過程でも示してくれれば、議論の焦点を絞れないかなぁ。
お礼
ありがとうございます!
- info22_
- ベストアンサー率67% (2650/3922)
#3です。 >計算機を使えば?ここまで求められるのでしょうか? >プロセスが気になります… 高精度の計算ツール(多重長桁数のツール)とそれなりの工夫が必要です。 グラフィックツールGRAPESを使ってy=左辺(=f(x)とおく)とおいてグラフを書いて、解の大体の目安を掴みます。5次方程式ですから5つの解が存在します。その中の実数解だけがy=左辺のグラフとx軸よの交点として現われる。解の1つの x=-0.450044442030547914299911 はグラフからも分かるが、絶対値が大きく求めやすい。 他の実数解はグラフから、原点付近に集中し、絶対値が非常に小さい。 このためGRAPESで原点付近を拡大してもGRAPESの計算精度では原点付近を正確に拡大不能である。グラフからは、ただ原点付近に実数解が存在するらしいことしか分からない。 数式処理ソフトのwxMaximaのNewton法で原点付近の実数解を求めようとしてもNewton法の計算精度が16桁の有効桁数しかなく、初期値を変えると実数解が変化して解が確定しない。つまり計算精度不足のためこのNewton法は使えない。 大体の解を得るためのwxMaximaの allroots( )を使うと3個の実数解と2つの共役複素数の解が求まるが計算精度の桁落ちがあるかも知れない。allroots( )では有効数字は16桁しかない。 そこでwxMaximaの計算精度をfpprecを使って、計算精度を有効数字95桁にあげて、 しかしallroots( )で得られた解を検証をかねて2分法で確認すると同時に有効桁数95桁の計算を行った。つまり、解の近似値x1に対してx2<x1<x3ではさみf(x2)f(x3)<0となるように■x1'=(x2+x3)/2を近似値を修正する。x1'をx2またはx3としてみて(x2)f(x3)<0を満たすようにx2またはx3を修正し■の操作に戻る。これを繰り返すことで95桁での計算精度で計算精度を上げることが出来る。そうして求めた結果がA#3に回答した3つの実数解と2つの虚数解である。fpprec:95で指定する95桁の計算精度での計算は wxMaximaの場合「bfloat(ev(f,x=x2));bfloat(ev(f,x=x3));」などとします。 なお、解の精度はA#3に書いた結果に留まらず、2分法を繰り返していけば、さらに(桁落ちのない)高精度の解が得られることは言うまでもないです。 >実数解3個 >x=-4.7781769045550282*10^(-11) >x=2.4442030547848314395*10^(-5) >x=-0.450044442030547914299911 >虚数解は2個 >x=2.3890884522572274*10^(-11)±i 4.138034566537303*10^(-11) (注)A#3にも書いたように係数が実験値(測定値)で得た有効桁数が1~2桁の場合は x=2.44・10^(-5) 自体意味のある解であるかは疑問ですね(測定値の誤差に埋もれてしまい有意な解とはいえないでしょう)。 A#3の回答の解は係数の有効桁数も十分(95桁)あるとして計算した結果であることを忘れないことですね。
お礼
ありがとうございます!
- alice_44
- ベストアンサー率44% (2109/4759)
係数の精度が1~2桁であることを考えると、 x≒0 は、三重根というより四重根かもしれない。 具体的な解の値や、ニュートン法の収束性以前に、 この精度では、解の個数すら安定しない。
お礼
ありがとうございます!
- 178-tall
- ベストアンサー率43% (762/1732)
> {x^2 + {0.45+2*10^(-5)}・x ‐ 1.1*10^(-5)} * x^3 = 0 と端折って… これを見ると、「多重倍長」を使っても、トラブりそうですね。 原方程式には x = 0 の近傍に「三重根」もどきの零点がある。 例えば、一次近似の Newton 法では収束しなさそう…。
お礼
ありがとうございます!
- 178-tall
- ベストアンサー率43% (762/1732)
一・零次の係数を生かすには、多重長桁数のツールが必要。 単長ツール (あるいは、筆算) で近似的に解くには、 {x^2 + {0.45+2*10^(-5)}・x ‐ 1.1*10^(-5)} * x^3 = 0 と端折って、二次方程式とみなせばよい。 非負解だけとれば、 > x=2.44・10^(-5)
お礼
・多重長桁数のツール ・単長ツール と言う専門用語がわかりませんが、 流れはわかりました。ありがとうございます。
- info22_
- ベストアンサー率67% (2650/3922)
全ての解を数値計算で求めると 実数解3個 x=-4.7781769045550282*10^(-11) x=2.4442030547848314395*10^(-5) x=-0.450044442030547914299911 虚数解は2個 x=2.3890884522572274*10^(-11)±i 4.138034566537303*10^(-11) となります。 しかし、方程式が実験式で有効桁数が2桁程度しかなければ、解の有効桁数も2桁しかありません。逆に有効桁数をあげるには方程式の係数の有効桁数を増やしてやる、つまり測定値の有効桁数を増やさないといけません。
お礼
ありがとうございます!
補足
計算機を使えば?ここまで求められるのでしょうか? プロセスが気になります…
- nag0720
- ベストアンサー率58% (1093/1860)
x=2.44・10^(-5) というのは、正確な答ではなく近似値です。 5次方程式を代数的に解くのは普通はできないので、化学の問題ならニュートン法などの数値解析で解けばいいでしょう。
補足
すみません… 「代数的に」解く とは、どう言う解き方をいうのでしょうか?xという数字を使って解くと言う意味でしょうか?
お礼
とてもわかりやすかったです!ありがとうございます!
補足
有効数字2桁です。説明足らずで申し訳ありません!