• ベストアンサー

ある指数方程式の解き方について

2*(1/2)^D+3*(1/8)^D=1 上の指数方程式をDについて解く場合の解き方を出来るだ多く紹介願います。 ちなみに、正攻法で常用対数を取っても解けませんでしが、Mapleで計算したら答えは D=1.313584858… と出ました。参考になるかどうかはわかりませんが。 出来るだけエレガントな回答をお待ちしております(笑

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

  • ベストアンサー
  • kony0
  • ベストアンサー率36% (175/474)
回答No.3

求めたのはExcelです。有効桁数分はおそらく正確です。 ちなみに、Excelで =-LN((1/6+SQRT(113)/54)^(1/3)+(1/6-SQRT(113)/54)^(1/3))/LN(2) を入れると、D[7]と有効桁数分で同じ数値になります。 Newton法で数値を求める場合は、 有効桁数がいくら程度ほしいかによって、反復回数(終了条件)を変えればよいわけです。 今回の問題では、たかだか7回目の反復で、Excelの有効桁数分くらいまで求めることができたということになります。

NobNOVA
質問者

お礼

遅くなりまして申し訳ないです。 私もその方法で実験を行ってみましたが、 確かに二分法よりも収束が早いこともあり、 すぐに値を求めることが出来ました。 数値計算で答えを求めるってのは(あくまで個人的には) 納得いかない面もありますが、 意地張らずに計算機に頼った方が早いようですね(苦笑) どうもありがとうございました。

その他の回答 (2)

  • kony0
  • ベストアンサー率36% (175/474)
回答No.2

ニュートン法はいかが?(最近ニュートン法関連の回答が多い私です・・・) f(D)=2*2^(-D)+3*8^(-D)-1 f'(D)=-2log2*2^(-D)-3log8*8^(-D)<0より単調減少関数。解はただ1つだけあることがわかります。 D[n+1]=D[n]-f(D[n])/f'(D[n]) あとはこの反復式で点列を求めればよい。 初期点をD[0]=0とすると、D[7]=1.31358485846102…を求められています。

NobNOVA
質問者

お礼

ありがとうございます。 実際上の方程式を解くとなれば、 カルダノの方法かニュートン法 (または二分法とかもあるが) に頼るしかないのでしょうね。 余談ですが、与式に2^(3D)をかけても 2^D>0より解が1つしかないというのは確認できますね。 ただ、D[7]というのはどこまで信頼性のある解になるのでしょうか。 そこのところが分からないのですが。 カルダノの方法では出てくる値は近似値ではない (もしくは、そう私が思っているだけかもしれない)ので、 一応信頼は出来る解ですが、 ニュートン法の場合はあくまで出てくるのは近似値ですよね? この場合、小数点以下何桁まで信頼が置けるかが問題になると思うのですが。 差し出がましいようですが、また回答をお願いします。

NobNOVA
質問者

補足

お礼の補足です。 下の答えとこの答えを照らし合わせてみると、 小数点以下9桁までは正しいようですね。 失礼しました。 ただ、どこまで正確な値かが分かれば幸いなのですが。

  • guiter
  • ベストアンサー率51% (86/168)
回答No.1

エレガントではありませんが… x = (1/2)^D とおくと   2*(1/2)^D + 3*(1/8)^D = 1  ⇔2*(1/2)^D + 3*(1/2)^(3D) = 1  ⇔3x^3 + 2x -1 = 0 のように3次方程式に帰着できます. ここでカルダノの方法を用いると,この3次方程式の実数解は,  u = { 1/6 + √113/54 }^(1/3)  v = { 1/6 - √113/54 }^(1/3) なる u,v を用いて,  x = u+v と書けます. したがって,  (1/2)^D = u+v より,  D = - log_2{ u+v } と求まります. 関数電卓で計算したところ  D = 1.313584858 となりました.

NobNOVA
質問者

お礼

"エレガント"というのは冗談なのですが(苦笑 ともかく、ありがとうございます。 上のやり方を真似て、私も計算を行ってみたいと思います。

関連するQ&A