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

夜空Sora 2018-03-03 01:40:34
问题. 牛顿迭代法求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;

}
...全文
1208 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
flash_king 2020-05-22
  • 打赏
  • 举报
回复
引用 4 楼 <span style="color:#4788C7">JL_Xie</span>的回复:
应该会有四个解吧
<br />三个,说错了
flash_king 2020-05-22
  • 打赏
  • 举报
回复
应该会有四个解吧
赵4老师 2018-03-03
  • 打赏
  • 举报
回复
百度搜相关关键字。
摘要:牛顿迭代法是《数值分析》这门课程中一个重要的计算方法和思想。这次的课程设计是通过在学习中所学习到的牛顿迭代的方法的思想计算方程方程 x3+x2-3x-3=0 在1.5附近。并通过VISUALC++编译程序计算出方程。并通过这次的课程设计对所学习的知识进行进一步的总结和完善从而对原有的知识进行深化和巩固。牛顿迭代法的主要功能:计算方程时可以比较快速方便的计算出来结果但并不影响计算出来结果的精确度,运用于多种工业设计和数学设计方面。 关键词: 牛顿 迭代 方程 Abstract: The Newton iteration method is "Numerical analysis" in this curriculum an important computational method and the thought.The method thought computation equation in the study which this time curriculum design is through studies Newton who iterates: Asks equation x3+x2-3x-3=0 in 1.5 neighbor roots.And calculates the equation through the VISUALC++ compiler the root.Thus and designs through this time curriculum to the knowledge which studies carries on the further summary and the consummation carries on the deepening to the original knowledge and consolidated.Newton iteration method main function: When computation equation but may the quite fast convenience computation finally not affect calculates the result the precision, utilizes in many kinds of industrial design and mathematics design aspect. Key words: Newton iterates the equation root 1 牛顿迭代法的简介 1.1 牛顿迭代法的概述 牛顿迭代法(Newton's method)又称为牛顿-拉夫逊方法(Newton-Raphson method),它是牛顿在17世纪提出的一种在实数域和复数域上近似方程的方法。多数方程不存在公式,因此精确非常困难,甚至不可能,从而寻找方程近似就显得特别重要。方法使用函数f(x)的泰勒级数的前面几项来寻找方程f(x) = 0的。 设r是f(x) = 0的,选取x0作为r初始近似值,过点(x0,f(x0))做曲线y = f(x)的切线L,L的方程为y = f(x0) f'(x0)(x-x0),出L与x轴交点的横坐标 x1 = x0-f(x0)/f'(x0),称x1为r的一次近似值。过点(x1,f(x1))做曲线y = f(x)的切线,并该切线与x轴的横坐标 x2 = x1-f(x1)/f'(x1),称x2为r的二次近似值。重复以上过程,得r的近似值序列,其中x(n+1)=x(n)-f(x(n))/f'(x(n)),称为r的n+1次近似值,上式称为牛顿迭代公式。 解非线性方程f(x)=0的牛顿法是把非线性方程线性化的一种近似方法。把f(x)在x0点附近展开成泰勒级数 f(x) = f(x0)+(x-x0)f'(x0)+(x-x0)^2*f''(x0)/2! +… 取其线性部分,作为非线性方程f(x) = 0的近似方程,即泰勒展开的前两项,则有f(x0)+f'(x0)(x-x0)=f(x)=0 设f'(x0)≠0则其解为x1=x0-f(x0)/f'(x0) 这样,得到牛顿法的一个迭代序列:x(n+1)=x(n)-f(x(n))/f'(x(n))。 1.2 牛顿迭代法的优点 迭代法是方程近似的一个重要方法,也是计算方法中的一种基本方法,它的算法简单,是用于方程方程近似的一种常用的算法设计方法。 牛顿迭代法方程的重要方法之一,其最大优点是在方程f(x) = 0的单附近具有平方收敛,而且该法还可以用来方程的重

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧