- ベストアンサー
Newton法について
数値計算の問題でわからないのがあるので教えてください。 a,bを実数とするとき、以下の連立方程式を多変数Newton法で解くための漸化式を書き記せ。 x^2-y^2-a=0 2*x*y-b=0 なんですが、Newton法の公式をどのように当てはめるのかわかりません。誰か教えてください、お願いしますm(__)m
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
stomachmanさんの#1の回答について、ささやかな疑問です。。。 > ((∂f/∂x)(x[n],y[n]))(x-x[n])+((∂f/∂y)(x[n], y[n]))(y-y[n])=f(x[n],y[n]) > ((∂g/∂x)(x[n],y[n]))(x-x[n])+((∂g/∂y)(x[n], y[n]))(y-y[n])=g(x[n],y[n]) これって、右辺にマイナスいりませんっけ? 私の感覚では、1次元の方程式f(x)=0を解くNewton法は、 点(x[n],f(x[n])におけるy=f(x)の接線を引き、それとx軸の交点を(x[n+1],0)とする方法であり、 f'(x[n])(x[n+1]-x[n])+f(x[n])=0 というものです。 同じように、f:R^n→R^n, x∈R^nに対しても、f(x)=0を解くNewton法は ∇f(x[n])(x[n+1]-x[n])+f(x[n])=0(←零ベクトル) でいけると思っているのですが。。。 ここで、∇f(x)はn次正方行列であり、そのi行j列成分は(∂f_i/∂x_j)としています。 ちなみに、stomachmanさんの表記と私の表記のあいだには、 f→f_1, g→f_2, x→x_1, y→x_2 の関係があります。
その他の回答 (3)
- kei_
- ベストアンサー率29% (5/17)
#2 さんの言うとおりマイナスがいりますね。 一般的にはニュートン法は、非線形連立方程式: f_i(x) = 0 for i = 1, 2, ..., N(ただし x は N 次のベクトル) を満たすような x の値を近似的に出す方法です。 任意の x をとったとき(ただしなるべく解の近傍の値)、 その点から δx (これもベクトル)移動した点での f の値は、 f_i(x+δx) = f_i(x) + (∇f_i)*(δx) + O(δx^2) となります。ここで∇は #2 さんと同じく微分を表しています。 また、* はベクトルの内積、O は誤差を表しています。 このとき、f_i(x+δx) をなるべく 0 に近づけたいわけですから、 f_i(x+δx) = 0 つまり f_i(x) + (∇f_i)*(δx) = 0 を満たすように、δx を求めればいいのです。 #1 さんの式にでいうと右辺の f や g が第一式の f_i(x) にあたり、 左辺の微分の項が、(∇f_i)*(δx) にあたります。 よって、#2 さんの指摘のとおり、#1 さんの式の右辺にはマイナスがつきます。
- kony0
- ベストアンサー率36% (175/474)
ということで、 縦ベクトルを[x,y]、正方行列を[(a,b),(c,d)]のように表記します。 (転置記号とか、面倒なのでつけません。行列は、1行目(a,b)、2行目(c,d)と読んでください) 今の点を[x,y]、反復の次の点を[x',y']とすると、 [(2x,-2y),(2y,2x)]{[x',y']-[x,y]}+[x^2-y^2-a,2xy-b]=0 より [x',y']=[(2x,-2y),(2y,2x)]^(-1)・[x^2-y^2+a,2xy+b] =(1/4(x^2+y^2))[(2x,2y),(-2y,2x)]・[x^2-y^2+a,2xy+b] となります。 とりあえず、[x,y]≠[0,0]と初期値を取れば、きっとどちらかの点に収束してくれるはずです。(一応Excelで確認したつもり・・・)
- stomachman
- ベストアンサー率57% (1014/1775)
f(x,y)=0 g(x,y)=0 という連立方程式を解くのにNewton法を使う。 Newton法ってのは、解の近似値 (x[n],y[n])が与えられたときに、その点(x[n],y[n])における接平面で関数f,gをそれぞれ近似するんでした。だから ((∂f/∂x)(x[n],y[n]))(x-x[n])+((∂f/∂y)(x[n], y[n]))(y-y[n])=f(x[n],y[n]) ((∂g/∂x)(x[n],y[n]))(x-x[n])+((∂g/∂y)(x[n], y[n]))(y-y[n])=g(x[n],y[n]) という連立一次方程式が得られます。ここに ((∂f/∂x)(x[n],y[n])) てのはfをxで偏微分した導関数にx=x[n], y=y[n]を代入したものです。他も同様。 これをx,yについて解いた解を新しい近似値(x[n+1],y[n+1])とし、また繰り返す。ですから ((∂f/∂x)(x[n],y[n]))(x[n+1]-x[n])+((∂f/∂y)(x[n], y[n]))(y[n+1]-y[n])=f(x[n],y[n]) ((∂g/∂x)(x[n],y[n]))(x[n+1]-x[n])+((∂g/∂y)(x[n], y[n]))(y[n+1]-y[n])=g(x[n],y[n]) ということになっている。あとは x[n+1]=… y[n+1]=… という形に整理すれば出来上がりです。
お礼
どうもご丁寧にありがとうございましたm(__)mおかげで参考になりました。