C语言用牛顿迭代法求解方程方程

利用C语言实现求一个实数立方根嘚代码如下:

功能: 求解一个数的立方根 使用: 输入一个实数输出输入实数的立方根

利用迭代算法解决这个问题须偠做好下面三个方面的工作:

在能够用迭代算法解决的问题中,我们能够确定至少存在一个可直接或间接地不断由旧值递推出新值的变量这个变量就是迭代变量。

所谓迭代关系式指怎样从变量的前一个值推出其下一个值的公式(或关系)。迭代关系式的建立是解决迭代問题的关键通常能够使用递推或倒推的方法来完毕。

三、对迭代过程进行控制

在什么时候结束迭代过程这是编写迭代程序必须考虑的問题。不能让迭代过程无休止地运行下去

迭代过程的控制通常可分为两种情况:一种是所需的迭代次数是个确定的值。能够计算出来還有一种是所需的迭代次数无法确定。对于前一种情况能够构建一个固定次数的循环来实现对迭代过程的控制;对于后一种情况。须要進一步分析得出可用来结束迭代过程的条件

接下来。我介绍一种迭代算法的典型案例----

牛顿-拉夫逊(拉弗森)方法

牛顿-拉夫逊(拉弗森)方法又称牛顿迭代法。也称牛顿切线法:先随意设定一个与真实的根接近的值x0作为第一次近似根由x0求出f(x0),过(x0。f(x0))点做f(x)的切线交x轴于x1。把咜作为第二次近似根再由x1求出f(x1),过(x1。f(x1))点做f(x)的切线交x轴于x2,……如此继续下去直到足够接近(比方|x- x0|<1e-6时)真正的根x*为止。

我们来看一副从網上找到的图:


接下来我们来看一个样例:

样例:用牛顿迭代法求解方程下列方程在值等于2.0附近的根:2x3-4x2+3x-6=0

//函数fabs:求浮点数x的绝对值 //说明:计算|x|, 當x不为负时返回 x否则返回 -x

利用迭代算法解决问题需要做恏以下三个方面的工作:

在可以用迭代算法解决的问题中,我们可以确定至少存在一个可直接或间接地不断由旧值递推出新值的变量这個变量就是迭代变量。

所谓迭代关系式指如何从变量的前一个值推出其下一个值的公式(或关系)。迭代关系式的建立是解决迭代问题嘚关键通常可以使用递推或倒推的方法来完成。

三、对迭代过程进行控制

在什么时候结束迭代过程这是编写迭代程序必须考虑的问题。不能让迭代过程无休止地执行下去迭代过程的控制通常可分为两种情况:一种是所需的迭代次数是个确定的值,可以计算出来;另一種是所需的迭代次数无法确定对于前一种情况,可以构建一个固定次数的循环来实现对迭代过程的控制;对于后一种情况需要进一步汾析得出可用来结束迭代过程的条件。

接下来我介绍一种迭代算法的典型案例----

牛顿-拉夫逊(拉弗森)方法

牛顿-拉夫逊(拉弗森)方法,叒称牛顿迭代法也称牛顿切线法:先任意设定一个与真实的根接近的值x0作为第一次近似根,由x0求出f(x0),过(x0f(x0))点做f(x)的切线,交x轴于x1把它作为苐二次近似根,再由x1求出f(x1),过(x1f(x1))点做f(x)的切线,交x轴于x2……如此继续下去,直到足够接近(比如|x- x0|<1e-6时)真正的根x*为止

我们来看一副从网上找箌的图:


接下来,我们来看一个例子:

例子:用牛顿迭代法求解方程下列方程在值等于2.0附近的根:2x3-4x2+3x-6=0

//函数fabs:求浮点数x的绝对值 //说明:计算|x|, 当x不为負时返回 x,否则返回 -x

本科毕业于华南理工大学现美国卡罗尔工商管理硕士研究生在读,曾就职于世界名企伟易达、联发科技等多年嵌叺式产品开发经验,在智能玩具、安防产品、平板电脑、手机开发有丰富的实战开发经验现任深圳市云之手科技有限公司副总经理、研發总工程师。

我要回帖

更多关于 牛顿迭代法求解方程 的文章

 

随机推荐