MatLab求解线性方程组
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MatLab解线性方程组一文通
当齐次线性方程AX=0,rank(A)=r 用matlab 中的命令x=null(A, r )即可.其中:r=rank(A) A=[ 1 1 1 1 -3 -1 1 1 0 0 0 1 1 0 -2 0 0 -1 0 -1 -2] 用matlab 求解程序为:A=[1 1 1 1 -3 -1 1;1 0 0 0 1 1 0;-2 0 0 -1 0 -1 -2]; r=rank(A); y=null(A, r ) 得到解为: y=[ 0 -1 -1 0 -1 2 1 1 1 0 0 0 0 2 1 -2 0 1 0 0 0 0 1 0 0 0 0 1] 其列向量为Ay=0的一个基本解 MatLab解线性方程组一文通! -------------------作者:liguoy(2005-2-3) 写在阅读本文前的引子。 一:读者对线性代数与Matlab 要有基本的了解; 二:文中的通用exp.m文件,你须把具体的A和b代进去。 一:基本概念 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,…….xn为n个未知数,s为方程个数。记:A*X=b 7.性方程组的增广矩阵:= 8. A*X=0 (2) 二:基本理论 三种基本变换:1,用一非零的数乘某一方程;2,把一个方程的倍数加到另一个方程;3互换两个方程的位置。以上称初等变换。 消元法(理论上分析解的情况,一切矩阵计算的基础) 首先用初等变换化线性方程组为阶梯形方程组,把最后的一些恒等式”0=0”(如果出现的 话)去掉,1:如果剩下的方程当中最后的一个等式是零等于一非零数,那么方程组无解; 否则有解,在有解的情况下,2:如果阶梯形方程组中方程的个数r等于未知量的个数,那 么方程组有唯一的解,3:如果阶梯形方程组中方程的个数r小于是未知量的个数,那么方 程组就有无穷个解。 用初等变换化线性方程组为阶梯形方程组,相当于用初等行变换化增广矩阵成阶梯形矩阵 。化成阶梯形矩阵就可以判别方程组有解还是无解,在有解的情形下,回到阶梯形方程组 去解。 定理1:线性方程组有解的充要条件为:R(A)=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:当R(A)=R()时有解(R(A)=R()>=n唯一解,R( A)=R()〈n,有无穷解〉;2:当R(A)+1=R()时无解。 II)求特解; III)求通解(无穷解), 线性方程组的无穷解= 对应齐次方程组的通解+非齐次方程组的 一个特解; 注:以上针对非齐次线性方程组,对齐次线性方程组,主要是用到I)、III)步! 四:基本方法 基本思路将在解题的过程中得到体现。 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.m A;b; [L,U]=lu (A); X=U"(L"b) II)Cholesky分解 若A为对称正定矩阵,则Cholesky分解可将矩阵A分解成上三角矩阵和其转置的乘积,即:其中R为上三角阵。 方程A*X=b 变成所以 在Matlab中建立M文件如下 % exp2.m A;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.m A;b;