资源描述
第三章线性方程组求解的数值方法,3.1Gauss消去法与矩阵的LU分解,3.2Cholesky分解,3.3向量范数与矩阵范数,3.4古典迭代法的构造,3.5迭代法的分析,3.6超松弛迭代(SOR)及分块迭代方法,3.7线性方程组的条件,3.8稀疏矩阵的计算,线性方程组求解的数值方法,3.1Gauss消去法与矩阵的LU分解,基本思想:用逐次消去未知数的方法把原方程组化为三角形方程组再求解。消元:用初等变换将原方程组的系数矩阵化为三角形矩阵(简称三角阵)再求解的方法。回代:解出三角形方程组的最后一个方程,将求得的值逐步往前一个方程代入的方法。,消元,为什么选主元,避免方法:高斯主元消元法,functionX=uptrbk(A,b)%A是一个n阶矩阵。%b是一个n维向量。%X是线性方程组AX=b的解。NN=size(A);X=zeros(1,N+1);Aug=Ab;forp=1:N-1Y,j=max(abs(Aug(p:N,p);C=Aug(p,:);Aug(p,:)=Aug(j+p-1,:);Aug(j+p-1,:)=C;,高斯主元消去法的MATLAB实现,ifAug(p,p)=0A是奇异阵,方程无惟一解breakendfork=p+1:Nm=Aug(k,p)/Aug(p,p);Aug(k,p:N+1)=Aug(k,p:N+1)-m*Aug(p,p:N+1);endend%这里用到程序8-1中定义的函数backsub来进行回代。X=backsub(Aug(1:N,1:N),Aug(1:N,N+1);,A=0.00123;-13.7124.623;-21.0725.643;b=123;uptrbk(A,b),比较计算结果:主元消元法-0.4904-0.05100.3675用x=Ab-0.4904-0.05100.3675一般消元法-0.4-0.099800.4,functionX=backsub(A,b)%A是一个n阶上三角非奇异阵。%b是一个n维向量。%X是线性方程组AX=b的解。n=length(b);X=zeros(n,1);X(n)=b(n)/A(n,n);fork=n-1:-1:1X(k)=(b(k)-A(k,k+1:n)*X(k+1:n)/A(k,k);End,用回代法求解上三角线性方程组AX=B,其中A为非奇异。,矩阵的LU分解,functionX=lufact(A,b)%A为n阶矩阵。%b是n维向量。%X是所求的AX=b的解。N,N=size(A);X=zeros(N,1);Y=zeros(N,1);C=zeros(1,N);R=1:N;forp=1:N-1max1,j=max(abs(A(p:N,p);C=A(p,:);A(p,:)=A(j+p-1,:);A(j+p-1,:)=C;d=R(p);R(p)=R(j+p-1);R(j+p-1)=d;ifA(p,p)=0A是奇异阵,方程组无惟一解,breakendfork=p+1:Nmult=A(k,p)/A(p,p);A(k,p)=mult;A(k,p+1:N)=A(k,p+1:N)-mult*A(p,p+1:N);endendY(1)=b(R(1);fork=2:NY(k)=b(R(k)-A(k,1:k-1)*Y(1:k-1);endX(N)=Y(N)/A(N,N);fork=N-1:-1:1X(k)=(Y(k)-A(k,k+1:N)*X(k+1:N)/A(k,k);end,3.2Cholesky分解(平方根法),3.3向量范数与矩阵范数,向量的收敛,矩阵范数,常用的矩阵范数,矩阵的收敛,谱半径,3.4三种迭代法,雅可比迭代法的Matlab程序,functionX=jacobi(A,b,P,delta,max1)%A是n维非奇异阵。%b是n维向量。%P是初值。%delta是误差界。%max1是给定的迭代最高次数。%X为所求的方程组AX=b的近似解。N=length(b);fork=1:max1forj=1:NX(j)=(b(j)-A(j,1:j-1,j+1:N)*P(1:j-1,j+1:N)/A(j,j);enderr=abs(norm(X-P);P=X;if(errdelta)breakendendX=X;k,err;,functionX=gseid(A,b,P,delta,max1)%A是n维非奇异阵。%b是n维向量。%P是初值。%delta是误差界。%max1是给定的迭代最高次数。%X为所求的方程组AX=b的近似解。N=length(b);fork=1:max1forj=1:Nifj=1X(1)=(b(1)-A(1,2:N)*P(2:N)/A(1,1);elseifj=NX(N)=(b(N)-A(N,1:N-1)*(X(1:N-1)/A(N,N);elseX(j)=(b(j)-A(j,1:j-1)*X(1:j-1)-A(j,j+1:N)*P(j+1:N)/A(j,j);endenderr=abs(norm(X-P);P=X;if(errdelta)breakendendX=X;err,k,塞德尔迭代法的迭代程序:,3.5迭代法的收敛性,
展开阅读全文