实验五用Newton法计算方程的根.doc

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

五. 讨论分析

当初始值选取离零点较远时将导致算法无法使用,例如第三题,将初始值改为2就无法计算出结果了,显示如下

例如求020sin 35=-+-x x e x 的根,其中控制精度1010-=eps ,最大迭代次数40=M ,在steffensen 加速迭代方法的程序中,我们只需改动:it_max=40; ep=1e-10, 其余不变 。利用以上程序,我们只需输入:

phi=inline('exp(5*x)-sin(x)+(x)^3-20');

[x_star,index,it]=steffensen(phi,0.5)可得:

x_star = 0.637246094753909

index = 0

it = 41

观察上述结果,index = 0,it = 41表明迭代失败,所以使用以上方法估计的时候,应该尽量估计出解的范围,偏离不应过大,距离增加迭代次数增加,也有可能迭代失败

六. 改进实验建议

根据上述分析,我认为,应该先对函数作一个简图,方便知道解的大概位置,然后我们才将这个大概值代入Newton 法或者Steffensen 中进行求解。

当然,我们可以用其他数学软件实现Newton 迭代法,我们可以用z-z 超级画

板,其操作流程为:

牛顿迭代法的公式是:x n+1=x n-f(x n)/f'(x n)。

下面我们就用牛顿迭代法设计程序求方程f(x)=ln(x)+2*x-6的近似解。

(一)观察方程f(x)=0的零点位置

(1)显示坐标系的坐标刻度。

(2)作出函数y=ln(x)+2*x-6的图像,如下图所示:

可以观察到方程的根在区间[2,3]上,我们可以设定近似解的初始值为2。(二)设计求方程近似解的程序

(1)在程序工作区中输入:

f(x){ln(x)+2*x-6;}

执行后,返回结果为:

>> f(x) #

这表示在计算机已经完成了函数f(x)的定义。

(2)定义f(x)的导函数g(x),在程序工作区中输入:

Diff(f(x),x);

执行后,返回结果为:

>> 2+1/x #

得到了f(x)的导函数。

继续输入:

g(x){2+1/x;}

这表示在计算机已经完成了函数g(x)的定义。

(3)在下面输入:

NewtonMethod(x0,h)

{

x=x0-f(x0)/g(x0);

if(abs(x-x0)<=h){return x;}

else{NewtonMethod(x,h);}

}

}

执行后,返回结果为:

>> NewtonMethod(x0,h) #

相关文档
最新文档