牛顿迭代法 c语言实现

原创 2016年08月30日 11:28:47
#include <stdio.h>
#include <stdlib.h>


double func(double x) //函数
{
    return x*x*x*x-3*x*x*x+1.5*x*x-4.0;
}
double func1(double x) //导函数
{
    return 4*x*x*x-9*x*x+3*x;
}
int Newton(double *x,double precision,int maxcyc) //迭代次数
{
    double x1,x0;
    int k;
    x0=*x;
    for(k=0;k<maxcyc;k++)
    {
        if(func1(x0)==0.0)//若通过初值,函数返回值为0
        {
            printf("迭代过程中导数为0!\n");
            return 0;
        }
        x1=x0-func(x0)/func1(x0);//进行牛顿迭代计算
        if(fabs(x1-x0)<precision || fabs(func(x1))<precision) //达到结束条件
        {
            *x=x1; //返回结果
            return 1;
        }
        else //未达到结束条件
        {
            x0=x1; //准备下一次迭代
        }
    }
    printf("迭代次数超过预期!\n"); //迭代次数达到,仍没有达到精度
    return 0;
}

int main()
{
    double x,precision;
    int maxcyc;
    printf("输入初始迭代值x0:");
    scanf("%lf",&x);
    printf("输入最大迭代次数:");
    scanf("%d",&maxcyc);
    printf("迭代要求的精度:");
    scanf("%lf",&precision);
    if(Newton(&x,precision,maxcyc)==1) //若函数返回值为1
    {
        printf("该值附近的根为:%lf\n",x);
    }
    else //若函数返回值为0
    {
        printf("迭代失败!\n");
    }
    getch();
    return 0;
}
牛顿迭代法




                

C语言实现牛顿迭代法解方程

利用迭代算法解决问题,需要做好以下三个方面的工作: 一、确定迭代变量 在可以用迭代算法解决的问题中,我们可以确定至少存在一个可直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量。...
  • morixinguan
  • morixinguan
  • 2016年02月09日 23:28
  • 10442

牛顿迭代法求根——C语言

牛顿迭代法求根的原理: 设r是 的根,选取 作为r的初始近似值,过点 做曲线 的切线L,L的方程为 ,求出L与x轴交点的横坐标 ,称x...
  • cx1363525141
  • cx1363525141
  • 2016年11月12日 09:38
  • 5273

c语言牛顿迭代法的问题

x1 为1 迭代公式: Xn+1=Xn-f(Xn)/f'(Xn) 当|Xn+1-Xn| 函数方程为:ax^3+bx^2+c^x+d=0 输入1 3 5 2 的正确结果: -0.546602 #in...
  • qq_27183003
  • qq_27183003
  • 2015年11月13日 00:20
  • 2121

c语言二分法切割法牛顿法求根算法

c语言实现的二分法,切割法,牛顿法求根算法//二分法 double fun(double m,double n) { double r;int i=0; if (quest(m)*q...
  • qq_24082497
  • qq_24082497
  • 2016年03月26日 17:43
  • 1594

【C语言】递归和迭代的区别

递归的基本概念:程序调用自身的编程技巧称为递归,是函数自己调用自己. 一个函数在其定义中直接或间接调用自身的一种方法,它通常把一个大型的复杂的问题转化为一个与原问题相似的规模较小的问题来解决,可以极...
  • zhangchaoq
  • zhangchaoq
  • 2015年05月10日 15:44
  • 3430

C语言第十二篇:迭代

迭代法解决实际问题,关键在于——在前一项的基础上得到后一项
  • qq_30866297
  • qq_30866297
  • 2016年04月05日 10:55
  • 1557

Jacobi迭代法解线性方程组(C语言)

/*-------------Jacobi迭代法解线性方程组--------- 参考教材:《数值分析》李乃成,梅立泉,科学出版社     《计算方法教程》第二版 凌永祥,陈明逵*/ #inclu...
  • zhangchao3322218
  • zhangchao3322218
  • 2012年03月30日 18:44
  • 6869

实验二:Newton牛顿插值法之C语言代码

牛顿插值法与拉格朗日插值法类似,只不过是同一个插值多项式的不同表达形式,所以它们误差也是相等的.题目: x | 0.56160 | 0.56280 | 0.56401 | 0.56521 | y...
  • Chen_dSir
  • Chen_dSir
  • 2017年04月19日 11:22
  • 2979

牛顿迭代法的C语言实现

  • 2008年12月23日 12:34
  • 927B
  • 下载

newton插值法c++版

 如果是拉格朗日插值法的话把注释的朗格朗日函数去掉注释就可以了 //stdafx.h #include #include #include #include ty...
  • cherish_CX
  • cherish_CX
  • 2016年11月09日 19:39
  • 1297
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:牛顿迭代法 c语言实现
举报原因:
原因补充:

(最多只允许输入30个字)