
解线性方程组的基本思想.doc
17页四:基本方法基本思路将在解题的过程中得到体现1.(求线性方程组的唯一解或特解),这类问题的求法分为两类:一类主要用于解低阶稠密矩阵 —— 直接法;一类是解大型稀疏矩阵 —— 迭代法1.1利用矩阵除法求线性方程组的特解(或一个解)方程:AX=b,解法:X=A\b,(注意此处’\’不是’/’)例1-1 求方程组 的解解: A = ; = ;b=(1,0,0,0,1)’由于>>rank(A)=5,rank( )=5 %求秩,此为R(A)=R( )>=n的情形,有唯一解 >>X= A\b %求解 X =(2.2662, -1.7218, 1.0571,-0.5940, 0.3188)’ 或用函数rref求解,>>sv=rref(A:b);所得sv的最后一列即为所要求的解1.2 利用矩阵的LU、QR和cholesky分解求方程组的解 这三种分解,在求解大型方程组时很有用其优点是运算速度快、可以节省磁盘空间、节省内存I) LU分解又称Gauss消去分解,可把任意方阵分解为下三角矩阵的基本变换形式(行交换)和上三角矩阵的乘积即A=LU,L为下三角阵,U为上三角阵。
则:A*X=b 变成L*U*X=b所以X=U\(L\b) 这样可以大大提高运算速度命令 [L,U]=lu (A)在matlab中可以编如下通用m 文件:在Matlab中建立M文件如下% exp1.mA;b;[L,U]=lu (A);X=U\(L\b)II)Cholesky分解若A为对称正定矩阵,则Cholesky分解可将矩阵A分解成上三角矩阵和其转置的乘积,即: 其中R为上三角阵方程 A*X=b 变成 所以 在Matlab中建立M文件如下% exp2.mA;b;[R’,R]=chol(A);X=R\(R’\b)III)QR分解对于任何长方矩阵A,都可以进行QR分解,其中Q为正交矩阵,R为上三角矩阵的初等变换形式,即:A=QR方程 A*X=b 变形成 QRX=b所以 X=R\(Q\b)上例中 [Q, R]=qr(A)X=R\(Q\B)在Matlab中建立M文件如下% exp3.mA;b;[Q,R]=qr(A);X=R\(Q\b)2.求线性齐次方程组的通解(A*X=0)在Matlab中,函数null用来求解零空间,即满足A•X=0的解空间,实际上是求出解空间的一组基(基础解系)。
在Matlab中建立M文件如下% exp4.mformat rat %指定有理式格式输出A;b=0;r=rank(A);bs=null(A,‘r’); %一组基含(n-r)个列向量% k ,k ,……,k % X= k *bs(:,1)+ k *bs(:,2)+……+ k *bs(:,n-r) 方程组的通解pretty(X) %让通解表达式更加精美3 求非齐次线性方程组的通解(A*X=b)非齐次线性方程组需要先判断方程组是否有解,若有解,再去求通解因此,步骤为:第一步:判断AX=b是否有解,(利用基本思路的第一条)若有解则进行第二步第二步:求AX=b的一个特解第三步:求AX=0的通解第四步:AX=b的通解为: AX=0的通解加上AX=b的一个特解在Matlab中建立M文件如下% exp4.mclear allA;b; %输入矩阵A,b[m,n]=size(A);R=rank(A);B=[A b];Rr=rank(B);format rat if R==Rr&R==n % n为未知数的个数,判断是否有唯一解x=A\b;elseif R==Rr&R 3.2 概念与结论1. n阶线性方程组 如果未知量的个数为 n ,而且关于这些未知量x1,x2, … ,xn 的幂次都是一次的(线性的)那末, n 个方程 a11x1+a12x2+ … +a1nxn=b1 ┆ ┆ ┆ (1) an1x1+an2x2+ … +annxn=bn构成一个含n个未知量的线性方程组,称为n阶线性方程组其中,系数a11,…,a1n,a21, …,a2n, …,an1, …,ann 和b1, …,bn 都是给定的常数 方程组(1)也常用矩阵的形式表示,写为 Ax=b其中,A是由系数按次序排列构成的一个n阶矩阵, 称为方程组的系数矩阵,x和b都是n维向量,b称为方程组的右端向量2. n阶线性方程组的解 使方程组(1)中每一个方程都成立的一组数x1*,x2*, …,xn* 称为式(1)的解,把它记为向量的形式,称为解向量.3. 向量范数的三种常用范数4.矩阵的四种常用范数5.谱半径 设 n´n 阶矩阵A的特征值为l i(i=1,2,3……n),则称 r (A) = MAX | li| 1£i£ n为矩阵A的谱半径. 矩阵范数与谱半径之间的关系为: r (A) £ ||A||6.严格(行)对角占优阵A 如果 矩阵 A=(aij)满足 n |aii| > S |aij| i=1,2,……n, j=1,j¹i 则称方阵A是严格(行)对角占优的.7.收敛定理 对任意初始向量x(0)及任意右端向量 g,由迭代x(k+1) =B x(k) +g产生的迭代向量序列{x(k)}收敛的充要条件是谱半径r(B)<18.收敛判别条件 判别条件1: 若||B||<1, 则迭代x(k+1) =B x(k) +g 对任何初始向量x(0)都收敛. 判别条件2: 如果A为严格对角占优阵,则其 Jacobi迭代和Seidel迭代对任何初始向量x(0)都收敛。 判别条件3: 如果A为对称正定阵,则其 Seidel迭代对任何初始向量x(0)都收敛9.迭代法的误差估计 若||B||<1,则对迭代格式 x(k+1) =B x(k) +g 有 3.3 程序中Mathematica语句解释 a*matrix 数a与矩阵matrix相乘matrix1+matrix2 矩阵matrix1和矩阵matrix2相加(注意矩阵的大小相同)matrix1.matrix2 矩阵matrix1和矩阵matrix2相乘(注意矩阵乘法的规则) Transpose[matrix] 求矩阵matrix转置Inverse[matrix] 求矩阵(方阵) matrix 的逆 DiagonalMatrix[list] 使用列表list中的元素生成一个对角矩阵.IdentityMatrix[n] 生成n阶单位矩阵Max[x] 求向量x中元素的最大值3.4 方法、程序、实验 解线性方程组的迭代法是将线性方程组 Ax=b 化为等价线性方程组 x=Bx+f 再由矩阵迭代格式 x(k+1)=Bx (k)+f构造向量序列{x(k)}来求线性方程组解的。 如果得出的向量序列{x(k)}收敛至某个向量x*,则可得该向量x*就是所求方程组 Ax=b 的准确解.线性方程组的迭代法主要有Jocobi迭代法、Seidel迭代法和超松弛(Sor)迭代法1. Jocobi迭代法1) Jocobi迭代法的构造过程 假设aii¹0,依次在第i个方程解出x i , i=1,2,¼,n并令 cij = -aij /aii (i¹j) , gi= bi /aii 就得到如下Jocobi迭代格式: x1(k+1)= c12x2(k)+c13x3(k)+×××× +c1nxn(k)+g1 x2(k+1)=c21x1(k) +c23x3(k)+×××× +c2nxn(k)+g2 xn(k+1)=cn1x1(k) +cn2x2(k)+×××× +cn(n-1)xn-1(k) + gn 若令则有Jocobi迭代的矩阵格式:x(k+1) = BJx(k) +gJBJ 称为Jocobi迭代矩阵 Jocobi迭代可以写成如下紧凑格式:在给定初始迭代向量x(0)后就可以进行Jocobi迭代求解了。 2) Jacobi迭代算法1.输入变量个数n、初值向量x(0)、迭代精度eps、系数矩阵A、常数项b 和迭代最大次数nmax2 For i=1,2,…,n2.1 如果|aii|












