6-牛顿切线法

作者在 2008-05-10 21:12:26 发布以下内容

#include "stdio.h"
#include "math.h"
#define MaxK 1000
#define EPS 0.5e-3
double f( double x ){ return x*x*x - x - 1;}
double f1( double x ) { return 3*x*x - 1;}
void main()
{
    double x = 1.5;
    int newton( double(*)(double), double(*)(double), double &x0 ,double);
    if( newton(f,f1,x,EPS) == 1 )
      printf("\nthe root is x=%f\n\n",x);
    else printf("the method is fail!");
}

int newton( double(*)(double), double(*)(double), double &x0 ,double eps)
{
    double xk;
    int k=0;
    printf("k\t  xk\n");
 printf("------------------\n");
    printf("%d\t%f\n",k,x0);

 xk = x0 - (f(x0)/f1(x0));
    printf("%d\t%f\n",k+1,xk);

    do
    {
       x0 = xk ;
   
       xk = x0 - (f(x0)/f1(x0));

       k++;
    printf("%d\t%f\n",k+1,xk);

    }while( fabs(xk - x0) > eps );
    printf("------------------");
 x0 = xk;

 return 1;
 
}

大小: 892 B
版本: V1.0
出品: 本站原创
来源: 本地
语言: 简体中文
授权: 免费
默认分类 | 阅读 1007 次
文章评论,共1条
skyman678
2008-05-11 20:51
1
double(*)(double), 这个是什么意思呢 ?
游客请输入验证码
文章分类
文章归档