线性代数实验报告汇总x

线性代数实验报告

线性代数实验报告

数学实验报告题目

第一次实验题目

一4

-2

2〕

一1

3

41

1.已知A =

-3

0

5

,B =

-2

0

-3

,在MATLAB命令窗口中建立

1

5

3 一

2

-1

1 一

实验目的

1 ?熟悉MATLAB的矩阵初等运算;

2?掌握求矩阵的秩、逆、化最简阶梯形的命令;

3 ?会用MABLAB求解线性方程组

问题求解和程序设计流程

矩阵并对其进行以下操作:

计算矩阵A的行列式的值det(A)二?

分别计算下列各式:

2A-B、 A B 和 A. B、 ABJ、 A」B、 A2、 AT

解:

A、B

(1)编写程序如下:

A=[4 -2 2;-3 0 5;1 5 3];

B=[1 3 4;-2 0 -3;2 -1 1];

a=det(A)

运行结果:

a =

-158

(2)编写程序如下:

C=2*A-B

D=A*B

E=A.*B

F=A/B

G=A\B

H=A*A

K=A' 运行结果:

C =

7-7 0

-4 0 13

0

11

5

D =

12

10

24

7 -14

-7

-3

0

-8

E =

4

-6

8

6

0

-15

2

-5

3

F =

0

0

2.0000

-2.7143

-8.0000

-8.1429

2.4286

3.0000

2.2857

G =

0.4873

0.4114

1.0000

0.3671

-0.4304

0

-0.1076

0.2468

0

H =

24

2

4

-7

31

9

-8

13

36

K =

4

-3

1

-2

0

5

2

5

3

在MATLAB中分别利用矩阵的初等变换及函数 rank、函数inv求下列矩阵的秩:

解:(1)■13【一1-6

解:

(1)

■1

3

【一1

-6

-5

21

0

-11 2 4

编写程如下:

求 Rank(A)=?

(2) B =

1【

0

0

2

format rat

A=[1 -6 3 2;3 -5 4 0;-1 -11 2 4]; rref(A)

运行结果:

ans =

1

0

0

-8/5

0

1

0

0

0

0

1

6/5

由a经初等变换后得到的行最简型可知:

A的秩为3。

A=[1 -6 3 2;3 -5 4 0;-1 -11 2 4];

ran k(A)

直接利用rank函数求出A的秩为3.

编写程序如下:

B=[3 5 0 1;1 2 0 0;1 0 2 0;1 2 0 2]; in v(B)

运行结果:

ans =

2.0000-1.0000-1.0000-4.00002.50002.0000-0.5000

2.0000

-1.0000

-1.0000

-4.0000

2.5000

2.0000

-0.5000

-1.0000

0.5000

0.5000

0.5000

0.5000

在MATLAB中判断下列向量组是否线性相关,并找出向量组中的一个最大线性 无关组:冷=1,1,3,2 ,: 2 二 T,1,T,3 宀3 = 5,-2,8,9,— 一1,3,1,7

解:编写程序如下:

format rat

A=[1 -1 5 -1;1 1 -2 3;3 -1 8 1;2 3 9 7]; a=det(A);

if a==0

fprintf('以上矩阵线性相关') b=rref(A)

else

fprintf('以上矩阵线性无关')

end

运行结果:

以上矩阵线性相关

b =

12/1159/33-2/33 TOC \o "1-5" \h \z 1 0 0

12/11

59/33

-2/33

0 1 0

0 0 1

0 0 0

分析:由运行结果可知:该向量组的一个极大无关组为:

4、在MATLAB中判断下列方程组解的情况,若有多个解,写出通解:

(1)X"! _x

(1)

X"! _x2 +4x3 _2x4 = 0

% —x2 —x3 +2% =0

3x1 x2 7x3 _2x4 = 0

为-3x2 -12x3 6x4 = 0

2x1 3x2 x3 = 4

⑵ X1 - 2x2 + 4x3 = -5

"3% + 8x2 - 2x3 = 13

4为 - x2 9x3 = -6

解:(1)编写程序如下:format ratA=[1 -1 4 -2;1 -1 -1 2;3 1 7 -2;1 -3 -12 6]; a=ra nk(A)if a==4fprintf( '

解:(1)编写程序如下:

format rat

A=[1 -1 4 -2;1 -1 -1 2;3 1 7 -2;1 -3 -12 6]; a=ra nk(A)

if a==4

fprintf( '该方程组只有零解\n'

else a<4

fprintf( '该方程组有多组解\n'

a=null(A, 'r');

syms k1 k2

x=k1*a(:,1)+k2*a(:,2)

end

运行结果:

4

该方程组只有零解

(2)编写程序如下:

运行结果format ratB=[2 3 1 4;1

运行结果

format rat

B=[2 3 1 4;1 -2 4 -5;3 8 -2 13;4 -1 9 -6]; rref(B)

ans =

10

1

0

0

0

分析:

1 -1 2

TOC \o "1-5" \h \z 0 0 0

0 0 0

由B的增广矩阵的最简型可知,该方程组有无穷多组解。

 编程如下:

format rat

a=n ull(B, 'r');

syms k1 k2

x=k1*a(:,1)+k2*a(:,2)

运行结果如下:

[-2*k1+k2]

[k1-2*k2]

[ k1]

[ k2]

分析:

记x3,x4为自由未知量k1,k2,则该方程组的通解为:

X仁-2*k1+k2

X2= k1-2*k2

X3= k1

X4= k2

广2

2

-2^

5、化方阵A =

2

5

-4

为对角阵

i—2

-4

5」

解:编写程序如下:

format rat

A=[2 2 -2;2 5 -4;-2 -4 5];

[tx,tz]=eig(A)

运行结果:

tx =

TOC \o "1-5" \h \z -963/3230 2584/2889 1/3

-963/1615 -1292/2889 2/3

-963/1292 0 -2/3

tz =

1 0

0

0 1

0

0 0

10

分析:由以上运行结果可直接得出:A的对角矩阵为tz

TOC \o "1-5" \h \z 1 0 0

0 1 0

0 0 10

6、求一个正交变换,将二次型f邑为2?5x; 3x" -2^x2 6x1x^6x2x3化为标准型。

 解:编写程序如下:

A=[5 -1 3;-1 5 -3;3 -3 3];

[P,D]=eig(A)

运行结果:

0.4082 0.7071 -0.5774

-0.4082 0.7071 0.5774

-0.8165 0 -0.5774

-0.0000 0 0

0 4.0000 0

0 0 9.0000

分析与结论:

由以上运行结果可知,求得的正交向量 P为:

P =

0.4082 0.7071 -0.5774

-0.4082 0.7071 0.5774

-0.8165 0 -0.5774

使得 Ap=diag( 0,4,9).

因此,通过正交变换X=py,可以将f化为标准型:

f=4 +9 .

第二次实验题目

、实验目的

熟悉三维空间中的线性变换,加深对正交变换保持距离不变性的理解

深刻理解矩阵特征值的内涵

、问题求解和程序设计流程

A =

1

2 1 1 \

3 -JT 3>/T

1c 4

3 3 J2

2 1 1

是正交矩阵

问题:

使用图形窗口的旋转工具,你发现了什么问题?你能否说明上述向量序列 (点) 分布在两个不同的圆周上?若是,你如何证明以及这两个圆的方程是什么?

例4与例5生成向量序列(点)在空间分布“形状”不同是因为什么?分别计 算例4和例5中变换矩阵的行列式与特征值,你发现了什么?

若上述变换矩阵为实对称正交矩阵,情况又如何?

如果每次迭代的正交矩阵也在变化,即

Xk i =人兀,k =0,1,2,::

你如何描述上面迭代生成的迭代序列?

解:(1)因为进行迭代并执行程序得:

编写程序:

x=ran d(3,1)

A=[2/3,1/sqrt(2),1/(3*sqrt(2));1/3,0,-4/(3*sqrt(2));2/

3,-1/sqrt (2) ,1/(3*sqrt (2))];

ax=x;

n=100;

for k=1: n

x=A*x;

ax=[ax,x];

end

plot3(ax(1,:),ax(2,:),ax(3,:),'*')

运行结果:

0.9134

0.6324

可以观察到上述向量序列(点)分布在两个不同的圆周上 验证如下:

编写程序如下:

x=[0.9134;0.6324;0.0975];

A=[2/3,1/sqrt(2),1/(3*sqrt(2));1/3,0,-4/(3*sqrt(2));2/3,- 1/sqrt(2),1/(3*sqrt(2))];

ax=x;

n=100;

for k=1: n

x=A*x; ax=[ax,x];

end

for k=1:99 dot(cross(ax(:,k),ax(:,k+1)),ax(:,k+2))

end

运行结果:

ans =

-0.2232

ans =

0.2232

ans =

-0.2232

ans =

0.2232

ans =

-0.2232

运行结果按照上述规律依次排列。

分析与结论:

因为三个向量混合积的结果为相隔一个分别相等, 所以可以形成两个半径不

同的圆。即上述向量序列(点)分布在两个不同的圆周上。

求圆方程如下:

编写程序如下:

x=[0.9134;0.6324;0.0975];

A=[2/3,1/sqrt(2),1/(3*sqrt(2));1/3,0,-4/(3*sqrt(2));2/3,-1/sqr

t(2),1/(3*sqrt (2))];

ax=x;

n=100;

for k=1: n

x=A*x;

ax=[ax,x];

end

for k=3:2:99

if no rm(ax(:,1)-ax(:,k)) <no rm(ax(:,1)-ax(:,k+2))

d1=n orm(ax(:,1)-ax(:,k+2));

m仁 ax(:,k+2);

end

end

for t=4:2:98

if norm(ax(:,2)-ax(:,t))< norm(ax(:,2)-ax(:,t+2))

d2=norm(ax(:,2)-ax(:,t+2));

m2=ax(:,t+2);

end

end r仁 d1/2

A=(x+m1);

A=A';

r2=d2/2

B=(x+m2);

B=B';

fprintf(' 圆1的方程是:

(x-%.4f)A2+(y-%.4f)A2+(z-%.4f)A2=%.4fA2\n',A(1)/2,A(2)/2,A(3)/

2,r1)

fprintf(' 圆2的方程是:

(x-%.4f)A2+(y-%.4f)A2+(z-%.4f)A2=%.4fA2\n',B(1)/2,B(2)/2,B(3)/

2,⑵

运行结果:

r1 =

1.1047

r2 =

1.1047

圆 1 的方程是:(x--0.0587)A2+(y-0.1072)A2+(z-0.0901)A2=1.1047A2 圆 2 的方程是:仪--0.0315)八2+仪-0.1026)八2+仗--0.1381)八2=1.1047八2 分析与结论:

上述向量序列(点)分布在两个不同的圆周上,且该两圆半径相等。

(2)两者空间分布不同时由于变换矩阵的行列式互为相反数。

 编程如下:

format

A=[-0.6068,0.4443,-0.6591;-0.4007,-0.8871,-0.2290;-0.6865,0.12 51,0.7163];

B=[2/3,1/sqrt(2),1/(3*sqrt(2));1/3,0,-4/(3*sqrt(2));2/3,-1/sqr

t(2),1/(3*sqrt (2))];

[a,tza]=eig(A)

[b,tzb]=eig(B)

q=det(A)

w=det(B)

运行结果:

0.3864 + 0.0000i

0.0298 + 0.0000i

-0.9219 + 0.0000i

-0.0081 - 0.6521i

0.7068 + 0.0000i

0.0195 - 0.2734i

-0.0081 + 0.6521i

0.7068 + 0.0000i

0.0195 + 0.2734i

tza =

1.0000 + 0.0000i

0.0000 + 0.0000i

0.0000 + 0.0000i

0.0000 + 0.0000i

-0.8888 + 0.4583i

0.0000 + 0.0000i

0.0000 + 0.0000i

0.0000 + 0.0000i

-0.8888 - 0.4583i

0.3819 + O.OOOOi

-0.6982 + O.OOOOi

-O.6O56 + O.OOOOi

O.6535 + O.OOOOi

O.2O4O + O.4633i

O.1769 - O.5342i

O.6535 + O.OOOOi

O.2O4O - O.4633i

O.1769 + O.5342i

tzb =

-1.OOOO + O.OOOOi

-1.OOOO + O.OOOOi

O.OOOO + O.OOOOi

O.OOOO + O.OOOOi

O.OOOO + O.OOOOi

O.9512 + O.3O86i

O.OOOO + O.OOOOi

O.OOOO + O.OOOOi

O.OOOO + O.OOOOi

O.9512 - O.3O86i

q =

1.OOOO

-1.OOOO

分析与结论:

由于两矩阵一行列式为1,另一为-1,导致结果不同

编写程序如下:

x=ra nd(3,1)

A=[1 O O;O 1 O;O O 1];

ax=x;

n=1OO;

for k=1: n

x=A*x;

ax=[ax,x];

end

plot3(ax(1,:),ax(2,:),ax(3,:), ' *')

运行结果:

分析与结论:

选取最简单的以实对称正交矩阵,单位矩阵。得到上述结果,只有一个点

编写程序如下:

x=ra nd(3,1);

A=ra nd(3,3);

ax=x;

n=100;

for k=1: n

B=ra nd(3,3);

A=orth(B);

x=A*x;

ax=[ax,x];

end

plot3(ax(1,:),ax(2,:),ax(3,:), '*')

运行结果:

分析与结论:

由n+1个点够成一个球,且当上述程序中循环次数 n增大时,形成的球体越规

整。如当n取1000时,结果如下:

三、实验总结与体会

通过此次对 matlab 的上机学习,我掌握了其基本操作方法,对利用 matlab

对矩阵进行基本计算,和基本编程都有了了解与学习,,并对matlab在矩阵方面的应 用有了一定程度的了解和认识。学会了如何用matlab对实际线性代数问题进行解决, 可以利用matlab进行基本的运算和编程操作,对矩阵的运算有了进一步的了解。

掌握了:

1 ?熟悉MATLAB的矩阵初等运算;

2?掌握求矩阵的秩、逆、化最简阶梯形的命令;

3 ?会用MABLAB求解线性方程组

但在学习中还发现一些问题:

如对较复杂的方程组求解过程还需进一步学习与掌握;

在解决问题时应灵活处理,并力争去寻找其最简方法;

应进一步强化自己对矩阵相关知识的理解, 学会将个方面知识串通起来灵 活运用。

在今后的学习和工作中,应进一步深入学习 matlab ,使自己熟练掌握其应用,

并利用Matlab平台对线性代数矩阵问题进行学习。

14