2024年6月6日发(作者:)

第四章 线性代数问题的计算机求解

一、实验内容:

题目1.

Jordan矩阵是矩阵分析中一类很实用的矩阵,其一般形式为

-

0

J=

0

1

0

0

1

0

000



51

0

051

00



0

,例如J1=

00510





00051



0005

0

试利用diag()函数给出构造J1的语句。

【分析】该题为对角矩阵的问题。对J要利用diag()能够构造对角矩阵和次对角矩阵的性

质。J1只需对角矩阵和次对角矩阵相加即可。这里需要对diag()函数的调用。如

A=diag(V)---已知向量生成对角矩阵,A=diag(V,k)—生成主对角线上第k条对角

线为V的矩阵(其中k可为正负)

【解答】:

输入如下语句:

>>J1=diag([-5 -5 -5 -5 -5])+diag([1 1 1 1],1)

按ENTER键,显示如下:

J1=

-5 1 0 0 0

0 -5 1 0 0

0 0 -5 1 0

0 0 0 -5 1

0 0 0 0 -5

题目5.

a

4

4

b

试求出Vandermonde矩阵A=

c

4

4

d

e

4

a

3

b

3

c

3

d

3

e

3

a

2

b

2

c

2

d

2

e

2

a

b

c

d

e

1

1

并以最简的形式显示结果。

1

,的行列式,

1

1

【求解】该问题有两个知识点。一个构造是Vandermonde矩阵,另一个是求矩阵的行列式。

前者可以利用书中编写的面向符号矩阵的vander()函数构造出Vandermonde矩阵。

需要用到V=vander(C)来调用。后者可以用MATLAB的det()函数来求解,他会自

动采用解析解法求出其行列式的值。需要注意运用det()的前提是符号矩阵,本题

中A已是符号矩阵,所以不用转换。最后,用simple()函数简化一下即可。

【解答】:

(1)构造矩阵:

输入如下语句:

>>syms a b c d e; A=vander([a b c d e])

按ENTER键,显示如下:

A=

[ a^4, a^3, a^2, a, 1]

[ b^4, b^3, b^2, b, 1]

[ c^4, c^3, c^2, c, 1]

[ d^4, d^3, d^2, d, 1]

[ e^4, e^3, e^2, e, 1]

(2)以最简单的形式输出行列式:

输入如下语句:

>>det(A),simple(ans)

按ENTER键,显示如下:

ans=

(c-d)*(b-d)*(b-c)*(a-d)*(a-c)*(a-b)*(-d+e)*(e-c)*(e-b)*(e-a)

7

7

15. 试求出线性代数方程组X

2

6

6

1

1

4

9

3

5

2

7

2101

2

=

,并验证解的正确性



5

0312

6

-1,

【分析】:该题为线性方程的计算机求解问题。 需要考虑的是X=B*A在MATLAB中,需要

调用inv(A)*B函数,来得出方程的解。同时需要用到逆运算。

【解答】:

(1)输入如下语句:

>> A=[7,6,9,7;7,1,3,2;2,1,5,5;6,4,2,6];B=[2,1,0,1;0,3,1,2];A=A',B=B';

x=inv(A)*B,e1=norm(A*x-B),x1=inv(sym(A))*B,e2=norm(double(A*x1-B))

语句运行后,显示如下:

x =

-0.0057 0.4511

0.1034 -0.6207

-0.1609 -0.3678

0.2730 0.3204

e1 =

1.5879e-015

x1 =

[ -1/174, 157/348]

[ 3/29, -18/29]

[ -14/87, -32/87]

[ 95/348, 223/696]

e2 =

0

(2)对X进行逆运算,输入以下语句:

>> x1=x1';

x1*A'

语句运行后,显示如下:

ans =