数值分析第一次作业matlab实验报告.doc
几种线性方程组迭代算法的MATLAB实现和性能比较用有限差分方法(五点差分格式)求解正方形域上的Poisson方程边值问题用MATLAB语言编写算法程序求解线性方程组的算法程序,采用下列方法,比较fAu计算结果和算法性能,对计算结果给出讨论。一、算法实现解:由差分格式可得:2,1,,,1,0,,,0,4(1,)(0,)ijijijijijijNNuuhfijN,写成矩阵形式:Au=f111222.,,NNAIvbIAvb其中:41.,14NiiAAR其中:1,2,1,21,2,,2,,,1,,,212(.)(.).,.,()TTNNNTNvuvubhffbhff(1)用Jacobi迭代法求解线性方程组fAufunction[u,k,er,t]=xsgs(n)%Jacobi迭代法0)1,(,),1(,0(22xyuyxfx%U表示方程组的解;h表示步长;A表示迭代矩阵;k表示迭代次数;n表示非边界点数%f表示线性方程组A*U=f的右端矩阵f;e表示允许误差界;er表示迭代误差%t表示计算时间tic;b(2:n+1,2:n+1)=(n+1)^(-2)*2;u=zeros(n+2,n+2);e=10^(-9);fork=1:1000%迭代求解er=0;ub=u;forj=2:n+1fori=2:n+1u(i,j)=(ub(i-1,j)+ub(i+1,j)+ub(i,j-1)+ub(i,j+1)+b(i,j))/4;er=er+abs(u(i,j)-ub(i,j));%估计当前误差endender=er/n^2;ifer1e-9k=k+1;w=a*p;t=q0/(p *w);%求迭代步长x=x+t*p;r=r-t*w;q=r *r;s=q/q0;p=r+s*p;%新的搜索方向q0=q;endtoc;t=toc;x=reshape(x,9,9);endx=0.02560.04130.05080.05600.05770.05600.05080.04130.02560.04130.06860.08590.09550.09860.09550.08590.06860.04130.05080.08590.10880.12160.12580.12160.10880.08590.05080.05600.09550.12160.13640.14120.13640.12160.09550.05600.05770.09860.12580.14120.14620.14120.12580.09860.05770.05600.09550.12160.13640.14120.13640.12160.09550.05600.05080.08590.10880.12160.12580.12160.10880.08590.05080.04130.06860.08590.09550.09860.09550.08590.06860.04130.02560.04130.05080.05600.05770.05600.05080.04130.0256k=12;t=0.0035二、结果分析和总结1、在相同的精度要求下,块Jacobi迭代法迭代次数与点块Jacobi迭代法相比明显要少。这是由于求解的方程组规模比点迭代法小得多,所以速度较快,迭代次数较少。2、在相同的精度要求下,共轭向量法与两种Jacobi迭代法相比更加迅速,迭代次数大大减少,从算法时间复杂度和空间复杂度来看都是非常简单的算法。