質問: f(x)=xInx-1=0の解をNewton法で求める問題です。 Gnome端末でコンパイルしています。下記のようにプログラミングした所、 x= nanと出てしまいました。正解は1.76です。間違いを指摘していただければありがたいです。 #include #include #define F(x) (x*log(x)-1.) #define FD(x) (log(x)+1.) #define EPS (1.E-5) int main(void) { double x=0.0,fx,fdx,dx; int n=0; do{ fx=F(x); fdx=FD(x); dx=-fx/fdx; n++; x+=dx; } while(fabs(dx/x)>EPS); printf("x=%4.2f\n",x); }
回答: ニュートン法ってよく分からないけど、xの初期値が0なのが問題では? log(0)って有限の値じゃないですよね?