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

来源:互联网 发布:人工智能剧情详细 编辑:程序博客网 时间:2024/05/18 22:41


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;
}
总      结:
  一开始看这题完全蒙逼,虽然老师上课讲过,但我还是没记住,自己做的时候发现并不是很难,按要求做就行,并不像题目那么难懂。


1 0
原创粉丝点击