不动点迭代法matlab程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验四
姓名:木拉丁。尼则木丁班级:信计08-2
学号:20080803405 实验地点:新大机房
实验目的:通过本实验学习利用MATLAB不动点迭代法,抛物线法,斯特芬森迭代法解非线性方程组,及其编程实现,培养编程与上机调试能力。
实验要求:①上机前充分准备,复习有关内容,写出计算步骤,查对程序;
②完成实验后写出完整的实验报告,内容应该包括:所用的算法语言,
算法步骤陈述,变量说明,程序清单,输出计算结果,结果分析等等;
③用编好的程序在Matlab环境中执行。
迭代法
MATLAB程序:
function pwxff(f,x0,x1,x2,d,n)
f=inline(f);
x(1)=x0;
x(2)=x1;
x(3)=x2;
w1=(f(x(2))-f(x(3)))/(x(2)-x(3));
t1=(f(x(1))-f(x(3)))/(x(1)-x(3));
t2=(f(x(1))-f(x(2)))/(x(1)-x(2));
w2=1/(x(1)-x(2))*(t1-t2);
w=w1+w2*(x(3)-x(2));
for k=3:n
x(k+1)=x(k)-2*f(x(k))/(w+sqrt(w^2-4*f(x(k))*w2));
if abs(x(k+1)-x(k)) break end disp(sprintf('%d %f',k,x(k+1))) end x=x(k+1) 计算例题: 求f(x)=x3-x-1在[1,1.5]的零点. 取x0=1.5, 取x0=1.5,迭代公式为x n+1=(1+x n)1/3,计算结果如下表: 数值结果:ddfa('(x+1)^(1/3)',1.5,0.0001,100) k x 1 1.500000 2 1.357209 3 1.330861 4 1.325884 5 1.324939 抛物线法 MATLAB程序: function pwxf(f,x0,x1,x2,e,m) f=inline(f); x(1)=x0; x(2)=x1; x(3)=x2; w1=(f(x(2))-f(x(3)))/(x(2)-x(3)); t1=(f(x(1))-f(x(3)))/(x(1)-x(3)); t2=(f(x(1))-f(x(2)))/(x(1)-x(2)); w2=(1/(x(1)-x(2)))*(t1-t2); w=w1+w2*(x(3)-x(2)); for k=3:m x(k+1)=x(k)-2*f(x(k))/(w+sqrt(w^2-4*f(x(k))*w2)); if abs(x(k+1)-x(k)) break end disp(sprintf('%d %f %f',k,x(k+1),f(x(k+1)))) end x=x(k+1) 计算例题: 用抛物线法求解方程 : 56532.0,6.0,5.00 1)(210====-=x x x xe x f x 数值结果: pwxf('x*exp(x)-1',0.5,0.6,0.56532,0.001,100) 3 0.567111 -0.000090 x = 0.5671 实验总结:从计算过程中得知迭代法的收敛性跟初始值和迭代公式有关,如果取初始值不妥当,迭代法会发散的。 2012-5-18