文档详情

微分方程数值解法编程作业三.doc

发布:2016-08-15约7.39千字共9页下载文档
文本预览下载声明
微分方程数值解法编程作业三 用数值方法求解正方形域上的Poisson方程边值问题 解: (一)用Gauss-seidel迭代法求解线性方程组Au=f,具体程序和结果如下: function [u,k,T]=tygs(n) h=1/(n+1); f(2:n+1,2:n+1)=2*h^2; u=zeros(n+2,n+2); e=0.000000001; tic; for k=1:1000 %迭代求解 er=0; for j=2:n+1 for i=2:n+1 Ub=u(i,j); u(i,j)=(u(i-1,j)+u(i+1,j)+u(i,j-1)+u(i,j+1)+f(i,j))/4; er=er+abs(Ub-u(i,j)); %估计误差 end end if er/n^2e,break;end %判断是否达到计算精度,如果达到则退出循环end T=toc k 结果: tygs(8) T = 0.0028 k = 131 ans = 0 0 0 0 0 0 0 0 0 0 0 0.0300 0.0476 0.0577 0.0623 0.0623 0.0577 0.0476 0.0300 0 0 0.0476 0.0780 0.0961 0.1045 0.1045 0.0961 0.0780 0.0476 0 0 0.0577 0.0961 0.1195 0.1305 0.1305 0.1195 0.0961 0.0577 0 0 0.0623 0.1045 0.1305 0.1429 0.1429 0.1305 0.1045 0.0623 0 0 0.0623 0.1045 0.1305 0.1429 0.1429 0.1305 0.1045 0.0623 0 0 0.0577 0.0961 0.1195 0.1305 0.1305 0.1195 0.0961 0.0577 0 0 0.0476 0.0780 0.0961 0.1045 0.1045 0.0961 0.0780 0.0476 0 0 0.0300 0.0476 0.0577 0.0623 0.0623 0.0577 0.0476 0.0300 0 0 0 0 0 0 0 0 0 0 0 (二)用块Gauss-Seidel迭代法求解线性方程组Au=f,具体程序及结果如下: function[u,k,T]=tygsk(n) % u: 方程组的解; k: 迭代次数; n: 非边界点数 % a: 方程组系数矩阵的下对角线元素; b: 方程组系数矩阵的主对角线元素; % c: 方程组系数矩阵的上对角线元素;d: 追赶法所求方程的右端向量; % e: 允许误差界; er:迭代误差; h=1/(n+1); f(2:n+1,2:n+1)=2*h^2; a=-1*ones(1,n); b=4*ones(1,n);c=-1*ones(1,n); u=zeros(n+2,n+2); e=0.000000001; tic; for k=1:1000 er=0; for j=2:n+1 Ub=u(:,j); d(1:n)=f(2:n+1,j)+u(2:n+1,j-1)+u(2:n+1,j+1) ; %
显示全部
相似文档