迭代格式的比较.docx

上传人:b****5 文档编号:8020526 上传时间:2023-01-28 格式:DOCX 页数:8 大小:94.90KB
下载 相关 举报
迭代格式的比较.docx_第1页
第1页 / 共8页
迭代格式的比较.docx_第2页
第2页 / 共8页
迭代格式的比较.docx_第3页
第3页 / 共8页
迭代格式的比较.docx_第4页
第4页 / 共8页
迭代格式的比较.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

迭代格式的比较.docx

《迭代格式的比较.docx》由会员分享,可在线阅读,更多相关《迭代格式的比较.docx(8页珍藏版)》请在冰豆网上搜索。

迭代格式的比较.docx

迭代格式的比较

课题一迭代格式的比较

一、问题提出

设方程f(x)=x-3x–1=0有三个实根x*1=,x*2=,x*3=

现采用下面六种不同计算格式,求f(x)=0的根x*1或x*2

1.

2.

3.

4.

5.

6.

二、要求

1、编制一个程序进行运算,最后打印出每种迭代格式的敛散情况;

2、用事后误差估计

来控制迭代次数,并且打印出迭代的次数;

3、初始值的选取对迭代收敛有何影响;

4、分析迭代收敛和发散的原因。

三、目的和意义

1、通过实验进一步了解方程求根的算法;

2、认识选择计算格式的重要性;

3、掌握迭代算法和精度控制;

4、明确迭代收敛性与初值选取的关系。

1.六种不同计算格式运行程序及运算结果

运行程序

(1)

functioniteration_1

x0=input('输入初始值x0=');

k=input('输入迭代次数k=');

x

(1)=x0;

i=1;

whilei<=k

x(i+1)=fun(x(i))

i=i+1;

xk=x(i);

end

functiony=fun(x)

y=(3*x+1)/x^2;

(2)

functioniteration_2

x0=input('输入初始值x0=');

k=input('输入迭代次数k=');

x

(1)=x0;

i=1;

whilei<=k

x(i+1)=fun(x(i))

i=i+1;

xk=x(i);

end

functiony=fun(x)

y=(x^3-1)/3;

(3)

functioniteration_3

x0=input('输入初始值x0=');

k=input('输入迭代次数k=');

x

(1)=x0;

i=1;

whilei<=k

x(i+1)=fun(x(i))

i=i+1;

xk=x(i);

end

functiony=fun(x)

y=(3*x+1)^(1/3);

(4)

functioniteration_4

x0=input('输入初始值x0=');

k=input('输入迭代次数k=');

x

(1)=x0;

i=1;

whilei<=k

x(i+1)=fun(x(i))

i=i+1;

xk=x(i);

end

functiony=fun(x)

y=1/(x^2-3);

(5)

functioniteration_5

x0=input('输入初始值x0=');

k=input('输入迭代次数k=');

x

(1)=x0;

i=1;

whilei<=k

x(i+1)=fun(x(i))

i=i+1;

xk=x(i);

end

functiony=fun(x)

y=(3+1/x)^(1/2);

(6)

functioniteration_6

x0=input('输入初始值x0=');

k=input('输入迭代次数k=');

x

(1)=x0;

i=1;

whilei<=k

x(i+1)=fun(x(i))

i=i+1;

xk=x(i);

end

functiony=fun(x)

y=x-(1/3)*((x^3-3*x-1)/(x^2-1));

运行结果

在matlab的commandwindow中调用写好的m文件,运行方式如下

>>iteration

输入初始值x0=

输入迭代次数k=

(1)

>>iteration_1

输入初始值x0=1

输入迭代次数k=5

计算格式

(1)最终运行结果如下:

x=

由此知,计算格式

(1)发散。

(2)

>>iteration_2

输入初始值x0=1

输入迭代次数k=5

计算格式

(2)最终运行结果如下:

x=0

由此知,计算格式

(2)收敛。

(3)

>>iteration_3

输入初始值x0=1

输入迭代次数k=8

计算格式

(2)最终运行结果如下:

x=

由此知,计算格式(3)收敛。

(4)

>>iteration_4

输入初始值x0=1

输入迭代次数k=5

计算格式

(2)最终运行结果如下:

x=

由此知,计算格式(4)收敛。

(5)

>>iteration_5

输入初始值x0=1

输入迭代次数k=8

计算格式(5)最终运行结果如下:

x=

由此知,计算格式(5)收敛。

(6)

>>iteration_6

输入初始值x0=2

输入迭代次数k=5

计算格式(6)最终运行结果如下:

x=

事后误差估计控制迭代次数,程序如下

(①注:

此程序只能够在迭代式收敛的情况下有意义;

②如果要采用不同的计算格式,只要将matlab程序的子函数中的迭代式修改即可。

function[k,control,xk]=iteration

%k为输出的迭代次数

%control为控制条件,使循环结束

%xk为迭代方程的一个根

%此函数只能够在迭代式收敛的情况下有意义

N=input('输入最大迭代次数N=');

x

(1)=input('输入初始值x0=');

m=input('输入控制误差m=');

fori=1:

N

x(i+1)=fun(x(i))

control=abs(x(i+1)-x(i));

[(i-1)controlx(i)]

if(control

k=i;

xk=x(i);

break

end

i=i+1;

end

functiony=fun(x)

y=(3*x+1)^(1/3);

将程序存为m文件,并且进行调用,有如下运行方式(程序以计算格式(3)为例)

>>[kcontrolxk]=iteration

输入最大迭代次数N=30

输入初始值x0=1

输入控制误差m=

运行输出结果为:

x=

k=13

control=

xk=

有输出结果可以看出,方程的一个根为,迭代了13次,并且最后一次的偏差为。

3.初始值的选取对迭代收敛有何影响

如果函数在C[a,b]满足不动点的两个条件,那么对于任意的x0∈[a,b],得到的迭代序列{xk}收敛到函数的不动点。

在此情况下,初始值的选取对迭代收敛没有任何影响,只是影响迭代收敛的速度和到达误差的精度要求的次数。

4.分析迭代收敛和发散的原因。

f(x)=0改写成等价的形式x=

(x),迭代法是一种逐次逼近法,其基本思想是将隐式方程=

(x)归结为一组显式的计算公式,就是说迭代工程实质上是一个逐步显化的过程。

当迭代下去不能趋于某个极值,这种现象成为发散。

如图所示,图1为收敛的情况,图2为发散的情况。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1