小T的网格计算

导航

MatLab解线性方程组一文通(转帖)




MatLab解线性方程组一文通(转帖)
 

当齐次线性方程AX=0,rank(A)=r<n时,该方程有无穷多个解,怎样用MATLAB求它的一个基本
解呢?

用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;
[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 ,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的基础解系,所得C为n-R列矩阵,这n-R列即为对
%应的基础解系
                        % 这种情形方程组通解xx=k(p)*C(:,P)(p=1…n-R)
else X= No solution!    % 判断是否无解
end

QQ书签 新浪ViVi 365Key网摘 天极网摘 spurl 百度收藏 Google书签 diglog Del.icio.us digg 雅虎收藏 Windows Live网摘 收藏到〖就喜欢〗网络收藏夹

posted on 2008-07-22 21:47  Tisty  阅读(2755)  评论(0编辑  收藏  举报