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 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 因篇幅问题不能全部显示,请点此查看更多更全内容