牛顿迭代法 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语言实现牛顿迭代法解方程

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

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...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

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

牛顿迭代法求根的原理: 设r是 的根,选取 作为r的初始近似值,过点 做曲线 的切线L,L的方程为 ,求出L与x轴交点的横坐标 ,称x...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

牛顿迭代法

目前接触到的牛顿迭代法主要应用于两个方面:(1)方程求根问题(2)最优化问题。 1、求解方程。 并不是所有的方程都有求根公式,或者求根公式很复杂,导致求解困难。利用牛顿法,可以迭代...
  • XDU_PYL
  • XDU_PYL
  • 2015年07月07日 10:40
  • 1084

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

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

牛顿法及其下山法+C代码

引用数值分析原文的内容,可以很快的编出牛顿法的代码。牛顿法其原理如下: 从上面理论可以看出,牛顿法就是不断寻找新的点 x(k+1)来逼近目标值,其寻找方法是不断对曲线做切线,并计算“前进”距离:f'...

用牛顿迭代法和二分法求方程的根【C语言】

1.用牛顿迭代法求该方程在1.5附近的根:2X^3-4X^2+3X-6=0 #include #include double func(double x) //函数 {return 2*x*x*...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:牛顿迭代法 c语言实现
举报原因:
原因补充:

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