原创 (狂补数学2)使用MATLAB解线性方程

2009-3-25 22:25 4467 11 11 分类: 软件与OS
MatLab解线性方程组一文通点击下载



 



一:基本概念



1.  N级行列式A|A|等于所有取自不同行不同列的n个元素的积的代数和。



2.  矩阵B:矩阵的概念是很直观的,可以说是一张表。



3.  线性无关:一向量组(a,a,…. a)不线性相关,即没有不全为零的数k,k,……kn使得:k1* a+k2* a+…..+kn*an=0



4. 秩:向量组的极在线性无关组所含向量的个数称为这个向量组的秩。



 



5.矩阵B的秩:行秩,指矩阵的行向量组的秩;列秩类似。记:R(B)



6.一般线性方程组是指形式:……1



其中x1,x2,…….xnn个未知数,s为方程个数。记:A*X=b



7.  性方程组的增广矩阵:=



8. A*X=0 …. 2



 



二:基本理论



    三种基本变换:1,用一非零的数乘某一方程;2,把一个方程的倍数加到另一个方程;3互换两个方程的位置。以上称初等变换。



 



消元法(理论上分析解的情况,一切矩阵计算的基础)



首先用初等变换化线性方程组为阶梯形方程组,把最后的一些恒等式”0=0”(如果出现的话)去掉,1:如果剩下的方程当中最后的一个等式是零等于一非零数,那么方程组无解;否则有解,在有解的情况下,2:如果阶梯形方程组中方程的个数r等于未知量的个数,那么方程组有唯一的解,3:如果阶梯形方程组中方程的个数r小于是未知量的个数,那么方程组就有无穷个解。



用初等变换化线性方程组为阶梯形方程组,相当于用初等行变换化增广矩阵成阶梯形矩阵。化成阶梯形矩阵就可以判别方程组有解还是无解,在有解的情形下,回到阶梯形方程组去解。



定理1线性方程组有解的充要条件为:RA=R



 



线性方程组解的结构:



1对齐次线性方程组,a: 两个解的和还是方程组的解;b: 一个解的倍数还是方程组的解。定义:齐次线性方程组的一组解u1,u2,….ui
称为齐次线性方程组的一个基础解系,如果:齐次线性方程组的任一解都能表成u1,u2,….ui的线性组合,且u1,u2,….ui线性无关。



2对非齐次线性方程组



(I)                  
方程组(1) 的两个解的差是(2)的解。



(II)              
方程组(1) 的一个解与(2)的一个解之和还是(1)的解。



定理2 如果r0是方程组(1)的一个特解,那么方程组(1)的任一个解r都可以表成:



r=ro+v…….(3)



其中v是(2)的一个解,因此,对方程(1)的任一特解ro,v取遍它的全部解时,(3) 就给出了(1)的全部解。



 



三:基本思路



线性方程的求解分为两类:一类是方程组求唯一解或求特解;一类是方程组求无穷解即通解。



I)             
判断方程组解的情况。1:当RA=R)时 有解(RA=R>=n唯一解,RA=R)〈n,有无穷解〉;2:当RA+1=R)时无解。



II)         
求特解;



III)       求通解(无穷解), 线性方程组的无穷解 = 对应齐次方程组的通解+非齐次方程组的一个特解;



:以上针对非齐次线性方程组,对齐次线性方程组,主要是用到I)III)步!



四:基本方法



基本思路将在解题的过程中得到体现。



1.(求线性方程组的唯一解或特解),这类问题的求法分为两类:一类主要用于解低阶稠密矩阵 —— 直接法;一类是解大型稀疏矩阵 —— 迭代法。



11利用矩阵除法求线性方程组的特解(或一个解)



方程:AX=b,解法:X=A\b(注意此处’\’不是’/’)



1-1 
求方程组的解。



:  A =;=b=(1,0,0,0,1)’



由于>>rank(A)=5,rank()=5  %求秩,此为RA=R>=n的情形,有唯一解。       >>X= A\b    %求解 X =(2.2662,
-1.7218, 1.0571,-0.5940, 0.3188)’
或用函数rref求解,>>sv=rref(A:b);所得sv的最后一列即为所要求的解。



 



12 利用矩阵的LUQRcholesky分解求方程组的解 ,这三种分解,在求解大型方程组时很有用。其优点是运算速度快、可以节省磁盘空间、节省内存。



I) LU分解又称Gauss消去分解,可把任意方阵分解为下三角矩阵的基本变换形式(行交换)和上三角矩阵的乘积。即A=LUL为下三角阵,U为上三角阵。



则:A*X=b        变成L*U*X=b



所以X=U\(L\b)   这样可以大大提高运算速度。命令  [LU]=lu (A)



matlab中可以编如下通用m 文件:



 



Matlab中建立M文件如下



% exp1.m



A;b;



[LU]=lu (A);



X=U\(L\b)



 



IICholesky分解



A为对称正定矩阵,则Cholesky分解可将矩阵A分解成上三角矩阵和其转置的乘积,即:  其中R为上三角阵。



方程  A*X=b  变成  所以 



Matlab中建立M文件如下



% exp2.m



A;b;



[R’R]=chol(A);



X=R\(R’\b)



 



IIIQR分解



对于任何长方矩阵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.m



A;b;



[QR]=qr(A);



X=R\(Q\b)



2.求线性齐次方程组的通解(A*X=0)



Matlab中,函数null用来求解零空间,即满足A·X=0的解空间,实际上是求出解空间的一组基(基础解系)。



 



Matlab中建立M文件如下



% exp4.m



format
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.m



clear all



A;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<n      %判断是否有无穷解



x=A\b                 %求特解



C=null(A,'r')         %AX=0的基础解系,所得Cn-R列矩阵,这n-R列即为对



%应的基础解系



                     
%
这种情形方程组通解xx=k(p)*C(:,P)(p=1…n-R)



else X='No solution!' % 判断是否无解



end



 



参考文献



1<<高等代数>>,北京大学数学系编,1978



2.〈〈Matlab6.0数学手册〉〉, 蒲俊、吉家锋、伊良忠编著,2002




PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
11
关闭 站长推荐上一条 /1 下一条