• ベストアンサー

計算方法 ニュートン法

1-(1/1+r)^24=20rをどのように計算すればよいのでしょうか?? 計算機で地道に試行を繰り返していくにしてもおおよその見当がつけれないと莫大な数の試行をくりかえさなければいけなくなるのですがどうすればいいのでしょうか??ニュートン法を使うにしてもどのようにやればいいのかわかりません。教えてください!お願いしす。

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

  • ベストアンサー
noname#221368
noname#221368
回答No.8

 Excelへの不信感を煽るような、余計な事を書きました(反省)。常識的な加減乗除の範囲では、Excelは大丈夫です。ただベキ乗がからむと、^3以上では信じていません(私は)。たぶんExcel WorkSheetの有効数字は単精度と思われます。これはあくまで一般論です。  今回の件に関しては、(1+r)^24を2項展開すればわかるように、欲しい解が0.015付近のものなら、  (1+0.015)^24 = Σ nCk・0.015^k         = 1+0.36+0.0621+0.0068+0.0005+・・・ と、高次の項は、有効数字の彼方に消えていきます。この事から、今回については、Excelでも安全だろうと判断できます。じっさい逆数をとると、  0次:1,1次:0.7353,2次:0.7032,3次:0.6998,4次:0.6996 となって、3次の項までとれば十分だろうと思われます。この結果から、手計算の摂動法で3次の項まで追いかけると、 1次の摂動:  24・r0 = 20・(1+24・r0)  r0 = 1/120 = 0.008333  1-1/r0^24-20・r0 = 0.013924 2次の摂動:  276・(r0+ε0) = 20・(24・ε0+276・(r0^2+2・r0ε0))  ε0 = 0.006757,r1 = r0+ε0 = 0.015090  1-1/r1^24-20・r1 = 0.000143 3次の摂動:  276・ε1+2024・(r1^2+2・r1ε1) = 20・(24・ε1+276・2・r1ε1+2024・(r1^3+3・r1^2ε1))  ε1 = 0.000954,r2 = r1+ε1 = 0.016044  1-1/r2^24-20・r2 = -0.003377 となりました。Excelを電卓がわりに使っています。この中で一番正解に近いのは、2次の摂動で、r=0.015090 です。誤差は +0.000143。

その他の回答 (7)

noname#101087
noname#101087
回答No.7

inara さんの解を拝見。 > 0.0151308439023100 Excel による解と照合してみます。  0.0151308439023105 Excel も、マアマアです。

  • inara
  • ベストアンサー率72% (293/404)
回答No.6

インチキかもしれませんが、数式処理ソフト(Maple)を使った解です。 f(r) = 1-1/(1+r)^24-20*r = -r*(-4+204*r + 3496*r^2 + 29854*r^3 + 170016*r^4 + 715484*r^5 + 2345816*r^6 + 6186609*r^7 + 13401916*r^8 + 24188824*r^9 + 36728976*r^10 + 47218724*r^11 + 51586976*r^12 + 47961624*r^13 + 37917616*r^14 + 25414609*r^15 + 14363316*r^16 + 6787484*r^17 + 2649416*r^18 + 839454*r^19 + 210496*r^20 + 40204*r^21 + 5496*r^22 + 479*r^23 + 20*r^24)/((1+r)^24) f(r) = 0 の実数解を15桁で計算すると 0 0.0151308439023100 -1.83125225938854 -1.85918835945313 複素数解は -1.83125225938854-0.218447524025452*I -1.83125225938854+0.218447524025452*I -1.74918965537234-0.422986982197535*I -1.74918965537234+0.422986982197535*I -1.61812660630078-0.600576934035261*I -1.61812660630078+0.600576934035261*I -1.44624300759864-0.739853499477287*I -1.44624300759864+0.739853499477287*I -1.24424961141191-0.831832932307568*I -1.24424961141191+0.831832932307568*I -1.02469800334668-0.870458660747334*I -1.02469800334668+0.870458660747334*I -0.801158888018796-0.852952132661651*I -0.801158888018796+0.852952132661651*I -0.587300059896854-0.779930272772379*I -0.587300059896854+0.779930272772379*I -0.395862574211206-0.655238730411919*I -0.395862574211206+0.655238730411919*I -0.237380216829200-0.485351250035348*I -0.237380216829200+0.485351250035348*I -0.117510359849647-0.277457321618278*I -0.117510359849647+0.277457321618278*I もっと桁数の多い解が必要ならお申し付けください(100桁までなら可能)。

noname#101087
noname#101087
回答No.5

#1 です。 Excel 不信説にビビりはじめ、セカンドオピニオンを試みました。LN(*) バージョンです。  1-20r=(1/1+r)^24 の両辺の対数をとって  F(r)=LN(1-20r)+24*LN(1+r)  F'(r)={-20/(1-20r)}+24/(1+r) を使い、Newton を追試行。答えは、前回とほぼ一致。 いまだ「利率」の先入観から脱却できず、% オーダーの解だけですが。

noname#221368
noname#221368
回答No.4

 どのような数値解法を使うにしろ、グラフの形を目で見て、解の存在範囲を把握するのが、一番の近道です。ここでは、  f(r)=1-1/(1+r)^24 g(r)=20r の交点を求める事を考えます。 (1) グラフの概形を想像する まずf(r)の-1/(1+r)^24の項は、r=-1で-∞に発散し、r<-1では単調減少,-1<rでは単調増加です。従ってf(r)も同じ挙動です。また|r|が大きくなると、f(r)は1に漸近するのは目に見えてます。それからf(1)=0も明らかです。  最初にこれだけの情報を紙に書いてみて下さい(フリーハンドでOKです)。そこに、原点を通る右上がり直線(g(r))を書き加えます。これだけで、解は、r<-1に一個,r=0に一個ある事がわかります。  -1<r<0と0<rについては、解があるかもしれないですが、r=0でf(r)とg(r)が交わることと、-1<r<0では、f'(r)>g'(r)=20であることから、-1<r<0に解はない事がわかります。ここで ' は1階微分です。0<rについては、実際に正確なグラフを作って判断します。 (2) 作図範囲を決める  f(r)の-1/(1+r)^24の項が非常に強いことと、(1)の情報から、   1+r=-2 となる r=-3 と、   1+r=+2 となる r=+1 の 範囲で十分だと判断できます。rをどこまで-1に近づけるかは、作図しながら判断しますが、(1)の情報から、-1<r<0の範囲のグラフは不要です。 (3) 作図する  昔は大変でしたが、今ではExcelなどで手軽にグラフをつくれます。r<-1でどこまで-1に近づけるかは、Excelで表を作りながら、f(r)<g(r)となるrを探せば十分です。理由はf(r)とg(r)の単調性です。私は-3≦r≦-1.85に取りました。これをExcelのChart(グラフ)にします。  0≦rについては、グラフが十分滑らかになるようにサンプル点をとって、0≦r≦1の範囲で、単にChart(グラフ)を作ります。 (4) グラフを調べる  最初のグラフから、-2≦r≦-1.5に解があるのが、一目でわかります。2つ目のグラフを、横軸範囲0~0.017,縦軸範囲0~0.35程度に調整して拡大すると、少なくとも0.15付近に解が一個あるのが見えます。これ以外の解がない事は、f(r)とg(r)の単調性と、f(r)が上に凸な関数である事から判断できます。 (5) 数値計算を行う  まずExcelの数値は余り信じないで下さい。^24などという高いベキに対して、Excel WorkSheetの数式の有効数字は精度不足です。  プログラム(マクロでもOK)を使用するとして、ニュートン法を用いるにしても、二分法を用いるにしても、解が一個になり、しかも関数が単調になる探索範囲で行う事が重要です。そうでない場合、結果は保証できません(収束しない場合がある)。  解の探索は、(1)~(4)の結果より、-2≦r≦-1.5 と 0≦r≦0.017 の二つに分けて行います。私は二分法をお奨めします。ニュートン法より解精度のコントロールが安定していて、手順が簡単だからです。結果はきっと、#2さんとニアニアになると思います。

  • F_P_E
  • ベストアンサー率43% (26/60)
回答No.3

はじめまして。 解きたい方程式をf(r)=0とします.つまり f(r) = 1-(1/1+r)^24 - 20r. 適当なr0を選んで, r_{n+1} = r_n - f(r_n)/f'(r_n) を数値的に繰り返していけば,方程式を満たす解のいずれかに収束していくでしょう. これがNewton法(1次元Version)です. がんばってくださいね^^

  • inara
  • ベストアンサー率72% (293/404)
回答No.2

ご質問の式「1-(1/1+r)^24=20r」は、1 - 1/(1+r)^24 = 20*r という意味でしょうか。 【Yes】 数式処理ソフト(Maple)を使って、1 - 1/(1+r)^24 - 20*r を因数分解すれば、 -r*( -4 + 204*r + 3496*r^2 + 29854*r^3 + 170016*r^4 + 715484*r^5 + 2345816*r^6 + 6186609*r^7 +1 3401916*r^8 + 24188824*r^9 + 36728976*r^10 + 47218724*r^11 + 51586976*r^12 +47961624*r^13 + 37917616*r^14 + 25414609*r^15 + 14363316*r^16 + 6787484*r^17 + 2649416*r^18 + 839454*r^19 + 210496*r^20 + 40204*r^21 + + 5496*r^22 + 20*r^24+479*r^23 )/{(1+r)^24} となります。r が実数ならば、この解(=0)を50桁で計算すると r1= 0 r2= -1.8591883594531273892477092731888072270701429289670 r3= 0.0130843902310018558190902537157495541109321991828 の3つがあります。 【No】 1-(1/1+r)^24 = 1-(1+r)^24 = 20*r = 0 の実数解を、数式処理ソフト(Maple)を使って50桁で求めれば r = -2.1712542445808160947657818919534860535553785460796 となります。

noname#101087
noname#101087
回答No.1

>1-(1/1+r)^24=20rをどのように計算すればよいのでしょうか? 利率計算ですか? 解の一つは r=0 ですね。これは論外なのでしょう。  {1/(1+r)}^24=1-20r  1=(1-20r)*(1+r)^24 でOKでしょうか? OKなら、  f(r)={(1-20r)*(1+r)^24}-1 の零点をNewtonwで逐次近似します。 まず微係数の式から。  f'(r)=-20*(1+r)^24 + 24*(1-20r)*(1+r)^23   =(4-500r)*(1+r)^23 あとは、お任せします。 EXCEL で試行してみたら、すごい速さで収束しました。

関連するQ&A

専門家に質問してみよう