f(x)=xlnx-1=0の根をnewton法で用いて求めたいですけど
自分で考えたんですが下のプログラムではうまくいきません。
もしよろしければ教えていただけませんか?
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define EPS 1.0E-9 //収束条件
#define F(x) x*log(x)-1
#define FD(x) log(x)+1
void main(void)
{
double x=0.0,fx,fdx,dx;
int n=0;
do{
fx=F(x);
fdx=FD(x);
dx=-fx/fdx;
printf("%3d%8.3f%8.3f%8.3f%8.3f%\n",n,x,fx,fdx,dx);
n++;
x+=dx;
}while(fabs(dx/x)>EPS);
printf("\n x=%7.3f\n",x);
}
ニュートン法
Re: ニュートン法
「どんな風に」うまくいかないかを具体的に書いてください。
例えば、コンパイル時にエラーメッセージが出るのか、実行時にエラーメッセージが出るのか、等々によって
的確な回答は異なる、ということはわかりますよね?
まあ、xの初期値がゼロであるっていうのがきっとまずいんでしょう。
log(0)は求められませんからね。
例えば、コンパイル時にエラーメッセージが出るのか、実行時にエラーメッセージが出るのか、等々によって
的確な回答は異なる、ということはわかりますよね?
まあ、xの初期値がゼロであるっていうのがきっとまずいんでしょう。
log(0)は求められませんからね。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。