1_2.c

来自「数值分析的一些常用计算」· C语言 代码 · 共 47 行

C
47
字号

  #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]=log(x+sin(x));
   y[1]=(1+cos(x))/(x+sin(x));
   return;     
        }
  int main()
  {
   int js,k;
   double x,eps;
   void newtf(double,double[]);
   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");
   getch();       
   }

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?