用牛顿迭代法求方程。

用牛顿迭代法求方程:2*pow(x,3)-4*pow(x,2)+3*x-6=0在1.5附近的根。
假定初值为x[0], 则迭代公式为:x[n+1]=x[n]-f(x[n])/df(x[n])
结束迭代过程的条件为:
|f(x[n+1])|<1.e-9 与 |x[n+1]-x[n]|<1.e-9 同时成立。

程序运行结果如下:
2

注意: df(x[n])表示f(x)取导数后在x[n]处的值。

分析:根据公式……然后翻译就好了,我习惯把函数都写成子程序,比较方便调用

double f(double x){
    double res;
    res=2*x*x*x-4*x*x+3*x-6;
    return res; 
}
double f1(double x){
    double res;
    res=6*x*x-8*x+3;
    return res;
}
订好x,y的初值,按照题目的描述,然后按照递推公式进行递推,选择终止条件就OK了(注意正向用while的逻辑关系)
double x,y,t=1e-8;
    x=1.5;y=1.5;
    while ((fabs(f(y))>=t)|(fabs(y-x)>=t)){
        x=y;
        y=x-f(x)/f1(x);
    }

猜你喜欢

转载自blog.csdn.net/qq_41928880/article/details/80023335