Stenffensen加速迭代法

来源:互联网 发布:linux 查看数据包 编辑:程序博客网 时间:2024/06/16 16:03

f(x)=x*x*x-3*x-1

迭代公式:x=(3*x+1)/(x*x)

#include <stdio.h>#include <math.h>#define maxrept 1000double f1(double x){    return (3*x+1)/(x*x);}double f(double t){    double y,z;    y=f1(t);    z=f1(y);    return t-(((y-t)*(y-t))/(z-2*y+t));}void main(){    int k=0;    double d;    double eps=0.00001;    double x1=1.5,x2,y,z;    do    {        x2=f(x1);        d=fabs(x2-x1);        x1=x2;        k++;        printf("x=%.5lf\n",x2);        printf("k=%d\n",k);    }while((d>=eps)&(k<maxrept));    if(k<maxrept)        printf("此迭代公式收敛!\n");    else        printf("此迭代公式发散,迭代失败!\n");}

原创粉丝点击