newt.c
来自「数值分析算法描述与习题解答」· C语言 代码 · 共 43 行
C
43 行
#include "stdio.h"
#include "math.h"
int newt(x,eps,js,f)
int js;
double *x,eps;
void (*f)();
{ int k,l;
double y[2],d,p,x0,x1;
l=js; k=1; x0=*x;
(*f)(x0,y);
d=eps+1.0;
while ((d>=eps)&&(l!=0))
{ if (fabs(y[1])+1.0==1.0)
{ printf("err\n"); return(-1);}
x1=x0-y[0]/y[1];
(*f)(x1,y);
d=fabs(x1-x0); p=fabs(y[0]);
if (p>d) d=p;
x0=x1; l=l-1;
}
*x=x1;
k=js-l;
return(k);
}
void newtf(x,y)
double x,y[2];
{ y[0]=x*x*(x-1.0)-1.0;
y[1]=3.0*x*x-2.0*x;
return;
}
main()
{ int js,k;
double x,eps;
eps=0.000001; js=60; x=1.5;
k=newt(&x,eps,js,newtf);
if (k>=0)
printf("k=%d x=%13.7e\n",k,x);
printf("\n");
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?