实验4.1
1 实验目的
通过迭代法求解迭代公式,并分析其收敛情况和迭代次数。
2 实验内容
考虑迭代公式,取初始点x0=0.5,分别考察一般迭代法与Steffensen加速迭代法的收敛情况,以及各自的迭代次数。
3 实验知识点
一般迭代法:一般地,如果将方程组y=φ(x)和y=x消去y,则得到一个关于x的方程:
Steffensen加速迭代法:通过把改进的Aitken方法应用于根本不动点迭代所得到的线性收敛序列,将收敛速度加速到二阶。
5 实验代码及结果
5.1 一般迭代法
代码
k=0;
eps=1e-8;
x0=0.5;
f=@(x)x.^2+0.01*x; %function
while(f(x0)>eps)
k=k+1;
x1=0.99*x0-x0^2;
if(abs(x1-x0)<eps)
break;
end
x0=x1;
end
k
x1
结果
5.2 Steffensen加速迭代法
代码
f=@(x)x.^2+0.01*x; %
x0=0.5; %
k=0;
eps=1e-8;
while(f(x0)>eps)
k=k+1;
x1=x0-f(x0)/((f(x0+f(x0))-f(x0))/(f(x0))); %steffensen 迭代
if(abs(x1-x0)<eps)
break;
end
x0=x1;
end
k
x1
结果:
实验4.2
1 实验目的
考虑一般迭代公式。分析λ取值与xk图形的关系。
2 实验内容
考虑一般迭代公式。取λ∈[0.2,4]中不同的值,x0属于(0,1)进行迭代,画出不同λ情况下的的图形,并分析λ取值与xk图形的关系。
3 实验代码及结果分析
3.1 实验代码及结果
代码:
eps=1e-8;
x0=0.5;
maxit=1000;
for λ=0.2:0.2:4
x=rand();
for i=1:maxit
x1=λ*x(end)*(1-x(end));
x=[x,x1];
if(abs(x(end)-x(end-1))<eps)
break;
end
end
figure
plot(x)
title(['lycλ=',num2str(λ)])
end
结果:
3.2 结果分析
从结果可以看出,当λ小的时候,迭代式很快收敛,当λ逐渐变大后,收敛越来越慢,到λ=3左右的时候开始无法收敛变为振荡,最后λ更大之后变为无法收敛的无序的序列。