非线性方程求根

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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,则方程组不收敛这些判断与初值的选取无关。

用迭代法求解线性方程的时候,迭代法的收敛性取决于迭代区间里面的迭代函数的一阶导数值。若在整个迭代区间里面对该迭代函数的一阶导数值小于一,这在这个区间里面任选一个初始迭代值,那么都可以最终收敛到函数的精确解。但是若在该区间里面该迭代函数的导数值不满足衡小于一的条件,则可能不收敛。但是这并不能保证从该区间的任何一个初始值开始迭代,都不能能到其收敛解。

实验总结:

通过本次试验的操作,针对同一个函数,运用了三种不同的方法进行迭代求解。通过具体的实践发现,针对方程的不同迭代格式,有的可以得到最终的收敛解,有的不能得到最后的收敛解。使得求线性方程的理论和技巧有了进一步的理解。求解非线性方程不仅与迭代格式有关,还与选取的初始值有关。实验提示我选择合适的初始值,可以加快迭代的过程。

相关文档
最新文档