• ベストアンサー

ニュートン法を用いたプログラミング

プログラミングの質問です。ニュートン法でf=tx^2+3/2x^4を最小にするx(>=0)をtの関数として求めるプログラムを作成せよ。また実行結果をt vs xグラフに表せ、とういう問題なのですが、式に文字Xのみが出てくる方程式ならできるのですが、tが入ってきたのでわからなくなってしまいました。どなたか教えていただけないでしょうか。よろしくお願いします。

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

  • ベストアンサー
  • spring135
  • ベストアンサー率44% (1487/3332)
回答No.1

ニュートン法というのは方程式の数値解を求める方法のひとつで   x(i+1)=x(i)-F(xi)/F'(xi) (1) という繰り返し演算によって、近似解を求めるものと記憶しています。 まず解を求めるべき方程式ですが f=tx^2+3/2x^4 をxで微分して0とおいて得られる f'=2tx-6x^(-5)=0 です。 整理して F(x)=tx^6-3 の解を求めればよい。 (1)のFがこのF(x)です。 F'(x)=6tx^5 よって(1)は x(i+1)=x(i)-(tx(i)^6-3)/(6tx(i)^5)        (2) ある初期値x(0)を適当に定めて(2)の右辺に代入して左辺としてx(1)を求め これを再び(2)の右辺に代入して左辺としてx(2)を求め......という作業を繰り返して、x(i+1)とx(i)の差が十分小さくなったとき、収束したとして解xとします。 tの処理ですがパラメータとして適当な値を設定して、これに対して上記の収束計算をして解xを求めます。次に別の値をtに与えて同様の計算をすればよい。実際にはt=0.1,0.2,0.3,,,,,,,10位までやってみればよいでしょう。 実はこの問題は解析解があります。 x=(3/t)^(1/6)           (3) 先ほど実際にプログラムを組んでやってみたら ニュートン法による収束解のプロットと(3)は完全に一致しました。 楽しい問題です。ぜひやってみてください。

関連するQ&A