第三章矩阵与线性代数计算

第三章 矩阵与线性代数计算

MATLAB ,即“矩阵实验室”,它是以矩阵为基本运算单元。因此,本章从最基本的运算单元出发,介绍MATLAB 的命令及其用法。

3.1矩阵的定义

由m×n 个元素a ij (i=1,2,„m;j=1,2,„n) 排列成的矩形阵称为一个m 行n 列的矩阵, 或m×n 阶矩阵,可以简记为A=(aij ) m×n ,其中的a ij 叫做矩阵的第i 行第j 列元素。

⎡a 11

A =⎢⎢a 21

⎢⎣a m 1

a 12a 22a m 2

a 1n ⎤

a 2n ⎥⎥ a mn ⎥⎦

当m=n时,称A 为n 阶方阵,也叫n 阶矩阵;

当m=1,n≥2时,即A 中只有一行时,称A 为行矩阵,或行向量(1维数组); 当m ≥2,n=1时,即A 中只有一列时,称A 为列矩阵,或列向量; 当m=1,n=1时,即A 中只有一个元素时,称A 为标量或数量(0维数组)。

3.2矩阵的生成

1. 实数值矩阵输入

MATLAB 的强大功能之一体现在能直接处理向量或矩阵。当然首要任务是输入待处理的向量或矩阵。

不管是任何矩阵(向量),我们可以直接按行方式输入每个元素:同一行中的元素用逗号(,)或者用空格符来分隔,且空格个数不限;不同的行用分号(;)分隔。所有元素处于一方括号([ ])内;当矩阵是多维(三维以上),且方括号内的元素是维数较低的矩阵时,会有多重的方括号。如: 【例3-1】矩阵的生成例。

a=[1 2 3;4 5 6;7 8 9]

b=[1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9; 2 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9; 3 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9]

Null_M = [ ] %生成一个空矩阵

a =

1 2 3 4 5 6 7 8 9 b =

1.0000 1.1000 1.2000 1.3000 1.4000 1.5000 1.6000 2.0000 2.1000 2.2000 2.3000 2.4000 2.5000 2.6000 3.0000 3.1000 3.2000 3.3000 3.4000 3.5000 3.6000 1.7000 1.8000 1.9000 2.7000 2.8000 2.9000 3.7000 3.8000 3.9000 Null_M =[] 2.复数矩阵输入

复数矩阵有两种生成方式: 【例3-2】

a=2.7;b=13/25;

C=[1,2*a+i*b,b*sqrt(a); sin(pi/4),a+5*b,3.5+1]

C=

1.0000 5.4000 + 0.5200i 0.8544 0.7071 5.3000 4.5000 【例3-3】矩阵的生成例。

R=[1 2 3;4 5 6], M=[11 12 13;14 15 16] CN=R+i*M R =

1 2 3 4 5 6

M =

11 12 13 14 15 16

CN =

1.0000 +11.0000i 2.0000 +12.0000i 3.0000 +13.0000i 4.0000 +14.0000i 5.0000 +15.0000i 6.0000 +16.0000i 3 大矩阵的生成

对于大型矩阵,一般创建M 文件,以便于修改:

【例3-4】用M 文件创建大矩阵,文件名为c3e4.m

exm=[ 456 468 873 2 579 55

21 687 54 488 8 13 65 4567 88 98 21 5 456 68 4589 654 5 987 5488 10 9 6 33 77 在MA TLAB 命令窗口输入: c3e4;

size(exm) %显示exm 的大小 ans=

5 6 %表示exm 有5行6列。 4 特殊矩阵的生成

命令 全零阵 函数 zeros

格式 B = zeros(n) %生成n×n 全零阵 B = zeros(m,n) %生成m×n 全零阵 B = zeros([m n]) %生成m×n 全零阵

B = zeros(size(A)) %生成与矩阵A 相同大小的全零阵 命令 单位阵 函数 eye

格式 Y = eye(n) %生成n×n 单位阵 Y = eye(m,n) %生成m×n 单位阵

Y = eye(size(A)) %生成与矩阵A 相同大小的单位阵 命令 全1阵 函数 ones

格式 Y = ones(n) %生成n×n 全1阵 Y = ones(m,n) %生成m×n 全1阵 Y = ones([m n]) %生成m×n 全1阵

Y = ones(size(A)) %生成与矩阵A 相同大小的全1阵 命令 均匀分布随机矩阵 函数 rand

格式 Y = rand(n) %生成n×n 随机矩阵,其元素在(0,1)内 Y = rand(m,n) %生成m×n 随机矩阵

Y = rand([m n]) %生成m×n 随机矩阵

Y = rand(size(A)) %生成与矩阵A 相同大小的随机矩阵 【例3-5】 产生一个3³4随机矩阵

R=rand(3,4) R =

0.9501 0.4860 0.4565 0.4447

0.2311 0.8913 0.0185 0.6154 0.6068 0.7621 0.8214 0.7919

【例3-6】 产生一个在区间[10, 20]内均匀分布的4阶随机矩阵

a=10;b=20; x=a+(b-a)*rand(4) x =

19.2181 19.3547 10.5789 11.3889

17.3821 19.1690 13.5287 12.0277 11.7627 14.1027 18.1317 11.9872 14.0571 18.9365 10.0986 16.0379 命令 正态分布随机矩阵 函数 randn

格式 Y = randn(n) %生成n×n 正态分布随机矩阵 Y = randn(m,n) Y = randn(size(A)) mu=0.6; sigma=0.1; x=mu+sqrt(sigma)*randn(4) x =

0.8311 0.7799 0.1335 1.0565 0.7827 0.5192 0.5260 0.4890 0.6127 0.4806 0.6375 0.7971 0.8141 0.5064 0.6996 0.8527

命令 产生随机排列 函数 randperm

%生成m×n 正态分布随机矩阵

%生成与矩阵A 相同大小的正态分布随机矩阵

Y = randn([m n]) %生成m×n 正态分布随机矩阵 【例3-7】 产生均值为0.6,方差为0.1的4阶矩阵

格式 p = randperm(n) %产生1~n 之间整数的随机排列 【例3-8】整数的随机排列。

randperm(6) ans =

3 2 1 5 4 6

命令 产生线性等分向量

函数 linspace

格式 y = linspace(a,b) %在(a, b)上产生100个线性等分点 y = linspace(a,b,n) %在(a, b)上产生n 个线性等分点 命令 产生对数等分向量 函数 logspace

b

格式 y = logspace(a,b) %在( 10 a , 10 )之间产生50个对数等分向量

y = logspace(a,b,n)

命令 计算矩阵中元素个数

n = numel(a) %返回矩阵A 的元素的个数 命令 产生以输入元素为对角线元素的矩阵 函数 blkdiag

格式 out = blkdiag(a,b,c,d,„) %产生以a,b,c,d,…为对角线元素的矩阵 【例3-9】产生以输入元素为对角线元素的矩阵 out = blkdiag(1,2,3,4) out =

1 0 0 0 0 2 0 0 0 0 3 0 0 0 0 4 命令 Magic(魔方) 矩阵

函数 magic

格式 M = magic(n) %产生n 阶魔方矩阵 【例3-10】产生3 阶魔方矩阵

M=magic(3) M =

8 1 6 3 5 7

4 9 2

3.3矩阵的加减乘除运算

1 加、减运算

设u 为一数量,A=(aij ) m×n 和B=(bij ) r×s 为两矩阵,则加减运算的规定为:对应元素相加、减,即按线性代数中矩阵的“十”,“一”运算进行。

u±A=(u±a ij ) m×n

A±B=( aij ± bij ) m×n u*A=(u*aij ) m×n

【例3-11】矩阵的加减运算。

输入:

u=9

a=[1 2 3;4 5 6;7 8 0] b=[3 4 5;6 7 8;9 10 2] c=u+a d=a-b

e=u*a % 和数组运算相同 结果:

c = 10 11 12 13 14 15 16 17 9 d = -2 -2 -2 -2 -2 -2 -2 -2 -2 e = 9 18 27 36 45 54 63 72 0 2 矩阵的乘及乘方运算

设u 为一数量,A=(aij ) m×l 和B=(bij ) l×n 为两矩阵, A 的列数l 和B 的行数l 相等,可进行A 与B 的乘法运算。

⎡a 11

A =⎢⎢a 21

⎢⎣a m 1

a 12a 22a m 2

a 1l ⎤⎡b 11

⎢b a 2l ⎥B =⎥⎢21⎢a ml ⎥⎦⎣b l 1

c 12c 22c m 2

b 12b 22b l 2

b 1n ⎤

b 2n ⎥⎥ b ln ⎥⎦

⎡c 11

C =A *B =⎢⎢c 21

⎢⎣c m 1

c 1n ⎤

c 2n ⎥⎥ c mn ⎥⎦

这里c ij =ai1b 1j +ai2b 2j +„a il b lj =

∑a

t =1

l

it

b tj

它表示C 的第i 行第j 列的元素是A 第i 行的各元分别与B 第j 列的各对应元的乘积的和。

【例3-12】矩阵的乘及乘方运算。

a=[1 2 3;4 5 6;7 8 0] f=[1 2 3] g=f*a h=f.*a

a = 1 2 3 4 5 6 7 8 0 g = 30 36 15 ??? Error using ==> .* 3. 方阵的求逆

单位矩阵:主对角线上的元素都是1,其他各元素都是0的n 阶矩阵与任意n 阶矩阵A 左乘或右乘的乘积仍然是A 自身,即EA=AE=A,因此我们叫E 为n 阶单位矩阵。

⎡1⎢E =⎢

⎢⎢⎣

命令 逆 函数 inv

⎤⎥⎥ ⎥⎥1⎦

对满秩方阵A ,存在A -1,使A* A-1= A-1*A=E;我们称A -1是A 的逆矩阵。

格式 Y=inv(X) %求方阵X 的逆矩阵。

⎛123⎫ ⎪

【例3-13】求A = 221⎪的逆矩阵

343⎪⎝⎭

A=[1 2 3; 2 2 1; 3 4 3]; Y=inv(A)或Y=A^(-1) 则结果显示为

Y =

1.0000 3.0000 -2.0000 -1.5000 -3.0000 2.5000 1.0000 1.0000 -1.0000

【例3-14】求逆运算。 A=[2 1 -1;2 1 2;1 -1 1]; format rat %用有理格式输出 D=inv(A)

D =

1/3 0 1/3 0 1/3 -2/3 -1/3 1/3 0 4.除法运算

右除:矩阵a 右除以矩阵b 定义为: a/b=a*b^(-1)=a*inv(b)

左除:矩阵b 左除以矩阵a 定义为: a\b=a^(-1)*b=inv(a)*b

Matlab 提供了两种除法运算:左除(\)和右除(/)。一般情况下,x=a\b是方程a*x =b的解,而x=b/a是方程x*a=b的解。即:

ax=b

a(-1)*a*x=a(-1)*b X=inv(a)*b=a\b xa=b

X*a*a(-1)=b*a(-1)

X=b*a(-1)=b*inv(a)=b/a 【例3-15】除法运算

a=[1 2 3; 4 2 6; 7 4 9] b=[4; 1; 2]; x=a\b 则显示:x=

-1.5000

2.0000

0.5000

在数组除法中,A./B表示A 中元素与B 中元素对应相除。 5.向量点积

向量的点乘(内积):维数相同的两个向量的点乘。 函数 dot

格式 C = dot(A,B) %若A 、B 为向量,则返回向量A 与B 的点积,A 与B 长度相同;若为矩阵,则A 与B 有相同的维数。

C = dot(A,B,dim) %在dim 维数中给出A 与B 的点积 【例3-16】向量点积

X=[-1 0 2]; Y=[-2 -1 1]; Z=dot(X, Y) 则显示:

Z = 4 6.向量叉乘

在数学上,两向量的叉乘是一个过两相交向量的交点且垂直于两向量所在平面的向量。在Matlab 中,用函数cross 实现。

函数 cross

格式 C = cross(A,B) %若A 、B 为向量,则返回A 与B 的叉乘,即C=A³B ,A 、B 必须是3个元素的向量;若A 、B 为矩阵,则返回一个3³n 矩阵,其中的列是A 与B 对应列的叉积,A 、B 都是3³n 矩阵。

C = cross(A,B,dim) %在dim 维数中给出向量A 与B 的叉积。A 和B 必须具有相同的维数,size(A,dim)和size(B,dim)必须是3。 【例3-17】计算垂直于向量(1, 2, 3)和(4, 5, 6)的向量。 a=[1 2 3]; b=[4 5 6]; c=cross(a,b) 结果显示: c=

-3 6 -3

可得垂直于向量(1, 2, 3)和(4, 5, 6)的向量为±(-3, 6, -3) 7.混合积

混合积由以上两函数实现:

【例3-18】 计算向量a=(1, 2, 3)、b=(4, 5, 6)和c=(-3, 6, -3) 的混合积a ⋅(b ⨯c )

a=[1 2 3]; b=[4 5 6]; c=[-3 6 -3]; x=dot(a, cross(b, c))

结果显示:x = 54

注意:先叉乘后点乘,顺序不可颠倒。 8.张量积

函数 kron

格式 C=kron (A,B) %A为m×n 矩阵,B 为p×q 矩阵,则C 为mp×nq 矩阵。

⎡a 11B a 12B

⎢a B a B 2122

说明 A 与B 的张量积定义为:C =A ⊗B =⎢

⎢ ⎢

⎣a m 1B a m 2B

B ⊗A 均为mp×nq 矩阵,但一般地A ⊗B ≠B ⊗A 。

a 1n B ⎤

a 2n B ⎥

⎥A ⊗B 与

a mn B ⎦

⎡123⎤

12⎡⎤

【例3-19】 A =⎢ B =⎢456⎥ 求A ⊗B 。 ⎥⎢⎥⎣34⎦⎢⎣789⎥⎦

A=[1 2;3 4];B=[1 2 3;4 5 6;7 8 9]; C=kron(A,B) C =

1 2 3 2 4 6 4 5 6 8 10 12 7 8 9 14 16 18 3 6 9 4 8 12 12 15 18 16 20 24 21 24 27 28 32 36

3.4矩阵的行列式

1 矩阵转置

A=(aij ) m×n 的转置矩阵在数学中记为A ′=(aji ) n×m

⎡a 11

A =⎢⎢a 21

⎢⎣a m 1⎡a 11

A /=⎢⎢a 12

⎢⎣a 1n

运算符:′

a 12a 22a m 2a 21a 22a 2n

a 1n ⎤

a 2n ⎥⎥ a mn ⎥⎦a m 1⎤a m 2⎥⎥ a mn ⎥⎦

运算规则:若矩阵A 的元素为实数,则与线性代数中矩阵的转置相同。

若A 为复数矩阵,则A 转置后的元素由A 对应元素的共轭复数构成。若仅希望转

置,则用如下命令:A. ′。 2 方阵的行列式

把行列式按第i 行展开:

a 11

A =a 21

a n 1

a 12a 22a n 2

a 1n

a 2n =a i 1A i 1+a i 2A i 2+ a in A in a nn

其中A ij =(-1)i+jM ij 称为a ij 的代数余子式;而M ij 是划去A 中元a ij 所在的行及列得到的n-1阶子式,叫做a ij 的余子式。

函数 det

格式 d = det(X) %返回方阵X 的多项式的值 【例3-20】行列式的值。

A=[1 2 3;4 5 6;7 8 9] A =

1 2 3 4 5 6 7 8 9

D=det(A) D = 0 3. 矩阵的秩

子式:在(m,n )矩阵A 中取某k 个行,k 个列,由这些行、列相交的元构成的k 阶行列式,叫做A 的k 阶子式。

n 阶矩阵只有一个n 阶子式,叫做矩阵行列式。用︱A ︱或detA 表示。

矩阵的秩:矩阵A 中不为零的子式的最高阶数如果是r ,就说A 的秩是r 。常用r(A)表示。即矩阵A 的秩是矩阵A 中最高阶非零子式的阶数;而向量组的秩通常由该向量组构成的矩阵来计算。

n 阶矩阵如果它的秩是n ,叫做满秩矩阵,否则就是降秩矩阵。

一般矩阵A m×n 中,如果r(A)=min(m,n),称A 为满秩阵,否则r(A)<min(m,n)称A 为降秩阵。

函数 rank

格式 k = rank (A) %求矩阵A 的秩 k = rank (A,tol) %tol为给定误差

【例3-21】求向量组α1=(1-223) ,α2=(-24-13) ,α3=(-1203) ,

α4=(0623) ,α5=(2-634) 的秩,并判断其线性相关性。

A=[1 -2 2 3;-2 4 -1 3;-1 2 0 3;0 6 2 3;2 -6 3 4]; k=rank(A) 结果为 k = 3

由于秩为3

4.矩阵特征值和特征向量对n 阶矩阵A ,如果存在非0向量x 满足线性方程组(A-λE)x=0,则称λ是矩阵A 的特征值,x 是A 的对应于特征值λ的特征向量。对于每一个实对称矩阵A ,总可将A 转化为对角矩阵,其主对角线上的元素就是A 的n 个特征值。

[p,r]=eig(a)且 % eig=eigen(本征的,固有的) a 为输入矩阵。r 为特征值构成的对角阵。 p 的各列为对应于特征值的特征向量构成的矩阵。

⎛-211⎫

【例3-22】求矩阵A = 020⎪的特征值和特征向量

-413⎪⎝⎭

A=[-2 1 1;0 2 0;-4 1 3]; [V,D]=eig(A) 结果显示: V =

-0.7071 -0.2425 0.3015 0 0 0.9045 -0.7071 -0.9701 0.3015

D =

-1 0 0 0 2 0 0 0 2

即:特征值-1对应特征向量(-0.7071 0 -0.7071) T

特征值2对应特征向量(-0.2425 0 -0.9701) T 和(-0.3015 0.9045 -0.3015) T

⎛-110⎫ ⎪

【例3-23】 求矩阵A = -430⎪的特征值和特征向量。

102⎪⎝⎭

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

[V,D]=eig(A) 结果显示为 V =

0 0.4082 -0.4082

0 0.8165 -0.8165 1.0000 -0.4082 0.4082 D =

2 0 0

0 1 0 0 0 1

3.5矩阵的特殊运算

1.矩阵对角线元素的抽取

函数 diag

格式 X = diag(v,k) %以向量v 的元素作为矩阵X 的第k 条对角线元素,当k=0时,v 为X 的主对角线;当k>0时,v 为上方第k 条对角线;当k

X = diag(v) %以v 为主对角线元素,其余元素为0构成X 。

v = diag(X,k) %抽取X 的第k 条对角线元素构成向量v 。k=0:抽取主对角线元素; k>0:抽取上方第k 条对角线元素;k

v=[1 2 3]; x=diag(v,-1) x =

0 0 0 0

1 0 0 0 0 2 0 0 0 0 3 0

A=[1 2 3;4 5 6;7 8 9] A =

1 2 3 4 5 6

7 8 9 v=diag(A,1) v = 2 6

2.上三角阵和下三角阵的抽取

函数 tril %取下三角部分

格式 L = tril(X) %抽取X 的主对角线的下三角部分构成矩阵L

L = tril(X,k) %抽取X 的第k 条对角线的下三角部分;k=0为主对角线;k>0为主对角线以上;k

函数 triu %取上三角部分

格式 U = triu(X) %抽取X 的主对角线的上三角部分构成矩阵U

U = triu(X,k) %抽取X 的第k 条对角线的上三角部分;k=0为主对角线;k>0为主对角线以上;k

A=ones(4) %产生4阶全1阵 A =

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

L=tril(A,1) %取下三角部分 L =

1 1 0 0

1 1 1 0 1 1 1 1

1 1 1 1 U=triu(A,-1) %取上三角部分 U =

1 1 1 1

1 1 1 1 0 1 1 1

0 0 1 1 3.矩阵的变维

A (i,:)提取A 的第i 行A (:,j)提取A 的第j 列 A(:,j:k)取出A 的从第j 列到第k 列的元素所成的阵。 【例3-26】矩阵的变维

a=[1.1 1.2 1.3 1.4 2.1 2.2 2.3 2.4 3.1 3.2 3.3 3.4]; b=a(2,:) c=a(:,3) d=a(:,2:4)

b = 2.1000 2.2000 2.3000 2.4000 c = 1.3000 2.3000 3.3000

d = 1.2000 1.3000 1.4000 2.2000 2.3000 2.4000 3.2000 3.3000 3.4000 4.矩阵的变向

矩阵旋转函数

格式 B = rot90 (A) %将矩阵A 逆时针方向旋转90°

B = rot90 (A,k) %将矩阵A 逆时针方向旋转(k×90°) ,k 可取正负整数。 【例3-27】矩阵旋转。

A=[1 2 3;4 5 6;7 8 9] A =

1 2 3 4 5 6

7 8 9 Y1=rot90(A),Y2=rot90(A,-1) Y1 = %逆时针方向旋转 3 6 9

2 5 8 1 4 7

Y2 = %顺时针方向旋转 7 4 1

8 5 2 9 6 3 矩阵的左右翻转 函数 fliplr

格式 B = fliplr(A) %将矩阵A 左右翻转 矩阵的上下翻转 函数 flipud

格式 B = flipud(A) %将矩阵A 上下翻转 【例3-28】矩阵的翻转。

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

1 2 3

4 5 6 B1=fliplr(A),B2=flipud(A)

B1 =

3 2 1

6 5 4 B2 =

4 5 6

1 2 3 5.矩阵的比较关系

矩阵的比较关系是针对于两个矩阵对应元素的,所以在使用关系运算时,首先应该保证两个矩阵的维数一致或其中一个矩阵为标量。关系运算是对两个矩阵的对应运算进行比较,若关系满足,则将结果矩阵中该位置元素置为1,否则置0。MA TLAB 的各种比较关系运算见下表。

A=[1 2 3 4;5 6 7 8];B=[0 2 1 4;0 7 7 2]; C1=A==B, C2=A>=B, C3=A~=B C1 =

0 1 0 1 0 0 1 0 C2 =

1 1 1 1

1 0 1 1 C3 =

1 0 1 0

1 1 0 1

6.矩阵逻辑运算

设矩阵A 和B 都是m×n 矩阵或其中之一为标量,在MA TLAB 中定义了如下的逻辑运算:

矩阵的与运算

格式 A&B或and(A, B)

说明 A 与B 对应元素进行与运算,若两个数均非0,则结果元素的值为1,否则为0。

或运算

格式 A|B或or(A, B)

说明 A 与B 对应元素进行或运算,若两个数均为0,则结果元素的值为0,否则为1。

非运算

格式 ~A或not (A)

说明 若A 的元素为0,则结果元素为1,否则为0。 异或运算 格式 xor (A,B)

说明 A 与B 对应元素进行异或运算,若相应的两个数中一个为0,一个非0,则结果为0,否则为1。 【例3-30】矩阵逻辑运算

A=[0 2 3 4;1 3 5 0],B=[1 0 5 3;1 5 0 5] A =

0 2 3 4

1 3 5 0 B =

1 0 5 3 1 5 0 5

C1=A&B,C2=A|B,C3=~A,C4=xor(A,B) C1 =

0 0 1 1 1 1 0 0 C2 =

1 1 1 1 1 1 1 1 C3 =

1 0 0 0 0 0 0 1 C4 =

1 1 0 0 0 0 1 1

3.6 集 合 运 算

1.两个集合的交集

函数 intersect

格式 c = intersect(a,b) %返回向量a 、b 的公共部分,即c= a∩b 。

c = intersect(A,B,'rows') %A、B 为相同列数的矩阵,返回元素相同的行。 [c,ia,ib] = intersect(a,b) %c为a 、b 的公共元素,ia 表示公共元素在a 中的位置,ib 表示公共元素在b 中位置。

【例3-31】两个集合的交集

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

A =

1 2 3 4

1 2 4 6 6 7 1 4

B=[1 2 3 8;1 1 4 6;6 7 1 4] B =

1 2 3 8

1 1 4 6 6 7 1 4

C=intersect(A,B,'rows') C =

6 7 1 4 2.两集合的差

函数 setdiff

格式 c = setdiff(a,b) %返回属于a 但不属于b 的不同元素的集合,C = a-b。 c = setdiff(A,B,'rows') %返回属于A 但不属于B 的不同行

[c,i] = setdiff(„) %c与前面一致,i 表示c 中元素在A 中的位置。 【例3-32】两集合的差.

A = [1 7 9 6 20]; B = [1 2 3 4 6 10 20]; c=setdiff(A,B) c =

7 9

3.两个集合交集的非(异或)

函数 setxor

格式 c = setxor(a,b) %返回集合a 、b 交集的非

c = setxor(A,B,'rows') %返回矩阵A 、B 交集的非,A 、B 有相同列数。 [c,ia,ib] = setxor(„) %ia、ib 表示c 中元素分别在a (或A) 、b(或B) 中位置 【例3-33】两个集合交集的非。

A=[1 2 3 4]; B=[2 4 5 8]; C=setxor(A,B)

C =

1 3 5 8 4.两集合的并集

函数 union

格式 c = union(a,b) %返回a 、b 的并集,即c = a∪b 。

c = union(A,B,'rows') %返回矩阵A 、B 不同行向量构成的大矩阵,其中相同行向量只取其一。

[c,ia,ib] = union(„) %ia、ib 分别表示c 中行向量在原矩阵(向量) 中的位置 【例3-34】两集合的并集。

A=[1 2 3 4]; B=[2 4 5 8]; c=union(A,B) 则结果为

c =

1 2 3 4 5 8

3.7 线性方程的组的求解

n 个未知量的线性方程组可以写成

⎧a 11x 1⎪a x ⎪211⎨

⎪ ⎪⎩a m 1x 1

++ +

a 12x 2a 22x 2 a m 2x 2

++ +

++ +

a 1n x n a 2n x n a mn x n

== =

b 1b 2 b m

系数矩阵为

⎡a 11

A =⎢⎢a 21

⎢⎣a m 1

a 12a 22a m 2

a 1n ⎤

a 2n ⎥⎥ a mn ⎥⎦

加边(增广)矩阵为

⎡a 11

B =⎢⎢a 21

⎢⎣a m 1

a 12a 22

a 1n

a 2n

a m 2 a mn

b 1⎤

b 2⎥⎥ b m ⎥⎦

⎡x 1⎤⎡b 1⎤⎢x ⎥⎢b ⎥

2⎥为一待求列向量 b=⎢2⎥为一已知列向量 x=⎢⎢ ⎥⎢ ⎥⎢⎥⎢⎥x ⎣m ⎦⎣b m ⎦

由乘法定义有A*x=b

由克莱姆定理有

m

m>n;方程为超定方程

m=n时:

如det(A)≠0, 即A 的秩r(A)=n,方程组有唯一解。x=A\b.

如det(A)=0,即A 的秩r(A)

如果r(A) ≠r(B),方程组无解。

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

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

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

方程:AX=b

解法:X=A\b

⎧5x 1+6x 2⎪x 1+5x 2+6x 3⎪【例3-35】 求方程组⎨x 2+5x 3+6x 4⎪x 3+5x 4+6x 5⎪x 4+5x 5⎩

解:

A=[5 6 0 0 0

1 5 6 0 0

0 1 5 6 0

0 0 1 5 6

0 0 0 1 5];

B=[1 0 0 0 1]';

R_A=rank(A) %求秩

X=A\B %求解

运行后结果如下 =1=0=0的解。 =0=1

R_A = 5

X = 2.2662

-1.7218

1.0571

-0.5940

0.3188

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

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

格式 z = null % z的列向量为方程组的正交规范基,满足Z '⨯Z =I 。 z =null (A , 'r ') % z的列向量是方程AX=0的有理基

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

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

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

第二步:求AX=b的一个特解

第三步:求AX=0的通解

第四步:AX=b的通解= AX=0的通解+AX=b的一个特解。

⎧x 1-2x 2+3x 3-x 4=1⎪【例3-36】 求解方程组⎨3x 1-x 2+5x 3-3x 4=2

⎪⎩2x 1+x 2+2x 3-2x 4=3

解:在Matlab 中建立M 文件如下:

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

b=[1 2 3]';

B=[A b];

n=4;

R_A=rank(A)

R_B=rank(B)

format rat

if R_A==R_B&R_A==n %判断有唯一解

X=A\b

elseif R_A==R_B&R_A

X=A\b %求特解

C=null(A,'r') %求AX=0的基础解系

else X='equition no solve' %判断无解

end

运行后结果显示:

R_A = 2

R_B = 3

X =equition no solve

说明 该方程组无解

⎧x 1+x 2-3x 3-x 4=1⎪3x 1-x 2-3x 3+4x 4=4⎨【例3-37】 求解方程组的通解: ⎪⎩x 1+5x 2-9x 3-8x 4=0

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

A=[1 1 -3 -1;3 -1 -3 4;1 5 -9 -8];

b=[1 4 0]';

B=[A b];

n=4;

R_A=rank(A)

R_B=rank(B)

format rat

if R_A==R_B&R_A==n

X=A\b

elseif R_A==R_B&R_A

X=A\b

C=null(A,'r')

else X='Equation has no solves'

end

运行后结果显示为:

R_A =

2

R_B =

2

X =

-8/15

3/5

C =

3/2 -3/4

3/2 7/4

1 0

0 1

⎛ 3/2⎫⎛-3

所以原方程组的通解为X=k3/2⎪ /4⎫⎛0⎫

7⎪ ⎪

1 ⎪+k/4+ 0

2 ⎪⎪

1⎪ 0⎪ -8/15⎪

⎝0⎪⎭ ⎝1⎪⎭ ⎝3/5⎪⎭

(孙福玉

韩伟)

第三章 矩阵与线性代数计算

MATLAB ,即“矩阵实验室”,它是以矩阵为基本运算单元。因此,本章从最基本的运算单元出发,介绍MATLAB 的命令及其用法。

3.1矩阵的定义

由m×n 个元素a ij (i=1,2,„m;j=1,2,„n) 排列成的矩形阵称为一个m 行n 列的矩阵, 或m×n 阶矩阵,可以简记为A=(aij ) m×n ,其中的a ij 叫做矩阵的第i 行第j 列元素。

⎡a 11

A =⎢⎢a 21

⎢⎣a m 1

a 12a 22a m 2

a 1n ⎤

a 2n ⎥⎥ a mn ⎥⎦

当m=n时,称A 为n 阶方阵,也叫n 阶矩阵;

当m=1,n≥2时,即A 中只有一行时,称A 为行矩阵,或行向量(1维数组); 当m ≥2,n=1时,即A 中只有一列时,称A 为列矩阵,或列向量; 当m=1,n=1时,即A 中只有一个元素时,称A 为标量或数量(0维数组)。

3.2矩阵的生成

1. 实数值矩阵输入

MATLAB 的强大功能之一体现在能直接处理向量或矩阵。当然首要任务是输入待处理的向量或矩阵。

不管是任何矩阵(向量),我们可以直接按行方式输入每个元素:同一行中的元素用逗号(,)或者用空格符来分隔,且空格个数不限;不同的行用分号(;)分隔。所有元素处于一方括号([ ])内;当矩阵是多维(三维以上),且方括号内的元素是维数较低的矩阵时,会有多重的方括号。如: 【例3-1】矩阵的生成例。

a=[1 2 3;4 5 6;7 8 9]

b=[1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9; 2 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9; 3 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9]

Null_M = [ ] %生成一个空矩阵

a =

1 2 3 4 5 6 7 8 9 b =

1.0000 1.1000 1.2000 1.3000 1.4000 1.5000 1.6000 2.0000 2.1000 2.2000 2.3000 2.4000 2.5000 2.6000 3.0000 3.1000 3.2000 3.3000 3.4000 3.5000 3.6000 1.7000 1.8000 1.9000 2.7000 2.8000 2.9000 3.7000 3.8000 3.9000 Null_M =[] 2.复数矩阵输入

复数矩阵有两种生成方式: 【例3-2】

a=2.7;b=13/25;

C=[1,2*a+i*b,b*sqrt(a); sin(pi/4),a+5*b,3.5+1]

C=

1.0000 5.4000 + 0.5200i 0.8544 0.7071 5.3000 4.5000 【例3-3】矩阵的生成例。

R=[1 2 3;4 5 6], M=[11 12 13;14 15 16] CN=R+i*M R =

1 2 3 4 5 6

M =

11 12 13 14 15 16

CN =

1.0000 +11.0000i 2.0000 +12.0000i 3.0000 +13.0000i 4.0000 +14.0000i 5.0000 +15.0000i 6.0000 +16.0000i 3 大矩阵的生成

对于大型矩阵,一般创建M 文件,以便于修改:

【例3-4】用M 文件创建大矩阵,文件名为c3e4.m

exm=[ 456 468 873 2 579 55

21 687 54 488 8 13 65 4567 88 98 21 5 456 68 4589 654 5 987 5488 10 9 6 33 77 在MA TLAB 命令窗口输入: c3e4;

size(exm) %显示exm 的大小 ans=

5 6 %表示exm 有5行6列。 4 特殊矩阵的生成

命令 全零阵 函数 zeros

格式 B = zeros(n) %生成n×n 全零阵 B = zeros(m,n) %生成m×n 全零阵 B = zeros([m n]) %生成m×n 全零阵

B = zeros(size(A)) %生成与矩阵A 相同大小的全零阵 命令 单位阵 函数 eye

格式 Y = eye(n) %生成n×n 单位阵 Y = eye(m,n) %生成m×n 单位阵

Y = eye(size(A)) %生成与矩阵A 相同大小的单位阵 命令 全1阵 函数 ones

格式 Y = ones(n) %生成n×n 全1阵 Y = ones(m,n) %生成m×n 全1阵 Y = ones([m n]) %生成m×n 全1阵

Y = ones(size(A)) %生成与矩阵A 相同大小的全1阵 命令 均匀分布随机矩阵 函数 rand

格式 Y = rand(n) %生成n×n 随机矩阵,其元素在(0,1)内 Y = rand(m,n) %生成m×n 随机矩阵

Y = rand([m n]) %生成m×n 随机矩阵

Y = rand(size(A)) %生成与矩阵A 相同大小的随机矩阵 【例3-5】 产生一个3³4随机矩阵

R=rand(3,4) R =

0.9501 0.4860 0.4565 0.4447

0.2311 0.8913 0.0185 0.6154 0.6068 0.7621 0.8214 0.7919

【例3-6】 产生一个在区间[10, 20]内均匀分布的4阶随机矩阵

a=10;b=20; x=a+(b-a)*rand(4) x =

19.2181 19.3547 10.5789 11.3889

17.3821 19.1690 13.5287 12.0277 11.7627 14.1027 18.1317 11.9872 14.0571 18.9365 10.0986 16.0379 命令 正态分布随机矩阵 函数 randn

格式 Y = randn(n) %生成n×n 正态分布随机矩阵 Y = randn(m,n) Y = randn(size(A)) mu=0.6; sigma=0.1; x=mu+sqrt(sigma)*randn(4) x =

0.8311 0.7799 0.1335 1.0565 0.7827 0.5192 0.5260 0.4890 0.6127 0.4806 0.6375 0.7971 0.8141 0.5064 0.6996 0.8527

命令 产生随机排列 函数 randperm

%生成m×n 正态分布随机矩阵

%生成与矩阵A 相同大小的正态分布随机矩阵

Y = randn([m n]) %生成m×n 正态分布随机矩阵 【例3-7】 产生均值为0.6,方差为0.1的4阶矩阵

格式 p = randperm(n) %产生1~n 之间整数的随机排列 【例3-8】整数的随机排列。

randperm(6) ans =

3 2 1 5 4 6

命令 产生线性等分向量

函数 linspace

格式 y = linspace(a,b) %在(a, b)上产生100个线性等分点 y = linspace(a,b,n) %在(a, b)上产生n 个线性等分点 命令 产生对数等分向量 函数 logspace

b

格式 y = logspace(a,b) %在( 10 a , 10 )之间产生50个对数等分向量

y = logspace(a,b,n)

命令 计算矩阵中元素个数

n = numel(a) %返回矩阵A 的元素的个数 命令 产生以输入元素为对角线元素的矩阵 函数 blkdiag

格式 out = blkdiag(a,b,c,d,„) %产生以a,b,c,d,…为对角线元素的矩阵 【例3-9】产生以输入元素为对角线元素的矩阵 out = blkdiag(1,2,3,4) out =

1 0 0 0 0 2 0 0 0 0 3 0 0 0 0 4 命令 Magic(魔方) 矩阵

函数 magic

格式 M = magic(n) %产生n 阶魔方矩阵 【例3-10】产生3 阶魔方矩阵

M=magic(3) M =

8 1 6 3 5 7

4 9 2

3.3矩阵的加减乘除运算

1 加、减运算

设u 为一数量,A=(aij ) m×n 和B=(bij ) r×s 为两矩阵,则加减运算的规定为:对应元素相加、减,即按线性代数中矩阵的“十”,“一”运算进行。

u±A=(u±a ij ) m×n

A±B=( aij ± bij ) m×n u*A=(u*aij ) m×n

【例3-11】矩阵的加减运算。

输入:

u=9

a=[1 2 3;4 5 6;7 8 0] b=[3 4 5;6 7 8;9 10 2] c=u+a d=a-b

e=u*a % 和数组运算相同 结果:

c = 10 11 12 13 14 15 16 17 9 d = -2 -2 -2 -2 -2 -2 -2 -2 -2 e = 9 18 27 36 45 54 63 72 0 2 矩阵的乘及乘方运算

设u 为一数量,A=(aij ) m×l 和B=(bij ) l×n 为两矩阵, A 的列数l 和B 的行数l 相等,可进行A 与B 的乘法运算。

⎡a 11

A =⎢⎢a 21

⎢⎣a m 1

a 12a 22a m 2

a 1l ⎤⎡b 11

⎢b a 2l ⎥B =⎥⎢21⎢a ml ⎥⎦⎣b l 1

c 12c 22c m 2

b 12b 22b l 2

b 1n ⎤

b 2n ⎥⎥ b ln ⎥⎦

⎡c 11

C =A *B =⎢⎢c 21

⎢⎣c m 1

c 1n ⎤

c 2n ⎥⎥ c mn ⎥⎦

这里c ij =ai1b 1j +ai2b 2j +„a il b lj =

∑a

t =1

l

it

b tj

它表示C 的第i 行第j 列的元素是A 第i 行的各元分别与B 第j 列的各对应元的乘积的和。

【例3-12】矩阵的乘及乘方运算。

a=[1 2 3;4 5 6;7 8 0] f=[1 2 3] g=f*a h=f.*a

a = 1 2 3 4 5 6 7 8 0 g = 30 36 15 ??? Error using ==> .* 3. 方阵的求逆

单位矩阵:主对角线上的元素都是1,其他各元素都是0的n 阶矩阵与任意n 阶矩阵A 左乘或右乘的乘积仍然是A 自身,即EA=AE=A,因此我们叫E 为n 阶单位矩阵。

⎡1⎢E =⎢

⎢⎢⎣

命令 逆 函数 inv

⎤⎥⎥ ⎥⎥1⎦

对满秩方阵A ,存在A -1,使A* A-1= A-1*A=E;我们称A -1是A 的逆矩阵。

格式 Y=inv(X) %求方阵X 的逆矩阵。

⎛123⎫ ⎪

【例3-13】求A = 221⎪的逆矩阵

343⎪⎝⎭

A=[1 2 3; 2 2 1; 3 4 3]; Y=inv(A)或Y=A^(-1) 则结果显示为

Y =

1.0000 3.0000 -2.0000 -1.5000 -3.0000 2.5000 1.0000 1.0000 -1.0000

【例3-14】求逆运算。 A=[2 1 -1;2 1 2;1 -1 1]; format rat %用有理格式输出 D=inv(A)

D =

1/3 0 1/3 0 1/3 -2/3 -1/3 1/3 0 4.除法运算

右除:矩阵a 右除以矩阵b 定义为: a/b=a*b^(-1)=a*inv(b)

左除:矩阵b 左除以矩阵a 定义为: a\b=a^(-1)*b=inv(a)*b

Matlab 提供了两种除法运算:左除(\)和右除(/)。一般情况下,x=a\b是方程a*x =b的解,而x=b/a是方程x*a=b的解。即:

ax=b

a(-1)*a*x=a(-1)*b X=inv(a)*b=a\b xa=b

X*a*a(-1)=b*a(-1)

X=b*a(-1)=b*inv(a)=b/a 【例3-15】除法运算

a=[1 2 3; 4 2 6; 7 4 9] b=[4; 1; 2]; x=a\b 则显示:x=

-1.5000

2.0000

0.5000

在数组除法中,A./B表示A 中元素与B 中元素对应相除。 5.向量点积

向量的点乘(内积):维数相同的两个向量的点乘。 函数 dot

格式 C = dot(A,B) %若A 、B 为向量,则返回向量A 与B 的点积,A 与B 长度相同;若为矩阵,则A 与B 有相同的维数。

C = dot(A,B,dim) %在dim 维数中给出A 与B 的点积 【例3-16】向量点积

X=[-1 0 2]; Y=[-2 -1 1]; Z=dot(X, Y) 则显示:

Z = 4 6.向量叉乘

在数学上,两向量的叉乘是一个过两相交向量的交点且垂直于两向量所在平面的向量。在Matlab 中,用函数cross 实现。

函数 cross

格式 C = cross(A,B) %若A 、B 为向量,则返回A 与B 的叉乘,即C=A³B ,A 、B 必须是3个元素的向量;若A 、B 为矩阵,则返回一个3³n 矩阵,其中的列是A 与B 对应列的叉积,A 、B 都是3³n 矩阵。

C = cross(A,B,dim) %在dim 维数中给出向量A 与B 的叉积。A 和B 必须具有相同的维数,size(A,dim)和size(B,dim)必须是3。 【例3-17】计算垂直于向量(1, 2, 3)和(4, 5, 6)的向量。 a=[1 2 3]; b=[4 5 6]; c=cross(a,b) 结果显示: c=

-3 6 -3

可得垂直于向量(1, 2, 3)和(4, 5, 6)的向量为±(-3, 6, -3) 7.混合积

混合积由以上两函数实现:

【例3-18】 计算向量a=(1, 2, 3)、b=(4, 5, 6)和c=(-3, 6, -3) 的混合积a ⋅(b ⨯c )

a=[1 2 3]; b=[4 5 6]; c=[-3 6 -3]; x=dot(a, cross(b, c))

结果显示:x = 54

注意:先叉乘后点乘,顺序不可颠倒。 8.张量积

函数 kron

格式 C=kron (A,B) %A为m×n 矩阵,B 为p×q 矩阵,则C 为mp×nq 矩阵。

⎡a 11B a 12B

⎢a B a B 2122

说明 A 与B 的张量积定义为:C =A ⊗B =⎢

⎢ ⎢

⎣a m 1B a m 2B

B ⊗A 均为mp×nq 矩阵,但一般地A ⊗B ≠B ⊗A 。

a 1n B ⎤

a 2n B ⎥

⎥A ⊗B 与

a mn B ⎦

⎡123⎤

12⎡⎤

【例3-19】 A =⎢ B =⎢456⎥ 求A ⊗B 。 ⎥⎢⎥⎣34⎦⎢⎣789⎥⎦

A=[1 2;3 4];B=[1 2 3;4 5 6;7 8 9]; C=kron(A,B) C =

1 2 3 2 4 6 4 5 6 8 10 12 7 8 9 14 16 18 3 6 9 4 8 12 12 15 18 16 20 24 21 24 27 28 32 36

3.4矩阵的行列式

1 矩阵转置

A=(aij ) m×n 的转置矩阵在数学中记为A ′=(aji ) n×m

⎡a 11

A =⎢⎢a 21

⎢⎣a m 1⎡a 11

A /=⎢⎢a 12

⎢⎣a 1n

运算符:′

a 12a 22a m 2a 21a 22a 2n

a 1n ⎤

a 2n ⎥⎥ a mn ⎥⎦a m 1⎤a m 2⎥⎥ a mn ⎥⎦

运算规则:若矩阵A 的元素为实数,则与线性代数中矩阵的转置相同。

若A 为复数矩阵,则A 转置后的元素由A 对应元素的共轭复数构成。若仅希望转

置,则用如下命令:A. ′。 2 方阵的行列式

把行列式按第i 行展开:

a 11

A =a 21

a n 1

a 12a 22a n 2

a 1n

a 2n =a i 1A i 1+a i 2A i 2+ a in A in a nn

其中A ij =(-1)i+jM ij 称为a ij 的代数余子式;而M ij 是划去A 中元a ij 所在的行及列得到的n-1阶子式,叫做a ij 的余子式。

函数 det

格式 d = det(X) %返回方阵X 的多项式的值 【例3-20】行列式的值。

A=[1 2 3;4 5 6;7 8 9] A =

1 2 3 4 5 6 7 8 9

D=det(A) D = 0 3. 矩阵的秩

子式:在(m,n )矩阵A 中取某k 个行,k 个列,由这些行、列相交的元构成的k 阶行列式,叫做A 的k 阶子式。

n 阶矩阵只有一个n 阶子式,叫做矩阵行列式。用︱A ︱或detA 表示。

矩阵的秩:矩阵A 中不为零的子式的最高阶数如果是r ,就说A 的秩是r 。常用r(A)表示。即矩阵A 的秩是矩阵A 中最高阶非零子式的阶数;而向量组的秩通常由该向量组构成的矩阵来计算。

n 阶矩阵如果它的秩是n ,叫做满秩矩阵,否则就是降秩矩阵。

一般矩阵A m×n 中,如果r(A)=min(m,n),称A 为满秩阵,否则r(A)<min(m,n)称A 为降秩阵。

函数 rank

格式 k = rank (A) %求矩阵A 的秩 k = rank (A,tol) %tol为给定误差

【例3-21】求向量组α1=(1-223) ,α2=(-24-13) ,α3=(-1203) ,

α4=(0623) ,α5=(2-634) 的秩,并判断其线性相关性。

A=[1 -2 2 3;-2 4 -1 3;-1 2 0 3;0 6 2 3;2 -6 3 4]; k=rank(A) 结果为 k = 3

由于秩为3

4.矩阵特征值和特征向量对n 阶矩阵A ,如果存在非0向量x 满足线性方程组(A-λE)x=0,则称λ是矩阵A 的特征值,x 是A 的对应于特征值λ的特征向量。对于每一个实对称矩阵A ,总可将A 转化为对角矩阵,其主对角线上的元素就是A 的n 个特征值。

[p,r]=eig(a)且 % eig=eigen(本征的,固有的) a 为输入矩阵。r 为特征值构成的对角阵。 p 的各列为对应于特征值的特征向量构成的矩阵。

⎛-211⎫

【例3-22】求矩阵A = 020⎪的特征值和特征向量

-413⎪⎝⎭

A=[-2 1 1;0 2 0;-4 1 3]; [V,D]=eig(A) 结果显示: V =

-0.7071 -0.2425 0.3015 0 0 0.9045 -0.7071 -0.9701 0.3015

D =

-1 0 0 0 2 0 0 0 2

即:特征值-1对应特征向量(-0.7071 0 -0.7071) T

特征值2对应特征向量(-0.2425 0 -0.9701) T 和(-0.3015 0.9045 -0.3015) T

⎛-110⎫ ⎪

【例3-23】 求矩阵A = -430⎪的特征值和特征向量。

102⎪⎝⎭

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

[V,D]=eig(A) 结果显示为 V =

0 0.4082 -0.4082

0 0.8165 -0.8165 1.0000 -0.4082 0.4082 D =

2 0 0

0 1 0 0 0 1

3.5矩阵的特殊运算

1.矩阵对角线元素的抽取

函数 diag

格式 X = diag(v,k) %以向量v 的元素作为矩阵X 的第k 条对角线元素,当k=0时,v 为X 的主对角线;当k>0时,v 为上方第k 条对角线;当k

X = diag(v) %以v 为主对角线元素,其余元素为0构成X 。

v = diag(X,k) %抽取X 的第k 条对角线元素构成向量v 。k=0:抽取主对角线元素; k>0:抽取上方第k 条对角线元素;k

v=[1 2 3]; x=diag(v,-1) x =

0 0 0 0

1 0 0 0 0 2 0 0 0 0 3 0

A=[1 2 3;4 5 6;7 8 9] A =

1 2 3 4 5 6

7 8 9 v=diag(A,1) v = 2 6

2.上三角阵和下三角阵的抽取

函数 tril %取下三角部分

格式 L = tril(X) %抽取X 的主对角线的下三角部分构成矩阵L

L = tril(X,k) %抽取X 的第k 条对角线的下三角部分;k=0为主对角线;k>0为主对角线以上;k

函数 triu %取上三角部分

格式 U = triu(X) %抽取X 的主对角线的上三角部分构成矩阵U

U = triu(X,k) %抽取X 的第k 条对角线的上三角部分;k=0为主对角线;k>0为主对角线以上;k

A=ones(4) %产生4阶全1阵 A =

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

L=tril(A,1) %取下三角部分 L =

1 1 0 0

1 1 1 0 1 1 1 1

1 1 1 1 U=triu(A,-1) %取上三角部分 U =

1 1 1 1

1 1 1 1 0 1 1 1

0 0 1 1 3.矩阵的变维

A (i,:)提取A 的第i 行A (:,j)提取A 的第j 列 A(:,j:k)取出A 的从第j 列到第k 列的元素所成的阵。 【例3-26】矩阵的变维

a=[1.1 1.2 1.3 1.4 2.1 2.2 2.3 2.4 3.1 3.2 3.3 3.4]; b=a(2,:) c=a(:,3) d=a(:,2:4)

b = 2.1000 2.2000 2.3000 2.4000 c = 1.3000 2.3000 3.3000

d = 1.2000 1.3000 1.4000 2.2000 2.3000 2.4000 3.2000 3.3000 3.4000 4.矩阵的变向

矩阵旋转函数

格式 B = rot90 (A) %将矩阵A 逆时针方向旋转90°

B = rot90 (A,k) %将矩阵A 逆时针方向旋转(k×90°) ,k 可取正负整数。 【例3-27】矩阵旋转。

A=[1 2 3;4 5 6;7 8 9] A =

1 2 3 4 5 6

7 8 9 Y1=rot90(A),Y2=rot90(A,-1) Y1 = %逆时针方向旋转 3 6 9

2 5 8 1 4 7

Y2 = %顺时针方向旋转 7 4 1

8 5 2 9 6 3 矩阵的左右翻转 函数 fliplr

格式 B = fliplr(A) %将矩阵A 左右翻转 矩阵的上下翻转 函数 flipud

格式 B = flipud(A) %将矩阵A 上下翻转 【例3-28】矩阵的翻转。

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

1 2 3

4 5 6 B1=fliplr(A),B2=flipud(A)

B1 =

3 2 1

6 5 4 B2 =

4 5 6

1 2 3 5.矩阵的比较关系

矩阵的比较关系是针对于两个矩阵对应元素的,所以在使用关系运算时,首先应该保证两个矩阵的维数一致或其中一个矩阵为标量。关系运算是对两个矩阵的对应运算进行比较,若关系满足,则将结果矩阵中该位置元素置为1,否则置0。MA TLAB 的各种比较关系运算见下表。

A=[1 2 3 4;5 6 7 8];B=[0 2 1 4;0 7 7 2]; C1=A==B, C2=A>=B, C3=A~=B C1 =

0 1 0 1 0 0 1 0 C2 =

1 1 1 1

1 0 1 1 C3 =

1 0 1 0

1 1 0 1

6.矩阵逻辑运算

设矩阵A 和B 都是m×n 矩阵或其中之一为标量,在MA TLAB 中定义了如下的逻辑运算:

矩阵的与运算

格式 A&B或and(A, B)

说明 A 与B 对应元素进行与运算,若两个数均非0,则结果元素的值为1,否则为0。

或运算

格式 A|B或or(A, B)

说明 A 与B 对应元素进行或运算,若两个数均为0,则结果元素的值为0,否则为1。

非运算

格式 ~A或not (A)

说明 若A 的元素为0,则结果元素为1,否则为0。 异或运算 格式 xor (A,B)

说明 A 与B 对应元素进行异或运算,若相应的两个数中一个为0,一个非0,则结果为0,否则为1。 【例3-30】矩阵逻辑运算

A=[0 2 3 4;1 3 5 0],B=[1 0 5 3;1 5 0 5] A =

0 2 3 4

1 3 5 0 B =

1 0 5 3 1 5 0 5

C1=A&B,C2=A|B,C3=~A,C4=xor(A,B) C1 =

0 0 1 1 1 1 0 0 C2 =

1 1 1 1 1 1 1 1 C3 =

1 0 0 0 0 0 0 1 C4 =

1 1 0 0 0 0 1 1

3.6 集 合 运 算

1.两个集合的交集

函数 intersect

格式 c = intersect(a,b) %返回向量a 、b 的公共部分,即c= a∩b 。

c = intersect(A,B,'rows') %A、B 为相同列数的矩阵,返回元素相同的行。 [c,ia,ib] = intersect(a,b) %c为a 、b 的公共元素,ia 表示公共元素在a 中的位置,ib 表示公共元素在b 中位置。

【例3-31】两个集合的交集

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

A =

1 2 3 4

1 2 4 6 6 7 1 4

B=[1 2 3 8;1 1 4 6;6 7 1 4] B =

1 2 3 8

1 1 4 6 6 7 1 4

C=intersect(A,B,'rows') C =

6 7 1 4 2.两集合的差

函数 setdiff

格式 c = setdiff(a,b) %返回属于a 但不属于b 的不同元素的集合,C = a-b。 c = setdiff(A,B,'rows') %返回属于A 但不属于B 的不同行

[c,i] = setdiff(„) %c与前面一致,i 表示c 中元素在A 中的位置。 【例3-32】两集合的差.

A = [1 7 9 6 20]; B = [1 2 3 4 6 10 20]; c=setdiff(A,B) c =

7 9

3.两个集合交集的非(异或)

函数 setxor

格式 c = setxor(a,b) %返回集合a 、b 交集的非

c = setxor(A,B,'rows') %返回矩阵A 、B 交集的非,A 、B 有相同列数。 [c,ia,ib] = setxor(„) %ia、ib 表示c 中元素分别在a (或A) 、b(或B) 中位置 【例3-33】两个集合交集的非。

A=[1 2 3 4]; B=[2 4 5 8]; C=setxor(A,B)

C =

1 3 5 8 4.两集合的并集

函数 union

格式 c = union(a,b) %返回a 、b 的并集,即c = a∪b 。

c = union(A,B,'rows') %返回矩阵A 、B 不同行向量构成的大矩阵,其中相同行向量只取其一。

[c,ia,ib] = union(„) %ia、ib 分别表示c 中行向量在原矩阵(向量) 中的位置 【例3-34】两集合的并集。

A=[1 2 3 4]; B=[2 4 5 8]; c=union(A,B) 则结果为

c =

1 2 3 4 5 8

3.7 线性方程的组的求解

n 个未知量的线性方程组可以写成

⎧a 11x 1⎪a x ⎪211⎨

⎪ ⎪⎩a m 1x 1

++ +

a 12x 2a 22x 2 a m 2x 2

++ +

++ +

a 1n x n a 2n x n a mn x n

== =

b 1b 2 b m

系数矩阵为

⎡a 11

A =⎢⎢a 21

⎢⎣a m 1

a 12a 22a m 2

a 1n ⎤

a 2n ⎥⎥ a mn ⎥⎦

加边(增广)矩阵为

⎡a 11

B =⎢⎢a 21

⎢⎣a m 1

a 12a 22

a 1n

a 2n

a m 2 a mn

b 1⎤

b 2⎥⎥ b m ⎥⎦

⎡x 1⎤⎡b 1⎤⎢x ⎥⎢b ⎥

2⎥为一待求列向量 b=⎢2⎥为一已知列向量 x=⎢⎢ ⎥⎢ ⎥⎢⎥⎢⎥x ⎣m ⎦⎣b m ⎦

由乘法定义有A*x=b

由克莱姆定理有

m

m>n;方程为超定方程

m=n时:

如det(A)≠0, 即A 的秩r(A)=n,方程组有唯一解。x=A\b.

如det(A)=0,即A 的秩r(A)

如果r(A) ≠r(B),方程组无解。

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

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

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

方程:AX=b

解法:X=A\b

⎧5x 1+6x 2⎪x 1+5x 2+6x 3⎪【例3-35】 求方程组⎨x 2+5x 3+6x 4⎪x 3+5x 4+6x 5⎪x 4+5x 5⎩

解:

A=[5 6 0 0 0

1 5 6 0 0

0 1 5 6 0

0 0 1 5 6

0 0 0 1 5];

B=[1 0 0 0 1]';

R_A=rank(A) %求秩

X=A\B %求解

运行后结果如下 =1=0=0的解。 =0=1

R_A = 5

X = 2.2662

-1.7218

1.0571

-0.5940

0.3188

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

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

格式 z = null % z的列向量为方程组的正交规范基,满足Z '⨯Z =I 。 z =null (A , 'r ') % z的列向量是方程AX=0的有理基

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

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

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

第二步:求AX=b的一个特解

第三步:求AX=0的通解

第四步:AX=b的通解= AX=0的通解+AX=b的一个特解。

⎧x 1-2x 2+3x 3-x 4=1⎪【例3-36】 求解方程组⎨3x 1-x 2+5x 3-3x 4=2

⎪⎩2x 1+x 2+2x 3-2x 4=3

解:在Matlab 中建立M 文件如下:

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

b=[1 2 3]';

B=[A b];

n=4;

R_A=rank(A)

R_B=rank(B)

format rat

if R_A==R_B&R_A==n %判断有唯一解

X=A\b

elseif R_A==R_B&R_A

X=A\b %求特解

C=null(A,'r') %求AX=0的基础解系

else X='equition no solve' %判断无解

end

运行后结果显示:

R_A = 2

R_B = 3

X =equition no solve

说明 该方程组无解

⎧x 1+x 2-3x 3-x 4=1⎪3x 1-x 2-3x 3+4x 4=4⎨【例3-37】 求解方程组的通解: ⎪⎩x 1+5x 2-9x 3-8x 4=0

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

A=[1 1 -3 -1;3 -1 -3 4;1 5 -9 -8];

b=[1 4 0]';

B=[A b];

n=4;

R_A=rank(A)

R_B=rank(B)

format rat

if R_A==R_B&R_A==n

X=A\b

elseif R_A==R_B&R_A

X=A\b

C=null(A,'r')

else X='Equation has no solves'

end

运行后结果显示为:

R_A =

2

R_B =

2

X =

-8/15

3/5

C =

3/2 -3/4

3/2 7/4

1 0

0 1

⎛ 3/2⎫⎛-3

所以原方程组的通解为X=k3/2⎪ /4⎫⎛0⎫

7⎪ ⎪

1 ⎪+k/4+ 0

2 ⎪⎪

1⎪ 0⎪ -8/15⎪

⎝0⎪⎭ ⎝1⎪⎭ ⎝3/5⎪⎭

(孙福玉

韩伟)


相关内容

  • 线性代数与空间解析几何学习指导
  • <线性代数与空间解析几何>学习指导 陈延梅 课程名称:线性代数与空间解析几何 英文名称:Linear Algebra and Space Analytic Geometry 开课院系:远程教育学院 开课学时:54 学 分:3 授课对象:远程教育学院专升本计算机科学与技术专业学生 一.教学 ...

  • [高等代数]考试大纲-内蒙古师范大学
  • <高等代数>考试大纲一.<高等代数>的课程性质 高等代数是数学与应用数学专业.信息与计算机科学专业和统计学专业一门重要基础课,是中学代数的继续和提高,但是又与中学代数有很大不同,表现在内容的深度和广度上,更主要表现在观点和方法上.具体表现在内容的高度抽象性.推理的严密性和解题 ...

  • 线性代数教学大纲(本科)
  • "线性代数"课程教学大纲 课程编号: 学时:72学时(含课外学时) 学分:4 分 适用对象:经济.计算机.环境.蒙文信息处理等专业 先修课程:初等数学 考核要求:闭卷 使用教材及主要参考书: 戴斌祥主编,<线性代数>,北京邮电大学出版社,2009年 同济大学数学系主编 ...

  • 安农大,2012-2013,线性代数试卷
  • 线性代数考点 一.5道填空.5道选择 主要涉及:围绕性质.定理的简单计算 二.4~5道计算题 1. 计算行列式,一般是四阶行列式 2. 解矩阵方程 3. 求解线性方程组,一般是非其次方程组(最好用第三章的内容解)包括了增广矩阵和基础解系 4. 向量组的秩,求解极大线性无关组 5. 矩阵的对角化,对称 ...

  • 矩阵分析习题
  • 研究生矩阵分析习题 第一部份 内容 第一章 线性空间与线性换 1.概念与性质 (1)线性空间.线性子空间.向量有关概念(线性相关.线性无关.线性表出,向量组的秩.基.维数.坐标).过渡矩阵.基坐标关系 (2)子空间:和.交.直和.维数公式 (3)线性空间同构,同构性质 (4)线性变换.线性变换空间. ...

  • 矩阵行列式和代数多项式根的计算问题
  • 电子科技大学 硕士学位论文 矩阵行列式和代数多项式根的计算问题 姓名:刘伟 申请学位级别:硕士 专业:计算数学 指导教师:蒋泽云 20080501 摘要 摘要 矩阵行列式和代数多项式根的计算问题,实际上是复杂而又很经典的数学问题之一,很早人们就对其进行了研究.因此,对其进行研究具有很高的理论和应用价 ...

  • 大学数学知识点(微积分,线性代数)
  • 线性代数知识点 第一章 行列式 1. 二阶.三阶行列式的计算* 2. 行列式的性质(转置,换行,数乘,求和,数乘求和) 3. 行列式展开(=D,=0) 4. 利用性质计算四.五阶行列式 5. 克拉默法则解线性方程组及对方程组解的判定(分非齐次的和齐次的) 主要是行列式的计算 第二章 矩阵 1. 矩阵 ...

  • 考研数学一常考题型及重点汇总
  • 第二篇 高等数学 第一章 函数.极限.连续 思考的鱼点拨 "函数.极限.连续"这一部分的概念及运算是高等数学的基础,它们是每年必考的内容之一,数学一中本部分分数平均每年约占高等数学部分的10%. 本章的考题类型及知识点大致有: 1.求函数的表达式: (1)给出函数在某一区间上的表 ...

  • [高等代数]课程教学大纲
  • <高等代数>课程教学大纲 (Higher Algebra) 学时数: 72 学分: 4 适用专业: 小学教育(数学与科学方向) 一 课程的性质.目的和任务 1. 课程性质: 高等代数是小学教育本科专业的一门重要的专业基础课程.它不仅是应用学科的重要工具课,而且在近代数学理论中也是一门很重 ...