牛顿迭代法求多元方程近似根
因为此方法本身是数学问题这里不做讨论也无须讨论。进入我们编程的主题。
记住此法核心的公式:x = x0-f(x0)/f'(x0). 我们令x1=f(x0),x2=f'(x0),这样写起来简洁明了。
步骤: (1 ) 在1附近任意找一个实数作为x0的初始值,如此题,我们取x=1,让x0=x,即x0=1.
(2) 用初始值x0带入方程计算出f(x0)和f'(x0).即求出x1和x2;
(3) 带入上述核心公式计算出x = x0-f(x0)/f'(x0)的值。
(4) 用新产生的x替换原来的x0,为下一次迭代做准备。
(5) 若|x-x0|>=1e-5;则继续上述迭代,否则转(6).
(6) 所得x即为多远方程ax^3+bx^2+cx+d=0的根,输出。
代码如下:(经过VS2008测试无误 测试输入1,2,3,4 输出:-1.65)
#include<stdio.h>
#include<math.h>
double getRes(double a,double b,double c,double d){
doublex=1,x0,x1,x2;
do{
x0=x;
x1=a*x*x*x+b*x*x+c*x+d;
x2=3*a*x*x+2*b*x+c;
x=x0-x1/x2;
}while(fabs(x-x0)>=1e-5);
return x;
}
int main(){
doublea,b,c,d;
scanf("%lf,%lf,%lf,%lf",&a,&b,&c,&d);
printf("x=%.2lf\n",getRes(a,b,c,d));
return 0;
}
相关推荐
简化的牛顿迭代法的MATLAB实现.pdf
简化的牛顿迭代法的MATLAB实现.pdf
用牛顿迭代法求方程的根
用牛顿迭代法求方程的根(C语言) 题目要求:牛顿迭代法是一种重要的基本的求方程根的方法。现有方程为axˆ3+bxˆ2+cx+d=0,系数a,b,c,d的值一次为1,2,3,4,由主函数输入。求x在1附近的一个实根。 思路: 首先,设fx=axˆ3+bxˆ2+cx+d,则可在坐标图上画出fx。此时fx与横坐标的交点即为方程的,现在来求这个解的值 当x0=1时,fx=ax0ˆ3+bx0ˆ2+cx0+d 在(x0,fx)上作fx的切线,切线的斜率f为fx求导,得f=3axˆ2+2bx+c,交横坐标于(x1,0)
牛顿迭代法求解多项式方程的近似解
牛顿迭代法又称牛顿-拉夫逊方法(Newton-Raphson method),是牛顿在17世纪提出的一种在实数域和复数域上近似求方程的方法。该方法的基础是利用泰勒展开式。 方法使用函数f(x)的泰勒级数的前几项寻找方程f(x) = 0 的根。最大优点是在方程f(x)=0的单根附近具有平方收敛,该方法可以用来求方程的重根、复根。 计算公式如下: 设r是f(x)=0...
C++牛顿迭代法求一元方程的根
题目描述: 给定方程x^5+2x^3=x^2+x+1=0;求方程的根的近似值。 提示:采用牛顿切线法求根,先给任意的x,求出f(x)做,函数在(x,f(x))的切线,交x轴于x2,然后再用求出f(x2),做 f(x)在(x2,f(x2))的切线交x轴于x3,重复上述过程,直到切点的横坐标于切线在x轴点横坐标差的绝对值小于1e-5. ##方法一:循环法,需要明确将哪些量放在循环体内,哪些量在外,...
Fortran Newton法求解非线性方程组.rar_fortran 非线性方程组_newton_牛顿迭代_牛顿迭代法_非线性
通过Fortran语言,利用牛顿方程迭代来求解非线性方程组,可设置为二元或多元


