第十一周 OJ总结<6>-牛顿迭代法

本文介绍使用牛顿迭代法解决三次多项式方程求根问题。具体目标为求解形如 ax³ + bx² + cx + d = 0 的方程在 x ≈ 1 附近的实根。通过逐步迭代逼近精确解,并给出 C 语言实现示例。


Copyright (c) 2016,

烟台大学计算机与控制学院 All ringts reserved.

 文件名称:OJ总结<6>-牛顿迭代法

作 者:王兴振

完成日期:2016年11月14日

版 本 号:未知

题目描述

  用牛顿迭代法求根。方程为ax3+bx2+cx+d=0。系数a,b,c,d的值一次为1,2,3,4,由主函数输入。

求x在1附近的一个实根。求出根后由主函数输出。结果保留两位小数。

输      入:

系数a,b,c,d的值

输      出:

x在1附近的一个实根

样例输入:

1 2 3 4

样例输出:

-1.65

提        示:

主函数已给定如下,提交时不需要包含下述主函数

/* C代码 */

int main()

{

 double solut(double ,double ,double ,double );

 double a,b,c,d;

 scanf("%lf%lf%lf%lf",&a,&b,&c,&d);

 printf("%.2f",solut(a,b,c,d));;

 return 0;

}

/* C++代码 */

int main()

{

 double solut(double ,double ,double ,double );

 double a,b,c,d;

 cin>>a>>b>>c>>d;

 cout<<setiosflags(ios::fixed);

 cout<<setprecision(2); 

 cout<<solut(a,b,c,d)<<endl;

 return 0;

}

答   案:

#include<stdio.h>
#include<math.h>
double solut(double a,double b,double c,double d);
int main()
{
double solut(double ,double ,double ,double );
double a,b,c,d;
scanf("%lf%lf%lf%lf",&a,&b,&c,&d);
printf("%.2f",solut(a,b,c,d));
return 0;
}
double solut(double a,double b,double c,double d)
{
double f,f1,x=1,x1=0;
    while(fabs(x-x1)>(1e-5))
{
x1=x;
f=x*(x*(a*x+b)+c)+d;
     f1=x*(3*a*x+2*b)+c;
x=x1-f/f1;
}
return x;
}
总      结:
  一开始看这题完全蒙逼,虽然老师上课讲过,但我还是没记住,自己做的时候发现并不是很难,按要求做就行,并不像题目那么难懂。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值