搜档网
当前位置:搜档网 › 利用MATLAB求线性方程组

利用MATLAB求线性方程组

《MATLAB语言》课成论文

利用MATLAB求线性方程组

姓名:郭亚兰

学号:

专业:通信工程

班级:2010级通信工程一班

指导老师:汤全武

学院:物电学院

完成日期:2011年12月17日

利用MATLAB 求解线性方程组

( 郭亚兰 2010 级通信一班 )

【摘要】在高等数学及线性代数中涉及许多的数值问题,未知数的求解,微积分,不定积分,线性方程组的求解等对其手工求解都是比较复杂,而MATLAB 语言正是处理线性方程组的求解的很好工具。线性代数是数学的一个分支,它的研究对象是向量,向量空间(或称线性空间),线性变换和有限维的线性方程组。因而,线性代数被广泛地应用于抽象代数和泛函分析中;由于科学研究中的非线性模型通常可以被近似为线性模型,使得线性代数被广泛地应用于自然科学和社会科学中。线性代数是数学的一个分支,它的研究对象是向量,向量空间(或称线性空间),线性变换和有限维的线性方程组。因而,线性代数被广泛地应用于抽象代数和泛函分析中;由于科学研究中的非线性模型通常可以被近似为线性模型,使得线性代数被广泛地应用于自然科学和社会科学中。线性代数是讨论矩阵理论、与矩阵结合的有限维向量空间及其线性变换理论的一门学科。

【关键字】线性代数 MATLAB 语言 秩 矩阵 解

一、基本概念

1、

N 级行列式A :A 等于所有取自不同性不同列的n 个元素的积的代数和。 2、

矩阵B :矩阵的概念是很直观的,可以说是一张表。 3、 线性无关:一向量组(a1,a2,…,an )不线性相关,既没有不全为零的数k1,k2,………kn

使得:k1*a1+k2*a2+………+kn*an=0

4、

秩:向量组的极在线性无关组所含向量的个数成为这个向量组的秩。 5、 矩阵B 的秩:行秩,指矩阵的行向量组的秩;列秩类似。记:R(B)

6、 一般线性方程组是指形式:???????=+++=+++=*+++s

sn s s n n n n b a x a x a b x a x a x a b x a x a x n 22112222212111212111x ********a 二、基本理论

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

消元法

首先用初等变换化线性方程组为阶梯形方程组:1,如果剩下的方程当中最后的一个等式等于一非零数,那么方程组无解;否则有解;2,如果阶梯形方程组中方程的个数r 等于未知量的个数,那么方程组有唯一的解;3,如果阶梯形方程组中方程的个数r 小于未知量的个数,那么方程组就

有无穷个解。

定理1:线性方程组有解的充要条件为:R(A)=R(A,b)

线性方程组解的结构:

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

2:对非齐次线性方程组

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

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

定理2 如果R0是方程组(1)的一个特解,那么方程组(1)的任一个解R 都可以表成;R=R0+V …. 其中V 是(2)的一个解,因此,对方称(1)的任一特解R0,当v 取遍它的全部解时,(3)就给出了(1)全部解。

三:基本思路

线性方程的求解分为两类:一类是方程求唯一解或求特解;一类是方程组

求无穷解即通解。

(1)判断方程组解的情况。1:当R(A)=R(B)时,有解(R(A)=R(A ,b))>=n

唯一解,R(A)=R(A,b)(n,有无穷解);2:当R(B)+1=R(A ,b)时无解。

(2)求特解;

(3)求通解(无穷解),线性方程组的无穷解=对应齐次方程组的通解+非齐

次方程组的一个特解;

注:以上针对非齐次线性方程组,对齐次线性方程组,主要使用到(1),(2)步!

四、基本方法

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

1、 (求线性方程组的唯一解或特解),这类问题的求法分为两类:一类主要用于解低阶稠密

矩阵——直接法;一类是解大型稀疏矩阵——迭代法。

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

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

(1)求方程组 ???????=+-+=-+-=+-+=+--9

796342264422243214321

43214321x x x x x x x x x x x x x x x x

命令如下:

A=[2,-1,-1,1;1,1,-2,1;4,-6,2,-2;3,6,-9,7];%产生4x4阶系数矩阵

b=[2,4,4,9]'; %对矩阵进行转置

x=A\b %进行左初运算

x =

NaN

Inf

Inf

曾介绍过利用矩阵求逆来解线性方程组,即其结果于使用左除是相同的。

2、利用矩阵的分解求线性方程组

矩阵分解是指根据一定的原理用某种运算将一个矩阵分解成若干个矩阵的乘积。常见矩阵分解如,LU,QR 和Cholesky 分解求方程组的解,这三种分解,再求大型方程组是很有用。其优点是运算速度快,可以节省磁盘空间,节省内存。

(1)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 文件如下

%

A;b;

[L,U]=lu(A); %产生一个三角矩阵A 和一个变换形式的下三叫矩阵L (交 换行),使之满足A=LU

X=U\(L\b) %L 右乘b 的结果再右乘U 得到x 的值

(2)求方程组 ?????=++-=++-=--+63773235214321

43214321x x x x x x x x x x x x

命令如下:

A=[1,1,-1,-1;2,-5,3,2;7,-7,3,1]; %产生3x4阶系数矩阵

b=[1,3,6]'; %对矩阵进行转置

[L,U]=lu(A); %产生一个三角矩阵A 和一个变换形式的

下三叫矩阵L (交换行),使之满足A=LU

x=U\(L\b) %L 右乘b 的结果再右乘U 得到x 的值

x =

rank = 2, tol = .

采用第二种格式分解,

在MATLAB 建立M 文件如下

%

A;b;

[L,U,P]=lu(A);

X=U\(L\P*b)

(3)求方程组 ?????=++-=++-=--+73773235214321

43214321x x x x x x x x x x x x

命令如下:

A=[1,1,-1,-1;2,-5,3,2;7,-7,3,1];%产生3x4阶矩阵

b=[1,3,7]'; %对矩阵进行转置

[L,U,P]=lu(A); %产生一个三角矩阵A 和一个下三角阵L 以

及一个置换矩阵P,使之满足PA=LU

x=U\(L\P*b) %x 的值

x =

rank = 2, tol = .

(II)Cholesky 分解

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

方程 A*X=b 变成 R ’*R*X=b 所以 X=R\(R ’\b)

在MATLAB 中建立M 文件如下

%

A;b;

[R ’,R]=chol(A); %产生一个上三角矩阵R ,使R ’R=A

X=R\(R ’\b) %x 的值

(4)求方程组 ?????=+--=-+-=+--5.0321304321

43214321x x x x x x x x x x x x

命令如下:

A=[1,-1,-1,1;1,-1,1,-3;1,-1,-2,3]; %产生3x4阶的矩阵

b=[0,1,]'; %对矩阵进行转置

[R'R]=chol(A); %产生一个上三角矩阵R ,使R'R=A

x=R\(R'\b) %x 的值

Error using ==> chol

Matrix must be square.

命令执行时,此格式将不出现错误信息。当A 为对称正定时,则p=0;

否则p 为一个正整数。如果X 未满秩矩阵,则R 为一个阶数为q=p-1的上三角

阵,且满足R ’R=A(1:q,1:q)。

(3)QR 分解

对于任何长方矩阵A,都可以进行QR 分解,其中Q 为正交矩阵,R 为上三角

矩阵的初等变换形式,即:A=QR

方程 A*X=b 变形成 QRX=b

所以 X=R\(Q\b)

上例中 [Q,R]=qr(A) %产生一个正交矩阵Q 和一个上三角矩阵R ,使之A=QR

X=R\(Q\B) %x 的值

在MATLAB 中建立M 文件如下

相关主题