精華區beta NAOE-87 關於我們 聯絡資訊
假位法其實就是第一次要判f0*f2是否小於零 若小於零再用插值法(secant method)逼近 牛頓法: #include<stdio.h> #include<math.h> #include<process.h> #include<conio.h> double f(double x); double f_1(double x); int main(void) { clrscr(); double x0,x1,f0,f1,m,k; int i,loop=10; x0=1; for (i=1; i<=loop; i++) { printf("#%d\n",i); k=f0=f(x0); m=f_1(x0); if ( m == 0 ) { printf("m is zero!\n"); exit(1); } x1=x0-(k/m); f1=f(x1); printf("Xn = %f\n",x0); printf("Fn = %f\n",f0); printf("F'n= %f\n",m); printf("X(n+1) = %f\n",x1); printf("F(n+1) = %f\n\n",f1); if ( f1 == 0 || fabs(f1) < 1.0e-5 ) break; x0=x1; f0=f(x0); } printf("The true value is %f\n",x1); return 0; } double f_1(double x) { return ( 3+cos(x)-exp(x) ); } double f(double x) { return ( 3*x+sin(x)-exp(x) ); } -- ※ 發信站: 批踢踢實業坊(ptt.twbbs.org) ◆ From: cs-dial-port19-tpe.biglobe.net.뼊