1.6 牛顿迭代法求方程根

第一部曲:利用牛顿迭代法求方程根,思路是利用函数封装实现求方程根这个过程,最后利用主函数,输入参数,传递给函数来求。函数方程是a倍x三次方加上b倍x平方+c倍x+常数d,求导之后就是3a倍x的平方加上2b倍x加上常数c。利用每次求的x来算fx和求导之后的fx,然后算出h,求出新的x,直到不满足误差在1e-5之外,即误差很小了,退出循环,返回所求值。

第二部曲:

 

第三部曲:定义a,b,c,d,传入函数,进行迭代。

算出x和x0,还有h,判断误差是否够小,够小就退出,不够继续迭代。

第四部曲:

#include<iostream>
#include<cmath>
using namespace std;
double result(double a,double b,double c,double d)
{
double x0,x=1.5,f,fd,h;
do
{
x0=x;
f=a*x0*x0*x0+b*x0*x0+c*x0+d;//原函数代入值
fd=3*a*x0*x0+2*b*x0+c;//求导后的函数代入值
h=f/fd;//求出h
x=x0-h;//最新的x
}while(fabs(x-x0)>=1e-5);//不满足条件退出,即误差很小的时候退出
return x;
}
int main()
{
double a,b,c,d,x;
cin>>a>>b>>c>>d;
x=result(a,b,c,d);//利用函数求得最后的值
printf("%.6lf",x);
return 0;
}

posted @   自律小子丶  阅读(130)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示