数值分析:迭代法求解迭代公式

实验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左右的时候开始无法收敛变为振荡,最后λ更大之后变为无法收敛的无序的序列。

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值