迭代法

2018-10-07 20:06

西 安 邮 电 大 学

(计算机学院)

课内实验报告

实验名称 用迭代法解方程

专业名称: 计算机科学与技术 班 级: 学生姓名: 学号(8位) 指导教师:

实验日期: 2013年11月

一. 实验目的及实验环境

实验目的:编写程序,比较两种迭代法的优劣。 在MATLAB数学软件下求解 二. 实验内容

求下列方程的实根

(1) x^2-3x+2-e^x=0; (2) x^3+2x^2+10x-20=0.

要求:(1)设计一种不动点迭代法,要使迭代序列收敛,然后再用斯特芬森加速迭代,计算到|x(k)-x(k-1)|<10^(-8)为止。(2)用牛顿迭代,同样计算到|x(k)-x(k-1)|<10^(-8)。输出迭代初值及各次迭代值和迭代次数k,比较方法的优劣。 三.方案设计

1.在Matlab中直接求解

2.采用不动点迭代法、斯特芬森加速迭代和牛顿迭代法实现并比较优劣。 四.测试数据及运行结果

(1)先用画图的方法估计根的范围 ezplot('x^2-3*x+2-exp(x)'); grid on;

x2-3 x+2-exp(x)500-50-100-150-200-6-4-20x246

可以估计到方程的根在区间(0,1);选取迭代初值为x0=0.5; 构造不动点迭代公式x(k+1)=( x(k)^2+2-e^x(k))/3; ψ(x)= ( x^2+2-e^x)/3;

当0

f =

Inline function:

f(x) = (x^2+2-exp(x))/3 x=

0.20042624309996 0.27274906509837

0.25360715658413 0.25855037626494

0.25726563633509 0.25759898516219 0.25751245451483 0.25753491361525 0.25752908416796 0.25753059723833 0.25753020451046 0.25753030644564 0.25753027998767 0.25753028685501 i = 14

x = 0.25753028685501 斯特芬森加速法:

运行结果为x=

0.25868442756579 0.25753031771981 0.25753028543986 0.25753028543986 i = 4

x = 0.25753028543986 牛顿法运行结果如下:

x=

0.50000000000000 0.25368870241829 0.25752890079471 0.25753028543968 0.25753028543986 i = 4

x1 =0.25753028543986

(2)先用画图的方法估计根的范围

ezplot('x^3+2*x^2+10*x-20'); grid on;

x3+2 x2+10 x-204003002001000-100-200-6-4-20x246

根大约在区间(1,2);选取初值x0=1.5;

构造不动点迭代公式x(k+1)=(-2x(k)^2-10x(k)+20)^1/3;

ψ(x)=(-2x^2-10x+20)^1/3; 运行结果:

f = Inline function:

f(x) = (-2*x^2-10*x+20)^1/3 x=

0.16666666666667 6.09259259259259 -38.38843164151806

-8.478196837919431e+002 -4.763660785374071e+005 -1.512815059604763e+011 i = 6 x =

-1.512815059604763e+011

迭代6次后x的值大得令人吃惊,表明构造的式子并不收敛. 也无法构造出收敛的不动点公式 牛顿迭代法运行结果: x=

1.50000000000000 1.37362637362637 1.36881481962396 1.36880810783441 1.36880810782137 i = 4 x1 =

1.36880810782137

五.总结

在实验中发现牛顿法的收敛性比较好,相比不动点迭代法要构造出收敛的公式比较难,牛顿法迭代次数也较少,收敛速度快,只是对初值的要求很高,几种方法各有利弊,所以在以后的使用时具体采用哪种需因题而异。通过这次实验体会到根据实际情况选择不同的方法。

六.源代码

format long;

f=inline('(x^2+2-exp(x))/3') disp('x='); x=feval(f,0.5); disp(x); Eps=1E-8; i=1; while 1

x0=x; i=i+1;

x=feval(f,x); disp(x);

if abs(x-x0)

format long;

f=inline('x-((x^2+2-exp(x))/3-x)^2/((((x^2+2-exp(x))/3)^2+2-exp((x^2+2-exp(x))/3))/3-2*(x^2+2-exp(x))/3+x)');

disp('x='); x=feval(f,0.5); disp(x); Eps=1E-8; i=1; while 1 x0=x; i=i+1;

x=feval(f,x); disp(x);

if abs(x-x0)

format long; x=sym('x');

f=sym('x^2-3*x+2-exp(x)'); df=diff(f,x); FX=x-f/df; Fx=inline(FX); disp('x='); x1=0.5; disp(x1); Eps=1E-8; i=0; while 1 x0=x1; i=i+1;

x1=feval(Fx,x1); disp(x1);

if abs(x1-x0)


迭代法.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:电商题库100道

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: