您的当前位置:首页正文

牛顿迭代法

2024-01-30 来源:步旅网


1.1《工程常用算法》第一次作业

学号:2008071612 姓名:李国强

一、题目:f(x)=x*x*x-3*x-1=0,求x0=2附近的根,ε=0.5*-4。 要求:1、流程图2、程序3、结果 二、f(x)=x*x*x-3*x-1的曲线图如下:

可以看出,根值应该小于2.

三、流程图:

Y

输入x0,eps1,eps2 开始 N

N

|x0-x1|>eps1orf( Y x1)>eps2 x=1 X1=f(x0)-f(0)/fd(x0) 无根 fd(x0)=

四、程序: #include #include #include /*f(x)函数*/ double f(double x) {

X1 结束

return x*x*x-3*x-1; }

/* f(x)的导数*/ double fd(double x) {

return 3*x*x-3;

}

/*牛顿迭代*/

/*输入函数:初值x0、区间精度ex、函数精度ey*/ void NewtonRoot(double x0,double ex,double ey) {

double x1,fx1,fdx0; int k=1;

printf(\"牛顿法求根\\n\");

while(1) {

fdx0=fd(x0); //求导数值

if (fdx0==0) {

printf(\"重新输入初始值!\"); break; } else {

x1=x0-f(x0)/fdx0;

fx1=f(x1);

printf(\"k=%-3d x=%-10f f(x)=%-10f\\n\ if(fabs(x1-x0)}

/*在主函数中运行各种求解方法*/ int main(void) {

//牛顿法

NewtonRoot(5,0.00002,0.00001); system(\"pause\"); return 0; }

五、程序运行结果:

六、对不同实现方法的运行结果进行比较

由计算得出结果的步骤可以看出,通过牛顿法得到结果的步骤较为简洁,而且运算过程少。

七、自评成绩:A

因篇幅问题不能全部显示,请点此查看更多更全内容