迭代函数对收敛性的影响

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
迭代函数对收敛性的影响
一、实验名称:
迭代函数对收敛性的影响
二、实验目的:
初步了解非线性方程的简单迭代法及其收敛性,体会迭代函数对收敛性的影响,知道当迭代函数满足什么条件时,迭代法收敛。
三、实验内容:
用简单迭代法求方程 的根。
方案一:ห้องสมุดไป่ตู้化 为等价方程
方案二: 化 为等价方程
四、实验要求:
(1)分别对方案一、方案二取初值 ,迭代10次,观察其计算值,并加以分析。
利用库函数solve解方程的根:
solve('2*x^3-x-1=0')
ans =
1
-1/2+1/2*i
-1/2-1/2*i
六、实验总结:
1.从上述的迭代求根可以看出,不同的迭代函数,求解根会不一样。第一个程序由于迭代函数选取比较好,所以收敛接近精确解;而第二个程序由于迭代函数选取不合适,迭代发散。
ans =
2.0000 0.1707 0.1770 0.9644
ans =
3.0000 0.0297 0.0298 0.9940
ans =
4.0000 0.0050 0.0050 0.9990
ans =
5.0000 0.0008 0.0008 0.9998
ans =
6.0000 0.0001 0.0001 1.0000
return;
end
p=[(i-1) piancha xdpiancha xk]';
方案一编程如下:
调用的子函数如下:
functiony =fun1(x)
y=((x+1)/2).^(1/3);
>> [k,piancha,xdpiancha,xk]= diedai1(0,10)
ans =
1.0000 0.7937 1.0000 0.7937
%输入的量--x0是初始值,k是迭代次数
x(1)=x0;
for i=1:k
x(i+1)=fun1(x(i));%程序中调用的fun1.m为函数y=φ(x)
piancha= abs(x(i+1)-x(i)); xdpiancha=piancha/( abs(x(i+1))+eps);
i=i+1;xk=x(i);[(i-1) piancha xdpiancha xk]
10
piancha =
1.0685e-007
xdpiancha =
1.0685e-007
xk =
1.0000
方案二编程如下:
调用的子函数如下:
functiony =fun(x)
y=2.*x.^3-1;
>> [k,piancha,xdpiancha,xk]= diedai1(0,10)
y =
-1
ans =
1.0000 1.0000 1.0000 -1.0000
y =
-3
ans =
2.0000 2.0000 0.6667 -3.0000
y =
-55
ans =
3.0000 52.0000 0.9455 -55.0000
y =
-332751
ans =
1.0e+005 *
0.0000 3.3270 0.0000 -3.3275
end
if (piancha >1)&(xdpiancha>0.5)&(k>3)
disp('请用户注意:此迭代序列发散,请重新输入新的迭代公式')
return;
end
if (piancha < 0.001)&(xdpiancha< 0.0000005)&(k>3)
disp('祝贺您!此迭代序列收敛,且收敛速度较快')
(2)用MATLAB内部函数solve直接求出方程的所有根,并与(1)的结果进行比较。
五、实验编程:
简单迭代M文件:
输出量:k为迭代次数,piancha为偏差,xdpiancha为绝对误差,xk为近似值
输入量:初值x0,迭代次数n:
function [k,piancha,xdpiancha,xk]=diedai1(x0,k)
y =
-Inf
ans =
8 Inf NaN -Inf
y =
-Inf
ans =
9 NaN NaN -Inf
y =
-Inf
ans =
10 NaN NaN -Inf
k =
10
piancha =
NaN
xdpiancha =
NaN
xk =
-Inf
从上面两个迭代程序结果可以看出, 的迭代求根过程是收敛的,从而可以求出根,而第二个迭代 求根是发散的。
2.在选取迭代函数时,还要考虑误差,包括绝对误差和相对误差,使误差值小于规定的数值内。
3.收敛速度对于迭代函数求根也是很重要的。不同的迭代函数,收敛速度不同,尽量选择收敛速度快的迭代函数求根。
4.要选取合适初始值。选取合适的初始值可以减少迭代次数。
y =
-7.3687e+016
ans =
1.0e+016 *
0.0000 7.3687 0.0000 -7.3687
y =
-8.0019e+050
ans =
1.0e+050 *
0.0000 8.0019 0.0000 -8.0019
y =
-1.0247e+153
ans =
1.0e+153 *
0.0000 1.0247 0.0000 -1.0247
ans =
7.0000 0.0000 0.0000 1.0000
ans =
8.0000 0.0000 0.0000 1.0000
ans =
9.0000 0.0000 0.0000 1.0000
ans =
10.0000 0.0000 0.0000 1.0000
祝贺您!此迭代序列收敛,且收敛速度较快
k =
相关文档
最新文档