非线性方程求根
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验七 非线性方程求根
实验7.1(迭代法、初始值与收敛性)
实验目的:初步认识非线性问题的迭代法与线性问题迭代法的差别,探讨迭代法及初始值与迭代收敛性的关系。
问题提出:迭代法是求解非线性方程的基本思想方法,与线性方程的情况一样,其构造方法可以有多种多样,但关键是怎样才能使迭代收敛且有较快的收敛速度。
实验内容:考虑一个简单的代数方程
012=--x x
针对上述方程,可以构造多种迭代法,如
)1.7(1
2
1-=+n n x x
)2.7(111n
n x x +
=+
)3.7(1
1+=+n n x x
在实轴上取初始值x 0,请分别用迭代(7.1)-(7.3)作实验,记录各算法的迭代过程。
实验要求:
(1)取定某个初始值,分别计算(7.1)-(7.3)迭代结果,它们的收敛性如何?重复选取不同的初始值,反复实验。请自选设计一种比较形象的记录方式(如利用MATLAB 的图形功能),分析三种迭代法的收敛性与初值选取的关系。
(2)对三个迭代法中的某个,取不同的初始值进行迭代,结果如何?试分析迭代法对不同的初值是否有差异?
(3)线性方程组迭代法的收敛性是不依赖初始值选取的。比较线性与非线性问题迭代的差异,有何结论和问题。
实验过程: 第一问: 针对迭代函数
11n n x x +=-
程序
disp(' 请输入初始迭代值为') x=[]; a=[];
b=[];
x(1)=input('');
for i=2:30
x(i)=x(i-1)^2-1;
end
for i=2:30
a(i-1)=x(i-1);
b(i)=x(i);
end
a
b
i=1:30;
plot(i,x)
title('x(n+1)=x(n)^2-1')
数值实验结果及分析:
选择初始值为1时,每次迭代的波动情况如下:
针对迭代函数
111n n
x x +=+
disp('请输入迭代的初始值') float x=[]; a=[]; b=[];
x(1)=input(''); for i=2:30
x(i)=1+1/x(i-1); end for i=2:30 a(i-1)=x(i-1); b(i)=x(i); end a b i=1:30; plot(i,x)
title('x(n+1)=x(n)^2-1')
数值实验结果及分析:
选择初始值为1时,每次迭代的波动情况如下:
每次的迭代函数值为:
针对迭代函数
1n x +=
disp('请输入迭代的初始值') double x=[]; a=[]; b=[];
x(1)=input(''); for i=2:30
x(i)=sqrt(x(i-1)+1); end for i=2:30 a(i-1)=x(i-1); b(i)=x(i); end a b i=1:30; plot(i,x)
title('x(n+1)=sqrt(x(n)+1)')
数值实验结果及分析:
选择初始值为1时,每次迭代的波动情况如下:
讨论
由上面的比较结果可以看到,无论取什么初始值,迭代法211n n x x +=-所得到的解是发散的,并且随着初始值选取的不同,发散的程度将会呈现指数型的增长,表明这种迭代法是没有意义的。
而后面两种迭代法111n n
x x +=+
和1n x +=说明
利用这两种方法来解此方程是可行的。并且可以看到,二者趋近于解的过程并不
相同, 111n n
x x +=+
的前期迭代过程中是很不稳定的,而迭代法1n x +=更平
缓地方式趋近于方程的解。为三种迭代方法中最优。
第二问:
程序
迭代法111n n
x x +=+
取初始值1——5,步长为0.5,迭代30次的图像:
for j=1:9
disp('请输入初始值:') x=[];
x(1)=input(''); for i=2:30
x(i)=1/x(i-1)+1; end
subplot(3,3,j) i=1:30; plot(i,x)
hold on end
数值实验结果及分析:
讨论
如上图所示,选取不同的初值,解随着迭代次数的增加会收敛到一个稳定值,说明运用此迭代法求解非线性方程组是可行的。选取初始值的不同,只会导致收敛速度的不同。这就提示我们在求解非线性方程的时候,需要选取合理的初始值,可以加快其收敛速度。
第三问:
线性方程组迭代法的收敛性是不依赖初始值选取的。比较线性与非线性问题迭代的差异,有何结论和问题
综合课本上所学过的知识可以知道,线性方程组的迭代法和非线性方程的迭代法是有所差异的。线性方程组迭代法的收敛性是不依赖初始值选取的。用迭代法求解线性方程组,收敛性取决于迭代系数矩阵的谱半径,若谱半径小于1,则无论从什么初始条件出发,线性方程组都是收敛的;若谱半径大于1,则方程组不收敛这些判断与初值的选取无关。
用迭代法求解线性方程的时候,迭代法的收敛性取决于迭代区间里面的迭代函数的一阶导数值。若在整个迭代区间里面对该迭代函数的一阶导数值小于一,这在这个区间里面任选一个初始迭代值,那么都可以最终收敛到函数的精确解。但是若在该区间里面该迭代函数的导数值不满足衡小于一的条件,则可能不收敛。但是这并不能保证从该区间的任何一个初始值开始迭代,都不能能到其收敛解。
实验总结:
通过本次试验的操作,针对同一个函数,运用了三种不同的方法进行迭代求解。通过具体的实践发现,针对方程的不同迭代格式,有的可以得到最终的收敛解,有的不能得到最后的收敛解。使得求线性方程的理论和技巧有了进一步的理解。求解非线性方程不仅与迭代格式有关,还与选取的初始值有关。实验提示我选择合适的初始值,可以加快迭代的过程。