MatLab 解线性方程组一文通!
-------------------作者:liguoy(2005-2-3)
写在阅读本文前的引子。
一:读者对线性代数与 Matlab 要有基本的了解;
二:文中的通用 exp.m 文件,你须把具体的 A和 b 代进去。
一:基本概念
1. N 级行列式 A:|A|等于所有取自不同行不同列的 n 个元素的积的代数和。
2. 矩阵 B:矩阵的概念是很直观的,可以说是一张
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
。
3. 线性无关:一向量组(a 1,a 2 ,…. an )不线性相关,即没有不全为零的数 k1,k2 ,……kn
使得:k1* a 1+k2* a 2 +…..+kn*an=0
4. 秩:向量组的极在线性无关组所含向量的个数称为这个向量组的秩。
5.矩阵 B 的秩:行秩,指矩阵的行向量组的秩;列秩类似。记:R(B)
6.一般线性方程组是指形式: ……(1)
snsnss
nn
nn
bxaxaxa
bxaxaxa
bxaxaxa
*.......**
....................................................
*......**
*.......**
2211
22222121
11212111
其中 x1,x2,…….xn 为 n 个未知数,s为方程个数。记:A*X=b
7. 性方程组的增广矩阵: A =
ssnss
n
n
baaa
baaa
baaa
,,......,
............................
,,.....,
,....,
21
222221
111211
8. A*X=0 …. (2)
二:基本理论
三种基本变换:1,用一非零的数乘某一方程;2,把一个方程的倍数加到另一个方程;
3 互换两个方程的位置。以上称初等变换。
消元法(理论上分析解的情况,一切矩阵计算的基础)
首先用初等变换化线性方程组为阶梯形方程组,把最后的一些恒等式”0=0”(如果出现的
话)去掉,1:如果剩下的方程当中最后的一个等式是零等于一非零数,那么方程组无解;
否则有解,在有解的情况下,2:如果阶梯形方程组中方程的个数 r 等于未知量的个数,那
么方程组有唯一的解,3:如果阶梯形方程组中方程的个数 r 小于是未知量的个数,那么方
程组就有无穷个解。
用初等变换化线性方程组为阶梯形方程组,相当于用初等行变换化增广矩阵成阶梯形
矩阵。化成阶梯形矩阵就可以判别方程组有解还是无解,在有解的情形下,回到阶梯形方程
组去解。
定理 1:线性方程组有解的充要条件为:R(A)=R( )
A
线性方程组解的结构:
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( )时无解。
A
A
A
A
II) 求特解;
III) 求通解(无穷解), 线性方程组的无穷解 = 对应齐次方程组的通解+非齐次方程组的
一个特解;
注:以上针对非齐次线性方程组,对齐次线性方程组,主要是用到 I)、III)步!
四:基本方法
基本思路将在解题的过程中得到体现。
1.(求线性方程组的唯一解或特解),这类问题的求法分为两类:一类主要用于解低阶
稠密矩阵 —— 直接法;一类是解大型稀疏矩阵 —— 迭代法。
1.1 利用矩阵除法求线性方程组的特解(或一个解)
方程:AX=b,解法:X=A\b,(注意此处’\’不是’/’)
例 1-1 求方程组 的解。
1x5x
0x6x5x
0x6x5x
0x6x5x
1x6x5
54
543
432
321
21
解: A = ; = ;b=(1,0,0,0,1)’
5,1,0,0,0
6,5,1,0,0
0,6,5,1,0
0,0,6,5,1
0,0,0,6,5
A
1,5,1,0,0,0
0,6,5,1,0,0
0,0,6,5,1,0
0,0,0,6,5,1
1,0,0,0,6,5
由于>>rank(A)=5,rank( )=5 %求秩,此为 R(A)=R( )>=n 的情形,
A
A
有唯一解。 >>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 为上三角阵。 RRA
方程 A*X=b 变成 bX*RR 所以 )b\R(\RX
在 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;
[Q,R]=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 1,k ,……,k 2 )( rn
% X= k 1*bs(:,1)+ k *bs(:,2)+……+ k2 )( rn *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
>,北京大学数学系编,1978
2.〈〈Matlab6.0 数学
手册
华为质量管理手册 下载焊接手册下载团建手册下载团建手册下载ld手册下载
〉〉, 蒲俊、吉家锋、伊良忠编著,2002