C言語で方程式f(X)=aX^3+bX^2+cX+dの近似解を求める手順を教えてください。

補足

もしよければプログラムもお願いします!

C言語関連1,446閲覧xmlns="http://www.w3.org/2000/svg">500

ベストアンサー

0

ThanksImg質問者からのお礼コメント

ありがとうございました。参考にさせていただきます。

お礼日時:2008/11/27 21:12

その他の回答(1件)

0

/* f(X)=aX^3+bX^2+cX+dの根を求める。 係数と近似区間を指定する。区間が不適な時は再入力 を求める。近似方法は二分法による。 */ #include_<stdio.h> #include_<math.h> static_double_a; static_double_b; static_double_c; static_double_d; double__f(double_x)_{ __return_d+x*(c+x*(b+x*a)); } int_main(){ __double__xa,xb,xc; __double__fa,fb,fc; __double__eps=1.e-8; __int_____n=0; START: __printf("a,b,c,d_?_");_scanf("%lf%lf%lf%lf",&a,&b,&c,&d); __printf("xa,xb_?_");_scanf("%lf%lf",&xa,&xb); __fa_=_f(xa);_fb=f(xb); __if(fa*fb_>_0)_{ ____printf("fa*fb=%f>0:_区間は不適当です\n",fa*fb); ____goto_START; __} __while(++n<1000)_{ ____xc_=_(xa+xb)/2; ____fc_=_f(xc); ____if(fabs(xa-xb)<eps)_break; ____if(fc*fa_>_0_)_{ ______xa_=_xc; ____}_else_{ ______xb_=_xc; ____} __}_printf("root_=_%f\n",xc); __return_0; } /*_出力: a,b,c,d_?_1_1_1_1 xa,xb_?_-2_0 root_=_-1.000000 */