MATLAB课件 第八章 线性代数基础.docx

上传人:b****5 文档编号:6839942 上传时间:2023-01-11 格式:DOCX 页数:15 大小:72.26KB
下载 相关 举报
MATLAB课件 第八章 线性代数基础.docx_第1页
第1页 / 共15页
MATLAB课件 第八章 线性代数基础.docx_第2页
第2页 / 共15页
MATLAB课件 第八章 线性代数基础.docx_第3页
第3页 / 共15页
MATLAB课件 第八章 线性代数基础.docx_第4页
第4页 / 共15页
MATLAB课件 第八章 线性代数基础.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

MATLAB课件 第八章 线性代数基础.docx

《MATLAB课件 第八章 线性代数基础.docx》由会员分享,可在线阅读,更多相关《MATLAB课件 第八章 线性代数基础.docx(15页珍藏版)》请在冰豆网上搜索。

MATLAB课件 第八章 线性代数基础.docx

MATLAB课件第八章线性代数基础

第八章线性代数基础

1.矩阵的重要运算

1.1方阵的行列式

方阵的行列式的值由det函数计算得出;

【例1】计算矩阵A=[122;235;457]的行列式的值。

>>A=[122;235;457];det(A)

ans=

4

【例2】计算矩阵A=[ab;cd]的行列式的值。

>>symsabcd;A=[ab;cd],det(A)

A=

[a,b]

[c,d]

ans=

a*d-b*c

1.2矩阵的秩

矩阵的秩由rank函数来计算。

【例3】计算矩阵A=[122;235;457]的秩。

>>rank(A)

ans=

3

1.3矩阵的维数和长度

size()%求矩阵的维数(columns&rows)。

length()%求矩阵的长度,矩阵的长度用向量(或columns)数定义。

表示的是矩阵的列数和行数中的最大数。

【例4】>>a=[10,20,42;34,20,4;198,34,6;102030];

>>size(a)

ans=

43

>>length(a)ans=

4

注意size(a)与length(a)两者之间的区别。

1.4矩阵的迹

矩阵的迹定义为该矩阵对角线上的各元素之和,也等于该矩阵的特征值之和。

Matlab调用格式为:

trace();

【例5】求矩阵A=[1230;2203;3211]的迹

>>A=[1230;2203;3211];trace(A)

ans=

32

1.5转置运算

在MATLAB中,矩阵转置运算的表达式和线性代数一样,即对于矩阵A,其转置矩阵的MATLAB表达式为A’或transpose(A)。

但应该注意,在MATLAB中,有几种类似于转置运算的矩阵元素变换运算是线性代数中没有的,他们是:

fliplr(A)将A左右翻转;

flipud(A)将A上下翻转;

rot90(A)将A逆时针方向旋转90。

【例6】求矩阵A=[1230;2203;3211]的转置矩阵

>>A=[1230;2203;3211],B=A'

A=

1230

2203

3211

B=

123

2202

30311

>>transpose(A)

ans=

123

2202

30311

>>rot90(A)

ans=

30311

2202

123

1.6逆矩阵运算

矩阵的逆运算是矩阵运算中很重要的一种运算。

它在线性代数及计算方法中都有很多的论述,而在MATLAB中,众多的复杂理论只变成了一个简单的命令inv()。

【例7】求矩阵A=[12;34]的逆矩阵。

>>A=[12;34],invA=inv(A),A*invA

A=

12

34

invA=

-2.00001.0000

1.5000-0.5000

ans=

1.00000

0.00001.0000

从ans变量的结果可以看出,A的逆矩阵没有求错。

在线性代数教材中,通常采用初等行变换的方式来求解矩阵的逆。

这样的方法可以用以下方法可以实现:

>>A=[12;34],n=size(A);A1=[A,eye(n)];A2=rref(A1);invA=A2(:

1+n

(1):

end)

A=

12

34

invA=

-2.00001.0000

1.5000-0.5000

【例8】求矩阵A=[ab;cd]的逆矩阵。

>>symsabcd;A=[ab;cd];invA=inv(A)

invA=

[d/(a*d-b*c),-b/(a*d-b*c)]

[-c/(a*d-b*c),a/(a*d-b*c)]

1.7广义逆矩阵

由线代知识知道,如果矩阵奇异,则逆矩阵不存在,另外,长方形的矩阵有时也会涉及到求逆的问题,这样就需要定义一种新的“逆矩阵”。

对于矩阵A,如果存在一个矩阵N,满足ANA=A,则N矩阵称为A的广义逆矩阵,记作

,如果A是一个n×m的长方形矩阵,则N为m×n阶的矩阵。

满足这样的广义逆矩阵有无穷多个。

可以证明,对于一个给定的矩阵A,存在一个唯一的矩阵M使得下面的3个条件同时成立:

1)AMA=A2)MAM=M3)AM与MA均为对称矩阵

这样的矩阵M称为矩阵A的Moore-Penrose广义逆矩阵,记作

MATLAB提供了求取矩阵Moore-Penrose广义逆矩阵的函数pinv(),其格式为:

M=pinv(A)%按默认精度求取Moore-Penrose广义逆矩阵

M=pinv(A,e)%按指定精度e求取Moore-Penrose广义逆矩阵

其中,e为判0用误差限,如果省略此参数,则判0用误差限选用机器的精度eps.如果A是非奇异方阵,则该函数得出的结果就是矩阵的逆矩阵,但这样求解的速度将明显慢于函数inv().

【例9】求奇异矩阵A=[12;36]的广义逆矩阵

>>pinv(A);M=pinv(A),A*M*A,M*A*M,A*M,M*A

M=

0.02000.0600

0.04000.1200

ans=

1.00002.0000

3.00006.0000

ans=

0.02000.0600

0.04000.1200

ans=

0.10000.3000

0.30000.9000

ans=

0.20000.4000

0.40000.8000

从结果可以看出,所求的广义逆矩阵满足以上的三个条件。

【例10】求矩阵A=[12;34]的广义逆矩阵。

>>A=[12;34];invA=pinv(A)

invA=

-2.00001.0000

1.5000-0.5000

1.8伴随矩阵

Matlab中没有直接求矩阵的伴随矩阵的函数,引入伴随矩阵的概念,实际上是为了求逆阵,一般数学软件都有求逆阵的函数。

如果A可逆,则A*=|A|A^(-1),伴随矩阵是容易求得的;

【例11】求矩阵A=[101;212;046]的伴随矩阵。

>>A=[101;212;046],bsjz=det(A)*inv(A)

A=

101

212

046

bsjz=

-24-1

-1260

8-41

下面是自编的函数bansui(),可以直接求得伴随矩阵,但注意一定要将该函数保存在搜索路径之下。

functionB=bansui(A)

ce=poly(eig(A));

cesize=max(size(ce));

p=[0ce(1:

(cesize-1))];

s=(-1)^(max(size(A))+1);

B=s*polyvalm(p,A);

【例12】求矩阵A=[101;212;046]的伴随矩阵

>>A=[101;212;046];bsjz=bansui(A)

bsjz=

-2.00004.0000-1.0000

-12.00006.00000

8.0000-4.00001.0000

>>det(A)

ans=

6

>>A*bsjz

ans=

6.000000.0000

0.00006.00000.0000

00.00006.0000

从上面结果可以看出,A*bsjz=det(A)*E

【例13】求奇异矩阵A=[12;36]的伴随矩阵

>>A=[12;36];bsjz=bansui(A)

bsjz=

6-2

-31

2.线性方程组求解

我们将线性方程的求解分为两类:

一类是方程组求唯一解或求特解,另一类是方程组求无穷解即通解。

可以通过系数矩阵的秩来判断:

若系数矩阵的秩和增广矩阵的秩相等且等于n(n为方程组中未知变量的个数),则有唯一解;

若系数矩阵的秩和增广矩阵的秩相等且r

线性方程组的无穷解=对应齐次方程组的通解+非齐次方程组的一个特解;其特解的求法属于解的第一类问题,通解部分属第二类问题。

2.1求线性方程组的唯一解或特解(第一类问题)

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

方程:

AX=b

解法1:

X=A\b

【例14】求方程组的解

解:

>>A=[56000

15600

01560

00156

00015];

B=[10001]';

R_A=rank(A)%求秩

X=A\B%求解或X=inv(A)*B

运行后结果如下

R_A=

5

X=

2.2662

-1.7218

1.0571

-0.5940

0.3188

这就是方程组的解。

解法2.用函数rref求解:

>>C=[A,B]%由系数矩阵和常数列构成增广矩阵C

>>R=rref(C)%将C化成行最简行

R=

1.000000002.2662

01.0000000-1.7218

001.0000001.0571

0001.00000-0.5940

00001.00000.3188

则R的最后一列元素就是所求之解。

【例15】求方程组

的一个特解。

解:

>>A=[11-3-1;3-1-34;15-9-8];

>>B=[140]';

>>X=A\B%由于系数矩阵不满秩,该解法可能存在误差。

X=[00-0.53330.6000]’(一个特解近似值)。

此时,不能采用如下命令:

x=inv(A)*B,因为inv要求矩阵为方阵。

而用命令:

x=pinv(A)*B

x=[0.3504-0.0916-0.38810.4232],可用A*x验算

注:

如果矩阵A不是一个方阵,或者A是一个非满秩的方阵时,A没有逆矩阵,但可以找到一个与A的转置同型的矩阵B,使得A*B*A=A,B*A*B=B,此时称B为A的伪逆,也称广义逆矩阵。

使用:

pinv(A)

若用rref求解,则比较精确:

>>A=[11-3-1;3-1-34;15-9-8];

B=[140]';

>>C=[A,B];%构成增广矩阵

>>R=rref(C)

R=

1.00000-1.50000.75001.2500

01.0000-1.5000-1.7500-0.2500

00000

由此得解向量X=[1.2500–0.250000]’(一个特解)。

2.2求线性齐次方程组的通解

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

对齐次线性方程组Ax=0;

格式z=null(A)%z的列向量为方程组的正交规范基,满足

z=null(A,’r’)%z的列向量是方程AX=0的有理基

如果A为数值矩阵,调用null(A,’r’);或调用null(A)

如果A为符号矩阵,只能调用null(A)

【例16】求解方程组的通解:

解:

>>A=[111-1;1-11-3;1311];

>>formatrat%指定有理式格式输出

>>B=null(A,'r')%求解空间的有理基

运行后显示结果如下:

B=

-12

0-1

10

01

即方程组的通解为:

若调用:

c=null(A),则应:

>>formatshort

>>c=null(A)

得:

c=

-0.50000.7071

-0.1667-0.4714

0.83330.2357

0.16670.4714

或通过行最简型得到基:

>>B=rref(A)

B=

101-2

0101

0000

2.3求非齐次线性方程组的通解

非齐次线性方程组需要先判断方程组是否有解,若有解,再去求通解。

因此,步骤为:

第一步:

判断AX=b是否有解,若有解则进行第二步

第二步:

求AX=b的一个特解

第三步:

求AX=0的通解

第四步:

AX=b的通解=AX=0的通解+AX=b的一个特解。

【例17】求方程组的解

解:

>>A=[101-1;0113;0211;14-76];

B=[1-2-80]';

R_A=rank(A)%求秩

X=A\B%求解或X=inv(A)*B

回车可得:

R_A=

4

X=

3.0000

-4.0000

-1.0000

1.0000

或采用简化行阶梯形方法:

>>C=[A,B];R=rref(C)

R=

10003

0100-4

0010-1

00011

则R的最后一列元素就是所求之解。

【例18】求解方程组的通解:

解法一:

在Matlab编辑器中建立M文件如下:

A=[11-3-1;3-1-34;15-9-8];

b=[140]';

B=[Ab];

n=4;

R_A=rank(A)

R_B=rank(B)

formatrat

ifR_A==R_B&R_A==n

X=A\b

elseifR_A==R_B&R_A

X=A\b

C=null(A,'r')

else

X='Equationhasnosolves'

end

运行后结果显示为:

R_A=

2

R_B=

2

Warning:

Rankdeficient,rank=2tol=8.8373e-015.

>InD:

\Matlab\pujun\lx0723.matline11

X=

0

0

-8/15

3/5

C=

3/2-3/4

3/27/4

10

01

所以原方程组的通解为X=k1

+k2

+

解法二:

用rref求解

A=[11-3-1;3-1-34;15-9-8];

b=[140]';

B=[Ab];

C=rref(B)%求增广矩阵的行最简形,可得最简同解方程组。

运行后结果显示为:

C=

10-3/23/45/4

01-3/2-7/4-1/4

00000

对应齐次方程组的基础解系为:

非齐次方程组的特解为:

所以,原方程组的通解为:

X=k1

+k2

+

【例19】:

编写程序求解AX=b,要求由人机交互模式输入矩阵A,b,并根据判定定理给出各种情况的求解答案。

解:

编写程序如下:

A=input('PleaseinputmatrixA:

');

b=input('Pleaseinputmatrixb:

');

B=[A,b];

n=size(A);

R_A=rank(A);

R_B=rank(B);

formatrat

ifR_A==R_B&R_A==n

(2)

X=A\b

elseifR_A==R_B&R_A

(2)

X=pinv(A)*b

C=null(A,'r')

else

X='equitionnosolve'

end

编写完后,保存为mm.m文件,然后在窗口输入mm,回车后按提示输入系数矩阵和常数列,即可自动判定方程组解的情况并求出方程组的解。

>>mm

PleaseinputmatrixA:

[12;34]

Pleaseinputmatrixb:

[1;2]

X=%方程组有唯一解的情况

0

1/2

>>mm

PleaseinputmatrixA:

[12;24]

Pleaseinputmatrixb:

[1;2]

X=%方程组有无穷多解的情况

1/5

2/5

C=

-2

1

>>mm

PleaseinputmatrixA:

[12;24]

Pleaseinputmatrixb:

[1;3]

X=%方程组无解的情况

equitionnosolve

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 调查报告

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1