ニュートン法

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ぎょせん

ニュートン法

#1

投稿記事 by ぎょせん » 9年前

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);
}

box
記事: 1746
登録日時: 9年前

Re: ニュートン法

#2

投稿記事 by box » 9年前

「どんな風に」うまくいかないかを具体的に書いてください。
例えば、コンパイル時にエラーメッセージが出るのか、実行時にエラーメッセージが出るのか、等々によって
的確な回答は異なる、ということはわかりますよね?

まあ、xの初期値がゼロであるっていうのがきっとまずいんでしょう。
log(0)は求められませんからね。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

アバター
みけCAT
記事: 6247
登録日時: 9年前
住所: 千葉県
連絡を取る:

Re: ニュートン法

#3

投稿記事 by みけCAT » 9年前

関係ないのですが、ソースを貼りつけるときは

コード:

タグを使っていただければありがたいです。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

閉鎖

“C言語何でも質問掲示板” へ戻る