jacobi,高斯,牛顿迭代_第1页
jacobi,高斯,牛顿迭代_第2页
jacobi,高斯,牛顿迭代_第3页
jacobi,高斯,牛顿迭代_第4页
jacobi,高斯,牛顿迭代_第5页
免费预览已结束,剩余2页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验二:迭代法求解方程组姓名:徐炜学号:08072105时间:2010-11-17一、实验目的利用jacobi迭代法和gauss-seidei迭代法求解线性方程组,利用newton迭代法求解非线性方程组。在求解过程中,利用这三种方法的迭代原理,根据迭代法的求解流程,写出三种迭代法的迭代格式,学习三种迭代法的原理和解题步骤,并使用 matlab软件求解方程。在 实验过程中,分别取不同的初值进行求解,并做结果分析,解怒同德方程来比较这三种迭代方法的利弊。二、实验步骤newton迭代法1. newton迭代原理考虑非线性方程f(x)=0,求解她的困难在于f是非线性函数。为克服这一困难,考虑它的线 性

2、展开。设当前点为 Xk,在Xk处的Taylor展开式为f x f Xk f Xk x Xk令上式右端为0.解其方程得到f xkxk 1xk-k 0,1f xk此式就称为Newton公式。2. newton迭代法的matlab实现function x=newton(fname,dfname,x0,e,N)3. 途:牛顿迭代法解非线性方程组分f(x)=0%fname和dfname分别表示f(x)及其到函数的 M函数句柄或内嵌函数的表达式x0为迭代初值,e为精度%x为返回数值解,并显示计算过程,设置迭代次数上线N以防发散if nargin<5,N=500;end if nargin<4,

3、e=le-4;end x=x0;x0=x+2*e;k=0;fprintf('It.no=%2d x%2d=%12.9fn',k,k,x) while abs(x0-x)>e&k<Nk=k+1;x0=x;x=x0-feval(fname,x0)/feval(dfname,x0);fprintf('It.no=%2d x%2d=%12.9fn',k,k,x) endif k=N,fprintf(' 已达到迭代次数上限');end在试验中,我用这种方法求 f(x)=x3-3*x-1=0 的解初值为 2 时,新建一个文件,输入:fun

4、=inline('xA3-3*x-1');dfun=inline('3*xA2-3');x=newton(fun,dfun,2,0.5e-6)即可得此方程的解为:It.no= 0 xIt.no= 1 x 1= 1.888888889It.no= 2 x 2= 1.879451567It.no= 3 x 3= 1.879385245It.no= 4 x 4= 1.879385242 x =1.879385241571817e+000初值为 5 时,新建一个文件,输入:fun=inline('xA3-3*x-1');dfun=inline('

5、3*xA2-3');x=newton(fun,dfun,5,0.5e-6)即可得此方程的解为:It.no= 0 xIt.no= 1 x 1= 3.486111111It.no= 2 x 2= 2.562343095It.no= 3 x 3= 2.075046554It.no= 4 x 4= 1.902660228It.no= 5 x 5= 1.879777024It.no= 6 x 6= 1.879385355It.no= 7 x 7= 1.879385242 x =1.879385241571826e+000初值为 8 时,新建一个文件,输入:fun=inline('xA3-

6、3*x-1');dfun=inline('3*xA2-3');x=newton(fun,dfun,8,0.5e-6)即可得此方程的解为:It.no= 0 xIt.no= 1 x 1= 5.423280423It.no= 2 x 2= 3.754505841It.no= 3 x 3= 2.719579123It.no= 4 x 4= 2.148629510It.no= 5 x 5= 1.920654127It.no= 6 x 6= 1.880593045It.no= 7 x 7= 1.879386323It.no= 8 x 8= 1.879385242It.no= 9 x

7、 9= 1.879385242 x =1.879385241571817e+000gauss-seidel实验过程1. gauss-seidel迭代原理将方程组Ax=b (设an0;i 1,2,n)化成等价方程组: (bi aiiaijxj)(i 1,2 ,n)采用迭代格式:-biaiji 1nk 1ka x axij人jj人jj 1j i 1i 1,2, n2. gauss-seidel迭代法的 matlab 实现function x=jacobi(A,b,x0,emg,N)% A是线性方程组的系数矩阵% b是值向量% x0是迭代初始向量% N是迭代上限,诺迭代次数大于>N,则迭代失败

8、% emg是控制精度%用gauss-seidei迭代法求解线性方程组Ax=b的解%k表示迭代次数%x表示用迭代法求得的解线性方程组的近似解if nargin<5N=500;else N=N;endn=length(b);x1=zeros(n,1);x2=zeros(n,1);x1=x0;k=0;r=max(abs(b-A*x1);while r>emgfor i=1:nsum=0;for j=1:nif i=jsum=sum+A(i,j)*x1(j);endendx2(i)=(b(i)-sum)/A(i,i);endr=max(abs(x2-x1);x1=x2;k=k+1;if k

9、>Nwarning(' 迭代次数达到上限! ');return;endendx=x1 ;在试验中,我用此方法求7 1 210A1= 2 8 2 , b= 8的线性方程组的解2296新建一个文件,输入:A=7 1 2;2 8 2;2 2 9;b=10 8 6'x0=0 0 0'emg=10A(-6);x=gaussseidel(A,b,x0,emg)可得此方程的解为:x =1.269406363593758e+0006.210045136516440e-0012.465753606121330e-001改变此初值为 x0=1 2 3 时,可得此方程的解为:x

10、 =1.269406358870516e+0006.210045989420114e-0012.465753427083272e-00110 -2 -21A2= -2 10 -1 , b= 0.5的线性方程组的解-1 -2 31新建一个文件,输入:A=10 -2 -2;-2 10 -1;-1 -2 3;b=10 8 6'x0=0 0 0'emg=10A(-6);x=gaussseidel(A,b,x0,emg) 即可得此方程的解为:x =2.067226785332675e+0001.588235242744889e+0003.747899090274151e+000改变此初值

11、为x0=4 5 6'时, 可得此方程的解为:x =2.067226982320636e+0001.588235338736795e+0003.747899219931409e+000jacobi迭代法的实验过程1. jacobi迭代原理将方程组Ax=b (设a。0;i 1,2 ,n)化成等价方程组:1 ,、K (biaijxj)(i 1,2 , n)aiij i采用迭代格式:k 11kKbiajxji 1,2, naiij 12. Jacobi迭代法的matlab实现function x=jacobi(A,b,x0,emg,N)% A是线性方程组的系数矩阵% b是值向量% x0是迭代初

12、始向量% N是迭代上限,诺迭代次数大于>N,则迭代失败% emg是控制精度%用jacobi迭代法求解线性方程组Ax=b的解%k表示迭代次数%x表示用迭代法求得的解线性方程组的近似解if nargin<5N=500;else N=N;endn=length(b);x1=zeros(n,1);x2=zeros(n,1);x1=x0;k=0;r=max(abs(b-A*x1);while r>emgfor i=1:nsum=0;for j=1:nif i=jsum=sum+A(i,j)*x1(j);endendx2(i)=(b(i)-sum)/A(i,i);endr=max(abs

13、(x2-x1);x1=x2;k=k+1;if k>Nwarning(' 迭代次数达到上限! ');return;endendx=x1 ;在实验中,我用此方法求7 1 210A1= 2 8 2 , b= 8的线性方程组的解,这样可以比2296这两种方法的优越性新建一个文件,输入:A=7 1 2;2 8 2;2 2 9;b=10 8 6'x0=0 0 0'emg=10A(-6);x=jacobi(A,b,x0,emg)即可得此方程的解为:x=1.269406606540146e+0006.210048051684348e-0012.46575563584531

14、2e-001改变此初值为 x0=1 2 3 时,可得此方程的解为:x =1.269406576962693e+0006.210047721178078e-0012.465755330013612e-00110 -2 -21A2= - 2 10 -1 , b= 0.5的线性方程组的解-1 -2 31新建一个文件,输入:A=10 -2 -2;-2 10 -1;-1 -2 3;b=10 8 6'x0=0 0 0'emg=10A(-6);x=jacobi (A,b,x0,emg)即可得此方程的解为: x =2.067226548410933e+0001.588235036073759e

15、+0003.747898577034409e+000改变此初值为 x0=4 5 6 时,可得此方程的解为: x =2.067227297951090e+0001.588235601041707e+0003.747899852657807e+000三、实验分析由 Jacobi 的迭代公式可以看到,在计算机上使用该法线性方程组时, x(m) 分量必须保存到x(m+1) 的分量全部复出后才不再需要。而如果我们每算出 x(m+1) 的每一个分量便在其有段立即用新算出来的分量代替x(m) 对应的分量,这就是Jacobi 的迭代与 gaussseidel 迭代方法的不同之处。我分别用 Jacobi 和 gaussseidel 解

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论