牛顿迭代法求多元方程近似根

夜空Sora 夜空Sora 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
问题. 牛顿迭代法求ax^3+bx^2+cx+d=0在1附近的根。(系数由用户自己输入)

因为此方法本身是数学问题这里不做讨论也无须讨论。进入我们编程的主题。

记住此法核心的公式: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)

Bin682

牛顿迭代法求解多项式方程的近似解

牛顿迭代法又称牛顿-拉夫逊方法(Newton-Raphson method),是牛顿在17世纪提出的一种在实数域和复数域上近似求方程的方法。该方法的基础是利用泰勒展开式。 方法使用函数f(x)的泰勒级数的前几项寻找方程f(x) = 0 的根。最大优点是在方程f(x)=0的单根附近具有平方收敛,该方法可以用来求方程的重根、复根。 计算公式如下: 设r是f(x)=0...

chengjieno1

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. ##方法一:循环法,需要明确将哪些量放在循环体内,哪些量在外,...

WakerCooper

Fortran Newton法求解非线性方程组.rar_fortran 非线性方程组_newton_牛顿迭代_牛顿迭代法_非线性

通过Fortran语言,利用牛顿方程迭代来求解非线性方程组,可设置为二元或多元

钱亚锋
评论 3
收藏 已收藏
分享
返回顶部
夜空Sora
C语言 70,039 成员 243,237 内容