应用软件实践实验指导书(实验四)

更新时间:2023-04-14 10:10:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验四Matlab在线性代数中的应用一、实验目的

通过实验加深理解线性代数中的相关理论。学习并掌握特殊矩阵的实现;矩阵

的特征值和特征向量;行列式的求值;矩阵的求逆;线性代数方程组求解。

二、实验环境

硬件环境:计算机一台

软件环境:Matlab 6.0

三、实验内容

1.矩阵的秩.

指令rank(A)将给出矩阵A的秩.

例1:a=[3 2 -1 -3 -2;2 -1 3 1 -3;7 0 5 -1 -8]

a =

3 2 -1 -3 -2

2 -1

3 1 -3

7 0 5 -1 -8

rank(a)

ans =

2

2.方阵的行列式.

指令det(A)给出方阵A的行列式.

例2:

b=[1 2 3 4;2 3 4 1;3 4 1 2;4 1 2 3];

det(b)

ans =

160

det(b')

ans =

160

c=b;c(:,1)=2*b(:,1);

det(c)

ans =

320

det(b(:,[3 2 1 4]))

ans =

-160

d=b;d(2,:);

det(d)

ans =

1

2 160

你能解释上例中的运算结果吗?在这里我们实际上验证了行列式的性质. 3.逆矩阵

指令inv(A)给出方阵A 的逆矩阵,如果A 不可逆,则inv(A)给出的矩阵的元素都是Inf .

例3:设A =????

? ??343122321,求A 的逆矩阵.

解:输入指令:

A=[1 2 3;2 2 1;3 4 3];

B=inv(A)

B =

1.0000 3.0000 -

2.0000

-1.5000 -3.0000 2.5000

1.0000 1.0000 -1.0000

还可以用伴随矩阵求逆矩阵,打开m 文件编辑器,建立一个名为companm 的M-文件文件内容为:

function y=companm(x)

[n,m]=size(x);

y=[];

for j=1:n;

a=[];

for i=1:n;

x1=det(x([1:i-1,i+1:n],[1:j-1,j+1:n]))*(-1)^(i+j);

a=[a,x1];

end

y=[y;a];

end

利用该函数可以求出一个矩阵的伴随矩阵.

输入命令:

C=1/det(A)*companm(A)

C =

1.0000 3.0000 -

2.0000

-1.5000 -3.0000 2.5000

1.0000 1.0000 -1.0000

利用初等变换也可以求出逆矩阵,构造n 行2n 列的矩阵(A E),并进行行初等变换,当把A 变为单位矩阵时,E 就变成了A 的逆矩阵.利用matlab 命令rref 可以求出矩阵的行简化阶梯形.输入命令:

D=[A,eye(3)]

D =

1 2 3 1 0 0

2 2 1 0 1 0

3 4 3 0 0 1

rref(D)

ans =

3 1.0000 0 0 1.0000 3.0000 -2.0000

0 1.0000 0 -1.5000 -3.0000 2.5000

0 0 1.0000 1.0000 1.0000 -1.0000

n m ?线性方程组B AX =的求解是用矩阵除来完成的,B A X \=,当n m =且A 可逆时,给出唯一解.这时矩阵除B A \相当于B A inv *)(;当m n >时,矩阵除给出方程的最小二乘解;当m n <时,矩阵除给出方程的最小范数解. 例4:解方程组:???????=-+=++=+-+=++-1

2121243132

143214321x x x x x x x x x x x x x x 解:输入命令:

a=[1 -1 1 2;1 1 -2 1;1 1 1 0;1 0 1 -1];

b=[1;1;2;1];

x=a\b

x =

0.8333

0.7500

0.4167

0.2500

输入命令:

z=inv(a)*b

z =

0.8333

0.7500

0.4167

0.2500

例5:解方程组:?????=-++-=-++-=--++834324222254321

5432154321x x x x x x x x x x x x x x x

解:方程的个数和未知数不相等,用消去法,将增广矩阵化为行简化阶梯形,如果系数矩阵的秩不等于增广矩阵的秩,则方程组无解;如果系数矩阵的秩等于增广矩阵的秩,则方程组有解,方程组的解就是行简化阶梯形所对应的方程组的解.输入命令:

a=[2 1 1 -1 -2 2;1 -1 2 1 -1 4;2 -3 4 3 -1 8];

rref(a)

ans =

1 0 0 0 0 0

0 1 0 -1 -1 0

0 0 1 0 -1 2

由结果看出,4x ,5x 为自由未知量,方程组的解为:

01=x

4 542x x x +=

532x x +=

例6:解方程组:???????=+--=--=-+-=+--0

320030432142

143214321x x x x x x x x x x x x x x x 解:输入命令:

a=[1 -1 -1 1;1 -1 1 -3;1 -1 0 -1;1 -1 -2 3];

rref(a)

ans =

1 -1 0 -1

0 0 1 -2

0 0 0 0

0 0 0 0

由结果看出,2x ,4x 为自由未知量,方程组的解为:

421x x x +=

432x x = 4、行列式的值

MATLAB 提供的内部函数det 用来计算矩阵的行列式的值。设矩阵A 为一方阵(必须是方阵),求矩阵A 的行列式值的格式为:det(A)。注意:本函数同样能计算通过构造出的稀疏矩阵的行列式的值。

例7 利用随机函数产生一个三阶方阵A ,然后计算方阵之行列式的值。 A=rand(3)

A =

0.9501 0.4860 0.4565

0.2311 0.8913 0.0185

0.6068 0.7621 0.8214

det(A)

ans =

0.4289

四、实验练习题

1.求下列矩阵的秩.

????? ??-321110021

5 ??????? ??4820322513454947513253947543173125 2.求下列矩阵的行列式,如可逆,试用不同的方法求其逆矩阵. ????? ??--285421122

??????? ?

?---620111112132

4321 ??????? ??------111111111111

1111

3.设X ????? ??-111012111=????? ?

?521234311求X .

4.解下列线性方程组.

???????=--+=+-+=+-+=+-+6223312

433862344224221432143214321x x x x x x x x x x x x x x x x

???

????-=+--=+--=-+-21220

1432143214321x x x x x x x x x x x x 5、编一个m 程序,求N 阶方阵A 的行列式的值。

五、实验总结

请根据本次实验的内容写出实验总结,总结一下Matlab 的求解线性代数问题的特点及其基本操作。(要求不少于300字)

本文来源:https://www.bwwdw.com/article/09cq.html

Top