• ベストアンサー

ニュートン法で問題が途中までしか解けません

ニュートン法で初期値:x1=π として0=sinx-x/2の解を求めます。 |x(i+1)-xi|=10^-3 のときに収束したとしてx(i+1)を解とするのですが まず f(xi)=sinxi-xi/2 f'(x)=cosxi-1/2 として x(i+1)=xi-f(xi)/f'(xi)として解いていったのですが x1=π x2=2.094395102 x3=1.913222955 ここまでは順調だったのですがx4で値が急に4を超えてしまってわからなくなってしまいました。x4はx(i+1)=xi-f(xi)/f'(xi)のxiにx3の値を入れただけなのですが何度計算してもうまくいきません。 どこか方法が間違っていたら指摘お願いします。

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

  • ベストアンサー
  • guzuryu
  • ベストアンサー率58% (7/12)
回答No.6

#1,#4です。 三角関数は何を使って計算していますか? 勝手に予想させていただくと、関数電卓を使用していませんか? x3まではラジアンで計算していたのにx4で度になったのは、関数電卓のモードがラジアン(Rad)から度(Deg)にかわったからと予想します。 この場合はラジアンモードにするのを推奨します。 別の方法で計算している場合などで、どうしても度でしか三角関数を計算できない場合はラジアン→度に変換してから計算してください。 f(x3)=SIN(1.913222955×180/π)-1.913222955/2 #4の補足に書かれた式と180とπが逆になります。 ここで気がついたのですが#1で私が書いた数値が間違えていました。x3なのにx4の数値を書いてしまいました。 正しくは f(x3)=-0.014668836 f’(x3)=-0.835773823 でした。 たいへん重要なところを間違えていました。申し訳ありませんでした。

bump0408
質問者

お礼

関数電卓を使用しています。 できない理由がやっとわかりました。 関数電卓はあまり使用しないのでそのモードをあることを知りませんでした。 何度も質問に応えていただき本当にありがとうございました。

その他の回答 (5)

  • banakona
  • ベストアンサー率45% (222/489)
回答No.5

#4さんに一票。#1さんへの補足にほぼ一致することを確認しました。 x4だけradではなく度になった理由は謎ですが。

  • guzuryu
  • ベストアンサー率58% (7/12)
回答No.4

#1です。 三角関数の計算を度で計算しているようなきがします。 fとf' の関係からラジアン単位のはずなので、ラジアン単位で計算しているか確認してください。

bump0408
質問者

補足

ラジアンに戻していませんせした。 ラジアンに戻して計算するということは f(x3)=sin(1.913222955×(π/180))-1.913222955/2 ということでいいのでしょうか? 質問が多くて申し訳ありません。

  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.3

もしかして、 x4=x3-f(x3)/f'(x3) とすべきところを、 x4=x3-x3/f'(x3) としていない?

  • banakona
  • ベストアンサー率45% (222/489)
回答No.2

#1さんと同様、ちゃんと求まりました。 f(xi)とf’(xi)が逆になっていませんか? x4だけ逆と言うのも変ですが。

  • guzuryu
  • ベストアンサー率58% (7/12)
回答No.1

同じ計算をMicrosoft Excelで計算してみたのですが、x3までは同じで、 x4=1.895671752 になりました。 ちなみに、 f(x3)=-0.000145379 f’(x3)=-0.81919073 でした。この数値は同じでしょうか?

bump0408
質問者

補足

みなさん回答ありがとうございます。 式は x4=x3-(sinx3-x3/2)/(cosx3-1/2) でx3に1.913222955の値を入れたのですが x4=1.913222955-(-0.9232256428)/(0.4994425376) =3.761798713となってしまいました。

関連するQ&A

  • ニュートン法

    excelVBAを使っています。 ニュートン法を使って3次方程式を解こうとしています。 例題)x^3-6x^2+11x-6=0    x=1,2,3 初期値x0によって、解がx=1,2,3のどれかに収束します。 ここで、全ての実数解を求める考え方をご教授下さい。 f(x)=x^3-6x^2+11x-6=0の解x1が求まった後、 f(x)=(x-x1)g(x)なるg(x)を求めるといったことが、あるサイトに書かれてあったのですが、なぜそうなるのか理解できません・・・

  • ニュートン法の問題です!

    ニュートン法の問題です! わかる方がいたらおしえてくださいこまってます! f(x)=-1+x+x2とおいて、newton法を用いてf(x)=0の解を求めよ。newton法で使用する漸化式と初期値x0=1としたときの計算過程と結果を示しなさい。 とけるかたがいたら本当におねがいしますたすけてください

  • ニュートン法で解が収束しない

    こんにちは。 差分式で表した非線形方程式をニュートン法で解いています。が収束しな解あります。ニュートン法は初期値に依存しているため、初期値を可変的にしてみましたがダメでした。何かいい方法はないでしょうか? 参考になるか分かりませんが、使っているプログラムのニュートン法の計算の一部は以下のようです。 call g(x,f,df) h=f/df x=x-h if(dabs(h/x)<1.d-14) then  return endif

  • ニュートン法

    こんにちは。 aを解とするある非線形方程式に,aの近傍の値x0を初期値としてニュートン法を一反復だけ適用したところ、誤差は |x0-a|=10^-4から|x1-a|=10^-7に減少した。このとき、ニュートン法をもう一反復適用したら誤差|x2-a|はどの程度になると推定されるのでしょうか?

  • ニュートン法で、f(x)=2sin(x)-0.5x+1=0の解を求める

    ニュートン法で、f(x)=2sin(x)-0.5x+1=0の解を求めるとき、x1=0を初期値として計算すると、x3はいくらになりますか?

  • ニュートン法の問題がどうしてもわからないので教えてください。

    非線形方程式の解を求めるアルゴリズムのひとつに、ニュートン法と呼ばれる方式がある。この方法ではf(x)=0の解の近似値を次の漸化式から求める。 x_(i+1) =x_i - f(x_i)/f'(x_i) なぜこのアルゴリズムで解を得られるのかをf(x)=x^2 - e^x -2 =0 を例に説明せよ。 という問題です。 どなたかわかる方がいたらお願いします。

  • ニュートン法

    ケプラー方程式x-e*sin(x)-c=0の解をステップ数とともに出力するプログラムで、e,cはそれぞれ0.5と1です。 xに値を入力して計算させるのですが、どうしてもできません。 下のプログラムリストでおかしいところはどこでしょうか? // ニュートン法 x-e*sin(x)-c=0 #include <stdio.h> #include <math.h> #define e 0.5 #define c 1.0 #define K 10000 double fun(double x); double bibun(int i,double x); float m=1.0,n=1.0; int i=1; main(){ float x1,x2; float z; printf("初期値x0を入力して下さい\n"); scanf("%f",&x1); for(i=0;i<=K;i++){ x2 = x1 - fun(x1)/bibun(i,x1); x1 = x2; z = fun(x1); z = fabs(z); if(fabs(z)<=0.00001){ break; } if(i==K){ printf("収束しません\n"); exit(0); }    } printf("解 = %f\n",x1); printf("ステップ数 = %d",i); return 0; } // 関数f(x) double fun(double x1){ double r; r = x1 - e * sin(x1) - c; return r; } // 微分 double bibun(int i,double x1){ float p; if(i%2==1){ p = pow((-1.0),m)*e*sin(x1); m++; } else { p = pow((-1.0),n)*e*cos(x1); n++; } return p; }

  • ニュートン法の計算について

    3次方程式 X^3+3X^2-3X-4=0 は区間(-4,-3),(-1,0),(1,2)にそれぞれ1つの実数解をもつ。ニュートン法により、3つの実数解を小数点以下8桁まで正確に求めよ。 上の問題をニュートン法で解きたいのですが、初期値はどうすればいいのでしょうか? -4、-1、1 でいいのでしょうか? 初期値を決めれば、あとは3つの初期値を使って普通にニュートン法で計算すれば解けますよね?? 数学が苦手で困っています。 回答お願いします。

  • ニュートン法でのプログラミング

    ニュートン法を用いてf(x)=X^2-2の正の解を求めなさい。 また、反復回数が増えるにしたがって解が収束していく様子を表示しなさい。 という問題なのですが、いくら反復回数を増やしても誤差がでてしまい、うまくいきません。このプログラミング解いていただきたいです。よろしくお願いします。

  • ニュートン法、2分法について

    ニュートン法、2分法について質問があります。 この二つの長所と短所はなんですか? ニュートン法はf'が0のとき解に収束しないのがわかりましたがほかにもありますか こういう場合はこっちのほうがすぐれているなどがありましたらお願いします。