1、两点边值问题的不同迭代法比较及 matlab 实现问题:考虑两点边值问题:.1)(,0(,2yadx容易知道它的精确解为: axey)1(/为了将微分方程离散,把0,1区间 n 等分,令 h=1/n, ,得到差分方1,.2,nihi程,从而得到迭代方程组的系数矩阵 A。211)2()( ahyhyhiii 对 =1,a=1/2,n=100,分别用 jacobi,G-S,超松弛迭代法分别求线性方程组的解,要求 4 位有效数字,然后比较与精确解的误差。对 =0.1, =0.01, =0.001,考虑同样问题。思想:利用书上的迭代公式即可。注意问题:迭代矩阵是 n-1 阶的,不是 n 阶;等号右端向
2、量 b 的最后一项,不是 ah2,而是 ah2-eps-h精确解: axeay)1(/带入 a=1/2, =1代码: clear x=linspace(0,1);truy=(1-0.5)/(1-exp(-1/1)*(1-exp(-x./1)+x.*0.5;figure;plot(x,truy,g,LineWidth,1.5);hold on;Grid图:三种方法的实现Jacobi 法:代码见附录Eps=1结果:迭代次数 k:22273结果与精确解的比较图(绿色粗线是精确解,黑色细线是迭代结果)Eps=0.1结果:迭代次数 k:8753结果与精确解的比较图(绿色粗线是精确解,黑色细线是迭代结果)
3、Eps=0.01结果:迭代次数 k:661结果与精确解的比较图(绿色粗线是精确解,黑色细线是迭代结果)G-S 迭代法:代码见附录Eps=1结果:迭代次数 k:11125结果与精确解的比较图(绿色粗线是精确解,黑色细线是迭代结果)Eps=0.1结果:迭代次数 k:4394结果与精确解的比较图(绿色粗线是精确解,黑色细线是迭代结果)Eps=0.01结果:迭代次数 k:379结果与精确解的比较图(绿色粗线是精确解,黑色细线是迭代结果)超松弛法:代码见附录Eps=1 w=1.56结果:迭代次数 k:3503结果与精确解的比较图(绿色粗线是精确解,黑色细线是迭代结果)Eps=0.1 w=1.56结果:迭
4、代次数 k:1369结果与精确解的比较图(绿色粗线是精确解,黑色细线是迭代结果)Eps=0.01 w=1.56结果:迭代次数 k:131结果与精确解的比较图(绿色粗线是精确解,黑色细线是迭代结果)结果:Jacobi、 G-S、超松弛法,三者都能够取得对精确解的良好逼近,但是,在相同的精度条件下,三者的收敛速度是不一样的,jacobijL(i,j)=-A(i,j);endendendU=zeros(n-1);for i=1:n-1for j=1:n-1if ijL(i,j)=-A(i,j);endendendU=zeros(n-1);for i=1:n-1for j=1:n-1if ijL(i,
5、j)=-A(i,j);endendendU=zeros(n-1);for i=1:n-1for j=1:n-1if ijU(i,j)=-A(i,j);endendendB=D(L+U);g=Db;Lw=(D-w*L)-1)*(1-w)*D+w*U);while 1z=Lw*y+w*(D-w*L)-1*b;if norm(z-y,inf)deltabreak;endy=z;k=k+1;endx=linspace(0,1);truy=(1-a)/(1-exp(-1/eps)*(1-exp(-x./eps)+x.*a;figure;plot(100*x,truy,g,LineWidth,5);hold on;gridhold on;plot(y,b)