• ベストアンサー

ニュートン法

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)を求めるといったことが、あるサイトに書かれてあったのですが、なぜそうなるのか理解できません・・・

  • dwbh
  • お礼率25% (1/4)

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

  • ベストアンサー
回答No.1

>あるサイトに書かれてあった そのサイトがどこなのか、一応リンクを貼った方がいいと思います。 >f(x)=(x-x1)g(x)なるg(x)を求めるといったことが、あるサイトに書かれてあったのですが、なぜそうなるのか理解できません・・・ 実際はあんまりやらない(効率が悪い)そうなんですが、これは数学的には、例えば f(x)=x^3-6x^2+11x-6=0 の一つの解 x1=1 が求まれば、前出の式f(x)は f(x)=(x-1)(x^2-5x+6) と書き換えれます。この x^2-5x+6 がg(x)ですね。 一般に、一つの解が見つかれば g(x)=f(x)/(x-x1) と次数を下げた方程式を得て、「また新しく」ニュートン法でg(x)を解けば良い、と言う事ならしいのですが、計算効率が悪く、この方法はあまり用いられていないそうです。

参考URL:
http://na-inet.jp/nasoft/chap13.pdf

関連するQ&A

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

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

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

    こんにちは。 差分式で表した非線形方程式をニュートン法で解いています。が収束しな解あります。ニュートン法は初期値に依存しているため、初期値を可変的にしてみましたがダメでした。何かいい方法はないでしょうか? 参考になるか分かりませんが、使っているプログラムのニュートン法の計算の一部は以下のようです。 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|はどの程度になると推定されるのでしょうか?

  • ニュートン法をC言語でプログラム

    方程式 cos^2x-0.5=0 (0<x<π) の解をニュートン法で求める という問題をC言語のプログラムを作り計算したいのですが分かりません。 自分で考えてみたプログラムは以下の通りです。 #include <stdio.h> #include <math.h> #define f1(x) cos(x)*cos(x)-0.5 #define f2(x) sin(2*x) /* ニュートン法による方程式の解 */ main() { double x0,x1,a,b,c,d,g,n; a=1; x0=0.7; n=0; while(a>0.0001){ b=x0; d=f1(b); g=f2(b); x1=x0-d/g; c=x1; a=f1(c); n=n+1; printf(" n= %f x1=%f x0=%f\n",n,x1,x0); printf(" a= %f → 解 x= %f \n", a,x1); x0=x1; } } 自分としてはこれが精一杯で、何故間違ってるのか、何をどうすればいいのか、さっぱり分かりません。どういったところが間違ってるのか可能性だけでも示して頂ければ幸いです。 参考として、ニュートン法によるプログラム例として書かれていたものを上げさせて頂きます。 例: e^x-3=0 の解をニュートン法により計算する。 #include <stdio.h> #include <math.h> #define f1(x) exp(x)-3 #define f2(x) exp(x) /* ニュートン法による方程式の解 */ main() { double x0,x1,e,a,b,c,d,g,n; a=1; x0=3; n=0; while(a>0.0001){ b=x0; d=f1(b); g=f2(b); x1=x0-d/g; c=x1; a=f1(c); n=n+1; printf(" n= %f x1=%f x0=%f\n",n,x1,x0); printf(" a= %f → 解  x= %f \n", a,x1); x0=x1; } }

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

    ニュートン法で初期値: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の値を入れただけなのですが何度計算してもうまくいきません。 どこか方法が間違っていたら指摘お願いします。

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

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

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

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

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

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

  • ニュートン法について

    一番目:X0がIの元で。I=[a,b] X1=g(X0),X2=g(X1)とおくとき、 X0^(1)=X0-(X1-X0)^2/X2-2*X1-X0とすると X1^(1)=g(X0^(1)), X2^(2)=g(X1^(1)), X0^(2)=X0^(1)-(X1^(1)-X0^(1))^2/X2^(1)-2X1^(1)-X0^(1) このとき、 X0,X1,X2それぞれを求める解放がわかりません>< 二番目:F(x)=x-e^(-x)とおいてニュートン法で求めなさい。。とゆうのもよくわかりません>< 図書館で調べたりしたのですが。。意味がよくわかんなくて。。お願いします!

  • 多次元のニュートン・ラフソン法について

    質問させてもらいます。 二次元のニュートン・ラフソン法は理解したつもりなのですが。 f(x,y,z)=2x^2+y^2+z^2 の式が与えられた時、 この場合ニュートンラフソン法はどのように式として示し、証明にいたればいいのでしょうか? ニュートンラフソン法の考え方を踏襲するのであれば、 x成分、y成分、z成分の各成分について考えればいいのでしょうか? 多くの例題では二変数の連立方程式で…… とかかれてますが、 適用できない気がするのですが……?

専門家に質問してみよう