当前位置:文档之家› 矩阵及其基本运算

矩阵及其基本运算

矩阵及其基本运算
矩阵及其基本运算

第1章矩阵及其基本运算

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

1.1 矩阵的表示

1.1.1 数值矩阵的生成

1.实数值矩阵输入

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

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

>> Time = [11 12 1 2 3 4 5 6 7 8 9 10]

Time =

11 12 1 2 3 4 5 6 7 8 9 10

>> X_Data = [2.32 3.43;4.37 5.98]

X_Data =

2.43

3.43

4.37

5.98

>> vect_a = [1 2 3 4 5]

vect_a =

1 2 3 4 5

>> Matrix_B = [1 2 3;

>> 2 3 4;3 4 5]

Matrix_B = 1 2 3

2 3 4

3 4 5

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

2.复数矩阵输入

复数矩阵有两种生成方式:

第一种方式

例1-1

>> 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

第2种方式

例1-2

>> R=[1 2 3;4 5 6], M=[11 12 13;14 15 16]

R =

1 2 3

4 5 6

M =

11 12 13

14 15 16

>> CN=R+i*M

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

1.1.2 符号矩阵的生成

在MATLAB中输入符号向量或者矩阵的方法和输入数值类型的向量或者矩阵在形式上很相像,只不过要用到符号矩阵定义函数sym,或者是用到符号定义函数syms,先定义一些必要的符号变量,再像定义普通矩阵一样输入符号矩阵。

1.用命令sym定义矩阵:

这时的函数sym实际是在定义一个符号表达式,这时的符号矩阵中的元素可以是任何的符号或者是表达式,而且长度没有限制,只是将方括号置于用于创建符号表达式的单引号中。如下例:

例1-3

>> sym_matrix = sym('[a b c;Jack,Help Me!,NO WAY!],')

sym_matrix =

[a b c]

[Jack Help Me! NO WAY!]

>> sym_digits = sym('[1 2 3;a b c;sin(x)cos(y)tan(z)]')

sym_digits =

[1 2 3]

[a b c]

[sin(x)cos(y)tan(z)]

2.用命令syms定义矩阵

先定义矩阵中的每一个元素为一个符号变量,而后像普通矩阵一样输入符号矩阵。

例1-4

>> syms a b c ;

>> M1 = sym('Classical');

>> M2 = sym(' Jazz');

>> M3 = sym('Blues')

>> syms_matrix = [a b c;M1,M2,M3;int2str([2 3 5])]

syms_matrix =

[ a b c]

[Classical Jazz Blues]

[ 2 3 5]

把数值矩阵转化成相应的符号矩阵。

数值型和符号型在MATLAB中是不相同的,它们之间不能直接进行转化。MA TLAB提供了一个将数值型转化成符号型的命令,即sym。

例1-5

>> Digit_Matrix = [1/3 sqrt(2)3.4234;exp(0.23)log(29)23^(-11.23)]

>> Syms_Matrix = sym(Digit_Matrix)

结果是:

Digit_Matrix =

0.3333 1.4142 3.4234

1.2586 3.3673 0.0000

Syms_Matrix =

[ 1/3,sqrt(2),17117/5000]

[5668230535726899*2^(-52),7582476122586655*2^(-51),5174709270083729*2^(-103)]

注意:矩阵是用分数形式还是浮点形式表示的,将矩阵转化成符号矩阵后,都将以最接近原值的有理数形式表示或者是函数形式表示。

1.1.3 大矩阵的生成

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

例1-6 用M文件创建大矩阵,文件名为example.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窗口输入:

>>example;

>>size(exm) %显示exm的大小

ans=

5 6 %表示exm有5行6列。

1.1.4 多维数组的创建

函数cat

格式A=cat(n,A1,A2,…,Am)

说明n=1和n=2时分别构造[A1;A2]和[A1,A2],都是二维数组,而n=3时可以构造出三维数组。

例1-7

>> A1=[1,2,3;4,5,6;7,8,9];A2=A1';A3=A1-A2;

>> A4=cat(3,A1,A2,A3)

A4(:,:,1) =

1 2 3

4 5 6

7 8 9

A4(:,:,2) =

1 4 7

2 5 8

3 6 9

A4(:,:,3) =

0 -2 -4

2 0 -2

4 2 0

或用另一种原始方式可以定义:

例1-8

>> A1=[1,2,3;4,5,6;7,8,9];A2=A1';A3=A1-A2;

>> A5(:,:,1)=A1, A5(:,:,2)=A2, A5(:,:,3)=A3

A5(:,:,1) =

1 2 3

4 5 6

7 8 9

A5(:,:,2) =

1 4 7

2 5 8

3 6 9

A5(:,:,3) =

0 -2 -4

2 0 -2

4 2 0

1.1.5 特殊矩阵的生成

命令全零阵

函数zeros

格式 B = zeros(n) %生成n×n全零阵

B = zeros(m,n) %生成m×n全零阵

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

B = zeros(d1,d2,d3…) %生成d1×d2×d3×…全零阵或数组

B = zeros([d1 d2 d3…]) %生成d1×d2×d3×…全零阵或数组

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(d1,d2,d3…) %生成d1×d2×d3×…全1阵或数组

Y = ones([d1 d2 d3…]) %生成d1×d2×d3×…全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(m,n,p,…) %生成m×n×p×…随机矩阵或数组

Y = rand([m n p…]) %生成m×n×p×…随机矩阵或数组

Y = rand(size(A)) %生成与矩阵A相同大小的随机矩阵

rand %无变量输入时只产生一个随机数

s = rand('state') %产生包括均匀发生器当前状态的35个元素的向量rand('state', s) %使状态重置为s

rand('state', 0) %重置发生器到初始状态

rand('state', j) %对整数j重置发生器到第j个状态

rand('state', sum (100*clock)) %每次重置到不同状态

例1-9 产生一个334随机矩阵

>> 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

例1-10 产生一个在区间[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) %生成m×n正态分布随机矩阵

Y = randn([m n]) %生成m×n正态分布随机矩阵

Y = randn(m,n,p,…) %生成m×n×p×…正态分布随机矩阵或数组

Y = randn([m n p…]) %生成m×n×p×…正态分布随机矩阵或数组

Y = randn(size(A)) %生成与矩阵A相同大小的正态分布随机矩阵

randn %无变量输入时只产生一个正态分布随机数

s = randn('state') %产生包括正态发生器当前状态的2个元素的向量

s = randn('state', s) %重置状态为s

s = randn('state', 0) %重置发生器为初始状态

s = randn('state', j) %对于整数j重置状态到第j状态

s = randn('state', sum(100*clock)) %每次重置到不同状态

例1-11 产生均值为0.6,方差为0.1的4阶矩阵

>> 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

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

>> 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

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

y = logspace(a,b,n) y = logspace(a,pi) 命令 计算矩阵中元素个数

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

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

out =

1 0 0 0 0

2 0 0 0 0

3 0 0 0 0 4

命令 友矩阵 函数 compan

格式 A = compan(u) %u 为多项式系统向量,A 为友矩阵,A 的第1行元素为

-u (2:n)/u(1),其中u (2:n)为u 的第2到第n 个元素,A 为特征值就是多项式的特征根。

例1-14 求多项式 的友矩阵和根

>> u=[1 0 -7 6];

>> A=compan(u) %求多项式的友矩阵

A =

0 7 -6 1 0 0 0 1 0

>> eig(A) %A 的特征值就是多项式的根

ans =

b

a 10,1067)3)(2)(1(3

+-=+--x x x x x

-3.0000

2.0000

1.0000

命令hadamard矩阵

函数hadamard

格式H = hadamard(n) %返回n阶hadamard矩阵

例1-15

>> h=hadamard(4)

h =

1 1 1 1

1 -1 1 -1

1 1 -1 -1

1 -1 -1 1

命令Hankel方阵

函数hankel

格式H = hankel(c) %第1列元素为c,反三角以下元素为0。

H = hankel(c,r) %第1列元素为c,最后一行元素为r,如果c的最后一个元素

与r的第一个元素不同,交叉位置元素取为c的最后一个元素。例1-16

>> c=1:3,r=7:10

c =

1 2 3

r =

7 8 9 10

>> h=hankel(c,r)

h =

1 2 3 8

2 3 8 9

3 8 9 10

命令Hilbert矩阵

函数hilb

格式H = hilb(n) %返回n阶Hilbert矩阵,其元素为H(i,j)=1/(i+j-1)。

例1-17 产生一个3阶Hilbert矩阵

>> format rat %以有理形式输出

>> H=hilb(3)

H =

1 1/

2 1/3

1/2 1/3 1/4

1/3 1/4 1/5

命令逆Hilbert矩阵

函数invhilb

格式H = invhilb(n) %产生n阶逆Hilbert矩阵

命令Magic(魔方)矩阵

函数magic

格式M = magic(n) %产生n 阶魔方矩阵

例1-18

>> M=magic(3)

M =

8 1 6

3 5 7

4 9 2

命令Pascal矩阵

函数pascal

格式 A = pascal(n) %产生n阶Pascal矩阵,它是对称、正定矩阵,它的元素由

Pascal三角组成,它的逆矩阵的所有元素都是整数。

A = pascal(n,1) %返回由下三角的Cholesky系数组成的Pascal矩阵

A = pascal(n,2) %返回Pascal(n,1)的转置和交换的形式

例1-19

>> A=pascal(4)

A =

1 1 1 1

1 2 3 4

1 3 6 10

1 4 10 20

>> A=pascal(3,1)

A =

1 0 0

1 -1 0

1 -

2 1

>> A=pascal(3,2)

A =

1 1 1

-2 -1 0

1 0 0

命令托普利兹矩阵

函数toeplitz

格式T = toeplitz(c,r) %生成一个非对称的托普利兹矩阵,将c作为第1列,将r作

为第1 行,其余元素与左上角相邻元素相等。

T = toeplitz(r) %用向量r生成一个对称的托普利兹矩阵

例1-20

>> c=[1 2 3 4 5];

>> r=[1.5 2.5 3.5 4.5 5.5];

>> T=toeplitz(c,r)

T =

1 5/

2 7/2 9/2 11/2

2 1 5/2 7/2 9/2

3 2 1 5/2 7/2

4 3 2 1 5/2

5 4 3 2 1

命令Wilkinson特征值测试阵

函数wilkinson

格式W = wilkinson(n) %返回n阶Wilkinson特征值测试阵

例1-21

>> W=wilkinson(4)

W =

3/2 1 0 0

1 1/

2 1 0

0 1 1/2 1

0 0 1 3/2

>> W=wilkinson(7)

W =

3 1 0 0 0 0 0

1 2 1 0 0 0 0

0 1 1 1 0 0 0

0 0 1 0 1 0 0

0 0 0 1 1 1 0

0 0 0 0 1 2 1

0 0 0 0 0 1 3

1.2 矩阵运算

1.2.1 加、减运算

运算符:“+”和“-”分别为加、减运算符。

运算规则:对应元素相加、减,即按线性代数中矩阵的“十”,“一”运算进行。

例1-22

>>A=[1, 1, 1; 1, 2, 3; 1, 3, 6]

>>B=[8, 1, 6; 3, 5, 7; 4, 9, 2]

>>A+B=A+B

>>A-B=A-B

结果显示:A+B=

9 2 7

4 7 10

5 12 8

A-B=

-7 0 -5

-2 -3 -4

-3 -6 4

1.2.2 乘法

运算符:*

运算规则:按线性代数中矩阵乘法运算进行,即放在前面的矩阵的各行元素,分别与放在后面的矩阵的各列元素对应相乘并相加。

1.两个矩阵相乘

例1-23

>>X= [2 3 4 5;

1 2 2 1];

>>Y=[0 1 1;

1 1 0;

0 0 1;

1 0 0];

Z=X*Y

结果显示为:

Z=

8 5 6

3 3 3

2.矩阵的数乘:数乘矩阵

上例中:a=2*X

则显示:a =

4 6 8 10

2 4 4 2

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

数组乘法:

A.*B表示A与B对应元素相乘。

3.向量点积

函数dot

格式 C = dot(A,B) %若A、B为向量,则返回向量A与B的点积,A与B长度

相同;若为矩阵,则A与B有相同的维数。

C = dot(A,B,dim) %在dim维数中给出A与B的点积

例>>X=[-1 0 2];

>>Y=[-2 -1 1];

>>Z=dot(X, Y)

则显示:Z =

4

还可用另一种算法:

sum(X.*Y)

ans=

4

可4.向量叉乘

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

函数cross

格式 C = cross(A,B) %若A、B为向量,则返回A与B的叉乘,即C=A3B,A、B

必须是3个元素的向量;若A、B为矩阵,则返回一个33n

矩阵,其中的列是A与B对应列的叉积,A、B都是33n矩

阵。

C = cross(A,B,dim) %在dim维数中给出向量A与B的叉积。A和B必须具有

相同的维数,size(A,dim)和size(B,dim)必须是3。

例1-24 计算垂直于向量(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)

5.混合积

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

例1-25 计算向量a=(1, 2, 3)、b=(4, 5, 6)和c=(-3, 6, -3) 的混合积)c b (a ?? 解:

>>a=[1 2 3]; b=[4 5 6]; c=[-3 6 -3]; >>x=dot(a, cross(b, c)) 结果显示:x = 54

注意:先叉乘后点乘,顺序不可颠倒。

6.矩阵的卷积和多项式乘法 函数 conv

格式 w = conv(u,v) %u 、v 为向量,其长度可不相同。

说明 长度为m 的向量序列u 和长度为n 的向量序列v 的卷积(Convolution)定义为:

∑=-+=k

1

j )j 1k (v )j (u )k (w 式中:w 向量序列的长度为(m+n-1),当m=n 时,

w(1) = u(1)*v(1)

w(2) = u(1)*v(2)+u(2)*v(1)

w(3) = u(1)*v(3)+u(2)*v(2)+u(3)*v(1) …

w(n) = u(1)*v(n)+u(2)*v(n-1)+ … +u(n)*v(1) …

w(2*n-1) = u(n)*v(n)

例1-26 展开多项式)1()4()22(2++++s s s s 解:>> w=conv([1,2,2],conv([1,4],[1,1]))

w =

1 7 16 18 8

>> P=poly2str(w,'s') %将w 表示成多项式

P =

s^4 + 7 s^3 + 16 s^2 + 18 s + 8

7.反褶积(解卷)和多项式除法运算 函数 deconv

格式 [q,r] = deconv(v,u) %多项式v 除以多项式u ,返回商多项式q 和余多项式r 。 注意:v 、u 、q 、r 都是按降幂排列的多项式系数向量。

例1-27

,则其卷积为 >>u = [1 2 3 4]

>>v = [10 20 30] >>c = conv(u,v)

c =

10 40 100 160 170 120 则反褶积为

>>[q,r] = deconv(c,u)

q =

10 20 30 r =

0 0 0 0 0 0

8.张量积

)302010)(432(2

23+++++x x x x x

函数 kron

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

说明 A 与B 的张量积定义为:?

?

??

??

?

??

???=?=B a B

a B a B a B a B a B a B

a B a B A C mn 2m 1m n 222

21n 11211

A ?

B 与B ?A

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

例1-28 ???

???=4321A ????

?

?????=987654321B 求A ?B 。 >> 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

1.2.3 集合运算

1.两个集合的交集 函数 intersect

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

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

的位置,ib 表示公共元素在b 中位置。

例1-29

>> 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

例1-30

>> A = [1 9 6 20]; B = [1 2 3 4 6 10 20]; >> [c,ia,ib] = intersect(A,B)

c =

1 6 20

ia =

1 3 4

ib =

1 5 7

2.检测集合中的元素

函数ismember

格式k = ismember(a,S) %当a中元素属于S时,k取1,否则,k取0。

k = ismember(A,S,'rows') %A、S有相同的列数,返回行相同k取1,不相同取

0的列向量。

例1-31

>> S=[0 2 4 6 8 10 12 14 16 18 20];

>> a=[1 2 3 4 5 6];

>> k=ismember(a,S)

k =

0 1 0 1 0 1 %1表示相同元素的位置

例1-32

>> 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]

>> k=ismember(A,B,'rows')

k =

1 %1表示元素相同的行

3.两集合的差

函数setdiff

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

c = setdiff(A,B,'rows') %返回属于A但不属于B的不同行

[c,i] = setdiff(…) %c与前面一致,i表示c中元素在A中的位置。

例1-33

>> A = [1 7 9 6 20]; B = [1 2 3 4 6 10 20];

>> c=setdiff(A,B)

c =

7 9

例1-34

>> 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]

>> c=setdiff(A,B,'rows')

c =

1 2 3 4

1 2 4 6

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

函数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)中位置

例1-35

>> A=[1 2 3 4];

>> B=[2 4 5 8];

>> C=setxor(A,B)

C =

1 3 5 8

例1-36

>> 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,ia,ib]=setxor(A,B,'rows')

C =

1 1 4 6

1 2 3 4

1 2 3 8

1 2 4 6

ia =

1

2

ib =

2

1

5.两集合的并集

函数union

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

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

向量只取其一。

[c,ia,ib] = union(…) %ia、ib分别表示c中行向量在原矩阵(向量)中的位置例1-37

>> A=[1 2 3 4];

>> B=[2 4 5 8];

>> c=union(A,B)

则结果为

c =

1 2 3 4 5 8

例1-38

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

A =

1 2 3 4

1 2 4 6

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

B =

1 2 3 8

1 1 4 6

>> [c,ia,ib]=union(A,B,'rows')

c =

1 1 4 6

1 2 3 4

1 2 3 8

1 2 4 6

ia =

1

2

ib =

2

1

6.取集合的单值元素

函数

格式 b = unique (a) %取集合a的不重复元素构成的向量

b = unique (A,'rows') %返回A、B不同行元素组成的矩阵

[b,i,j] = unique (…) %i、j体现b中元素在原向量(矩阵)中的位置例1-39

>> A=[1 1 2 2 4 4 6 4 6]

A =

1 1

2 2 4 4 6 4 6

>> [c,i,j]=unique(A)

c =

1 2 4 6

i =

2 4 8 9

j =

1 1

2 2

3 3

4 3 4

例1-40

>> A=[1 2 2 4;1 1 4 6;1 1 4 6]

A =

1 2 2 4

1 1 4 6

1 1 4 6

>> [c,i,j]=unique(A,'rows')

c =

1 1 4 6

1 2 2 4

i =

3

1

j =

2

1

1

1.2.4 除法运算

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

例: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 为非奇异矩阵,则a\b 和b/a 可通过a 的逆矩阵与b 阵得到:

a\b = inv(a)*b b/a = b*inv(a)

数组除法:

A./B 表示A 中元素与B 中元素对应相除。

1.2.5 矩阵乘方

运算符:^ 运算规则:

(1)当A 为方阵,P 为大于0的整数时,A^P 表示A 的P 次方,即A 自乘P 次;P 为小于0的整数时,A^P 表示A -1的P 次方。

(2)当A 为方阵,p 为非整数时,则1

11^-????

??????=V d d V P A p nn p 其中V 为A 的特征

向量,?

???

???

?nn 11d d

为特征值对角矩阵。如果有重根,以上指令不成立。 (3)标量的矩阵乘方P A ,标量的矩阵乘方定义为1

d d A V p p V P n n 11-??

???

?

??????= 式中V ,D 取自特征值分解A V=AD 。

(4)标量的数组乘方P.^A ,标量的数组乘方定义为?

???

??

????

?

?=n m 1m n

111

a a a a p p p

p A .^P

数组乘方:A.^P :表示A 的每个元素的P 次乘方。

1.2.6 矩阵函数

命令 方阵指数 函数 expm

格式 Y = expm(A) %使用Pade 近似算法计算e A ,这是一个内部函数,A 为方阵。 Y=expm1(A) %使用一个M 文件和内部函数相同的算法计算e A Y=expm2(A) %使用泰勒级数计算e A

Y=expm3(A) %使用特征值和特征向量计算e A

命令矩阵的对数

函数logm

格式Y = logm(X) %计算矩阵X的对数,它是expm(X)的反函数。

[Y,esterr] = logm(X) %esterr为相对残差的估计值:norm(expm(Y)-X)/norm(X) 例1-41

>> A=[1 1 0;0 0 2;0 0 -1];

>> Y=expm(A)

Y =

2.7183 1.7183 1.0862

0 1.0000 1.2642

0 0 0.3679

>> A=logm(Y)

A =

1.0000 1.0000 0.0000

0 0 2.0000

0 0 -1.0000

命令方阵的函数

函数funm

格式 F = funm(A,fun) %A为方阵,计算由fun指定的A的矩阵函数,fun可以

是任意基本函数,如sin、cos等等,例如:

funm(A, ’exp’)=expm(A)。

[F,esterr] = funm(A,fun) %esterr为结果所产生的相对误差的估计值。

命令矩阵的方根

函数sqrtm

格式X = sqrtm(A) %矩阵A的平方根A1/2,相当于X*X=A,求X。若A的特征值

有非负实部,则X是唯一的;若A的特征值有负的实部,则X

为复矩阵;若A为奇异矩阵,则X不存在。

[X,resnorm] = sqrtm(A) % resnorm为结果产生的相对误差

[X,alpha,condest] = sqrtm(A) % alpha为稳定因子,condest为结果的条件数的估

计值。

命令矩阵A的多项式

函数polyvalm

格式polyvalm(P, A) %P为多项式系数向量,方阵A为多项式变量,返回多项式值。

1.2.7 矩阵转置

运算符:′

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

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

若仅希望转置,则用如下命令:A.′。

1.2.8 方阵的行列式

函数det

格式 d = det(X) %返回方阵X 的多项式的值 例1-42

>> 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

1.2.9 逆与伪逆

命令 逆 函数 inv

格式 Y=inv(X) %求方阵X 的逆矩阵。若X 为奇异阵或近似奇异阵,将给出警告信息。

例1-43 求???

?

?

??=343122321A 的逆矩阵

方法一

>>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

方法二:由增广矩阵???

?

? ??=100343010122001321B 进行初等行变换

>>B=[1, 2, 3, 1, 0, 0; 2, 2, 1, 0, 1, 0; 3, 4, 3, 0, 0, 1];

>>C=rref(B) %化行最简形

>>X=C(:, 4:6) %取矩阵C 中的A^(-1)部分 显示结果如下: C =

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 X =

1.0000 3.0000 -

2.0000 -1.5000 -

3.0000 2.5000 1.0000 1.0000 -1.0000

例1-44

>> 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

命令 伪逆 函数 pinv

格式 B = pinv(A) %求矩阵A 的伪逆

B = pinv(A, tol) %tol 为误差:max(size(A))*norm(A)*eps

说明 当矩阵为长方阵时,方程AX=I 和XA=I 至少有一个无解,这时A 的伪逆能在某种程度上代表矩阵的逆,若A 为非奇异矩阵,则pinv(A) = inv(A)。

例1-45

>> A=magic(5); %产生5阶魔方阵。

>> A=A(:,1:4) %取5阶魔方阵的前4列元素构成矩阵A 。

A =

17 24 1 8 23 5 7 14 4 6 13 20 10 12 19 21 11 18 25 2 >> X=pinv(A) %计算A 的伪逆

X =

-0.0041 0.0527 -0.0222 -0.0132 0.0069 0.0437 -0.0363 0.0040 0.0033 0.0038 -0.0305 0.0027 -0.0004 0.0068 0.0355 0.0060 -0.0041 0.0314 0.0211 -0.0315

1.2.10 矩阵的迹

函数 trace

格式 b=trace (A) %返回矩阵A 的迹,即A 的对角线元素之和。

1.2.11 矩阵和向量的范数

命令 向量的范数 函数 norm

格式 n = norm(X) %X 为向量,求欧几里德范数,即∑=

22||||||k

x

X 。

n = norm(X,inf) %求∞-范数,即))X (abs (max ||X ||=。 n = norm(X,1) %求1-范数,即∑=k

k 1|x |||X ||。

n = norm(X,-inf) %求向量X 的元素的绝对值的最小值,即))X (abs (min ||X ||=。 n = norm(X, p) %求p-范数,即p

k

p k p |x |||X ||∑=,所以norm(X,2) = norm(X)。

命令 矩阵的范数 函数 norm

格式 n = norm(A) %A 为矩阵,求欧几里德范数2||A ||,等于A 的最大奇异值。

n = norm(A,1) %求A 的列范数1||A ||,等于A 的列向量的1-范数的最大值。

n = norm(A,2) %求A 的欧几里德范数2||A ||,和norm(A)相同。

n = norm(A,inf) %求行范数∞||A ||,等于A 的行向量的1-范数的最大值 即:max(sum(abs(A')))。

n = norm(A, 'fro' ) %求矩阵A 的Frobenius 范数∑∑=

i

j

2j i F |a |||A ||,

即sqrt(sum(diag(A'*A))),不能用矩阵p-范数的定义来求。 命令 范数的估计值 函数 normest

格式 nrm = normest(A) %矩阵A 的2-范数(欧几里德范数)的估计值,相对误

差小于106。

nrm = normest(A,tol) %tol 为指定相对误差

[nrm,count] = normest(…) %count 给出计算估计值的迭代次数

1.2.12 条件数

命令 矩阵的条件数 函数 cond

格式 c = cond(X) %求X 的2-范数的条件数,即X 的最大奇异值和最小奇异值的商。

c = cond(X,p) %求p-范数的条件数,p 的值可以是1、2、inf 或者’fro’。 说明 线性方程组AX=b 的条件数是一个大于或者等于1的实数,用来衡量关于数据中的扰动,也就是A/或b 对解X 的灵敏度。一个差条件的方程组的条件数很大。条件数的定义为:|||||||)(1-A A A cond

命令 1-范数的条件数估计 函数 condest

格式 c = condest (A) %方阵A 的1-范数的条件数的下界估值。

[c,v] = condest (A) %v 为向量,满足c

||

v ||||A ||||Av ||?=

,即norm(A*v,1) =norm(A,1)*norm(v,1)/c 。

[c,v] = condest (A,t) %求上面的c 和v ,同时显示出关于计算的步骤信息。如果

t=1,则计算的每步都显示出来;如果t=-1,则给出商c/rcond(A)。 命令 矩阵可逆的条件数估值 函数 rcond

格式 c = rcond(A) %对于差条件矩阵A 来说,给出一个接近于0的数;对于好条件

矩阵A ,则给出一个接近于1的数。

命令 特征值的条件数 函数 condeig

格式 c = condeig(A) %返回矩阵A 的特征值的条件数

[V,D,c] = condeig(A) %D 为A 的特征值对角阵,V 为A 的特征向量。

矩阵的运算及其运算规则

矩阵基本运算及应用 201700060牛晨晖 在数学中,矩阵是一个按照长方阵列排列的复数或实数集合。矩阵是高等代数学中的常见工具,也常见于统计分析等应用数学学科中。在物理学中,矩阵于电路学、力学、光学和量子物理中都有应用;计算机科学中,三维动画制作也需要用到矩阵。矩阵的运算是数值分析领域的重要问题。将矩阵分解为简单矩阵的组合可以在理论和实际应用上简化矩阵的运算。在电力系统方面,矩阵知识已有广泛深入的应用,本文将在介绍矩阵基本运算和运算规则的基础上,简要介绍其在电力系统新能源领域建模方面的应用情况,并展望随机矩阵理论等相关知识与人工智能电力系统的紧密结合。 1矩阵的运算及其运算规则 1.1矩阵的加法与减法 1.1.1运算规则 设矩阵,, 则

简言之,两个矩阵相加减,即它们相同位置的元素相加减! 注意:只有对于两个行数、列数分别相等的矩阵(即同型矩阵),加减法运算才有意义,即加减运算是可行的. 1.1.2运算性质 满足交换律和结合律 交换律; 结合律. 1.2矩阵与数的乘法 1.2.1运算规则 数乘矩阵A,就是将数乘矩阵A中的每一个元素,记为或. 特别地,称称为的负矩阵. 1.2.2运算性质 满足结合律和分配律 结合律:(λμ)A=λ(μA);(λ+μ)A =λA+μA. 分配律:λ(A+B)=λA+λB.

已知两个矩阵 满足矩阵方程,求未知矩阵. 解由已知条件知 1.3矩阵与矩阵的乘法 1.3.1运算规则 设,,则A与B的乘积是这样一个矩阵: (1) 行数与(左矩阵)A相同,列数与(右矩阵)B相同,即 . (2) C的第行第列的元素由A的第行元素与B的第列元素对应相乘,再取乘积之和.

求矩阵的基本运算

求矩阵的基本运算 #include #include void jiafa() { int m,n; float a[20][20],b[20][20],c[20][20]; int i,j; printf("请输入矩阵行数:"); scanf("%d",&m); printf("请输入矩阵列数:"); scanf("%d",&n); printf("请输入第一个矩阵:"); for(i=0; i

MATLAB实验二 矩阵基本运算(一)答案

实验一 矩阵基本运算(一) (1)设A 和B 是两个同维同大小的矩阵,问: 1)A*B 和A.*B 的值是否相等? ????? ?? =763514432A ???? ? ??=94 525 313 4B A=[2 3 4;4 1 5;3 6 7]; B=[4 3 1;3 5 2;5 4 9]; A*B, A.*B ans = 37 37 44 44 37 51 65 67 78 ans = 8 9 4 12 5 10 15 24 63 2)A./B 和B.\A 的值是否相等? A=[2 3 4;4 1 5;3 6 7]; B=[4 3 1;3 5 2;5 4 9]; A./B, B./A

ans = 0.5000 1.0000 4.0000 1.3333 0.2000 2.5000 0.6000 1.5000 0.7778 ans = 2.0000 1.0000 0.2500 0.7500 5.0000 0.4000 1.6667 0.6667 1.2857 3)A/B和B\A的值是否相等? A=[2 3 4;4 1 5;3 6 7]; B=[4 3 1;3 5 2;5 4 9]; A/B, B/A ans = -0.3452 0.5119 0.3690 0.7857 -0.7857 0.6429 -0.9762 1.3095 0.5952 ans = 110.0000 -15.0000 -52.0000

92.0000 -13.0000 -43.0000 -22.0000 4.0000 11.0000 4)A/B和B\A所代表的数学含义是什么? 解: A/B是B*A的逆矩阵 B\A是B*A的逆矩阵 (2)写出完成下列操作的命令。 1)将矩阵A第2—5行中第1,3,5列元素赋给矩阵B。 A=[0.9501 0.4565 0.9218 0.4103 0.1389 0.0153 0.2311 0.0185 0.7382 0.8936 0.2028 0.7468 0.6068 0.8214 0.1763 0.0579 0.1987 0.4451 0.4860 0.4447 0.4057 0.3529 0.6038 0.9318 0.8913 0.6154 0.9355 0.8132 0.2722 0.4660 0.7621 0.7919 0.9169 0.0099 0.1988 0.4186] B=A(2:5,[1,3,5]) A = 0.9501 0.4565 0.9218 0.4103 0.1389 0.0153 0.2311 0.0185 0.7382 0.8936 0.2028 0.7468 0.6068 0.8214 0.1763 0.0579 0.1987 0.4451 0.4860 0.4447 0.4057 0.3529 0.6038 0.9318 0.8913 0.6154 0.9355 0.8132 0.2722 0.4660 0.7621 0.7919 0.9169 0.0099 0.1988 0.4186 B = 0.2311 0.7382 0.2028 0.6068 0.1763 0.1987 0.4860 0.4057 0.6038 0.8913 0.9355 0.2722 2)删除矩阵A的第7号元素。 A=rand(6,6); >> A(7)=[inf] A = 0.8385 Inf 0.1730 0.1365 0.2844 0.5155

MATLAB矩阵运算基础练习题

第2章 MATLAB 矩阵运算基础 2.1 在MA TLAB 中如何建立矩阵?? ?? ??194375,并将其赋予变量a ? 2.2 请产生一个100*5的矩阵,矩阵的每一行都是[1 2 3 4 5] 2.3产生一个1x10的随机矩阵,大小位于(-5 5) 2.2 有几种建立矩阵的方法?各有什么优点? 可以用四种方法建立矩阵: ①直接输入法,如a=[2 5 7 3],优点是输入方法方便简捷; ②通过M 文件建立矩阵,该方法适用于建立尺寸较大的矩阵,并且易于修改; ③由函数建立,如y=sin(x),可以由MATLAB 的内部函数建立一些特殊矩阵; ④通过数据文件建立,该方法可以调用由其他软件产生数据。 2.3 在进行算术运算时,数组运算和矩阵运算各有什么要求? 进行数组运算的两个数组必须有相同的尺寸。进行矩阵运算的两个矩阵必须满足矩阵运算规则,如矩阵a 与b 相乘(a*b )时必须满足a 的列数等于b 的行数。 2.4 数组运算和矩阵运算的运算符有什么区别? 在加、减运算时数组运算与矩阵运算的运算符相同,乘、除和乘方运算时,在矩阵运算的运算符前加一个点即为数组运算,如a*b 为矩阵乘,a.*b 为数组乘。 2.5 计算矩阵??????????897473535与???? ??????638976242之和,差,积,左除和右除。 2.6 求?? ?? ??+-+-+-+-++=i 44i 93i 49i 67i 23i 57i 41i 72i 53i 84x 的共轭转置。 2.7 计算???? ??=572396a 与??????=864142b 的数组乘积。 2.8 “左除”与“右除”有什么区别? 在通常情况下,左除x=a\b 是a*x=b 的解,右除x=b/a 是x*a=b 的解,一般情况下,a\b ≠b/a 。 2.9 对于B AX =,如果??????????=753467294A ,???? ??????=282637B ,求解X 。 2.10 已知:???? ??????=987654321a ,分别计算a 的数组平方和矩阵平方,并观察其结果。 2.11 ??????-=463521a ,?? ????-=263478b ,观察a 与b 之间的六种关系运算的结果。

第一讲 矩阵的概念、运算

第一讲 Ⅰ 授课题目(章节): §2.1 矩阵的概念; §2.2 矩阵的计算 Ⅱ 教学目的与要求: 理解矩阵概念; 掌握矩阵的线性运算、乘法、转置及其运算规律。 Ⅲ 教学重点与难点: 矩阵的乘法 Ⅳ 讲授内容: §2.1 矩阵 定义2.1 由n m ?个数),,2,,1;,,2,1(n j m a ij =排成的m 行n 列的数表 mn m m n n a a a a a a a a a 21222 21112 11 称为m 行n 列矩阵,简称n m ?矩阵.为表示它是一个整体,总是加一个括弧,并用大写黑体字母表示它,记作 ??????? ??=?mn m m n n n m a a a a a a a a a A 212222111211 两个矩阵B A ,,如果都是m 行n 列的,称它们是同型矩阵。否则,称它们是不同型的。 n 行n 列的矩阵n n A ?称为n 阶矩阵(或n 阶方阵) ,简记为n A 。 只有一行的矩阵)(21n a a a A =称为行矩阵,又称行向量.只有一列的矩阵 ?????? ? ??=n b b b B 21 称为列矩阵,又称列向量. 定义2.2 如果)()(ij ij b B a A ==与是同型矩阵,并且它的对应元素相等 ,即

),,2,1;,,2,1(,n j m i b a ij ij === 那么就称矩阵A 与B 相等,记作B A =. 元素都是零的m 行n 列矩阵称为零矩阵,记作n m O ?,简记为O .不同型的零矩阵是 不同的. ??????? ??=100010001 n I 称为n 阶单位矩阵,简记作I .这个矩阵的特点是:从左上角到右下角的直线(叫做主对角线)上的元素都是1,其它元素都是0. §2.2 矩阵的运算 1. 矩阵的加法 定义2.3 设有两个n m ?矩阵)(),(ij ij b B a A ==,那么矩阵A 与B 的和记作A +B , 规定为 n m ij ij b a B A ?+=+)( 设矩阵)(),(ij ij a A a A -=-=记,A -称为矩阵A 的负矩阵.显然有 0)(=-+A A . 规定矩阵的减法为)(B A B A -+=-. 2. 数与矩阵相乘: 定义2.4 数λ与矩阵)(ij a A =的乘积记作A λ,规定为n m ij a A ?=)(λλ 数乘矩阵满足下列运算规律(设B A ,为同型矩阵,μλ,为数): )(i )()(A A μλλμ= )(ii A A A μλμλ+=+)( )(iii B A B A λλλ+=+)( 3. 矩阵与矩阵相乘: 定义 2.5 设)(ij a A =是一个s m ?矩阵,)(ij b B =是一个n s ?矩阵,那么规定矩阵

Matlab常用函数数组及矩阵的基本运算

实验一 Matlab 常用函数、数组及矩阵的基本运算 一、 实验目的 1. 了解Matlab7.0软件工作界面结构和基本操作; 2. 掌握矩阵的表示方法及Matlab 常用函数; 3. 掌握数组及矩阵的基本运算. 二、 实验内容 1. 了解命令窗口(command widow)和变量空间(workspace)的作用,掌握清 除命令窗口(clc )和变量空间(clear)的方法.掌握查询函数(help)的方法. 2. 掌握保存和加载变量的方法. 加载变量:load 变量名. 3. 掌握掌握矩阵的表示方法: 给a,b,c 赋如下数据: ]6,46,23,4,2,6,3,8,0,1[,356838241248 7,278744125431-=??????????--=??????????=c b a 4. 求a+b,a*b,a.*b,a/b,a./b,a^2,a.^2的结果. 5. 将str1=electronic; str2 = information; str3 = engineering; 三个字符串连接 在一起成str = electronic information engineering. 6. 求矩阵a 的逆矩阵a -1,行列式计算。 (inv(a),det(a)) 三、 实验要求 1.上机操作,熟练掌握清除命令窗口和变量空间的方法、查询变量的方法、加载变量的方法。 2.第2道题请写出步骤。 3.对实验内容中第3-6项,写出指令,上机运行. 记录运行结果(数据)。 4.写出实验报告。 四、 实验结果 2. 用save 函数,可以将工作空间的变量保存成txt 文件或mat 文件等. 比如: save peng.mat p j 就是将工作空间中的p 和j 变量保存在peng.mat 中. 用load 函数,可以将数据读入到matlab 的工作空间中. 比如:load peng.mat 就是将peng.mat 中的所有变量读入matlab 工作空间中。

matlab中的矩阵的基本运算命令

1.1 矩阵的表示 1.2 矩阵运算 1.2.14 特殊运算 1.矩阵对角线元素的抽取 函数diag 格式X = diag(v,k) %以向量v的元素作为矩阵X的第k条对角线元素,当k=0时,v为X的主对角线;当k>0时,v为上方第k条对角线;当k<0时,v为下方第k条对角线。 X = diag(v) %以v为主对角线元素,其余元素为0构成X。 v = diag(X,k) %抽取X的第k条对角线元素构成向量v。k=0:抽取主对角线元素;k>0:抽取上方第k条对角线元素;k<0抽取下方第k条对角线元素。 v = diag(X) %抽取主对角线元素构成向量v。 2.上三角阵和下三角阵的抽取 函数tril %取下三角部分 格式L = tril(X) %抽取X的主对角线的下三角部分构成矩阵L L = tril(X,k) %抽取X的第k条对角线的下三角部分;k=0为主对角线;k>0为主对角线以上;k<0为主对角线以下。函数triu %取上三角部分 格式U = triu(X) %抽取X的主对角线的上三角部分构成矩阵U U = triu(X,k) %抽取X的第k条对角线的上三角部分;k=0为主对角线;k>0为主对角线以上;k<0为主对角线以下。3.矩阵的变维 矩阵的变维有两种方法,即用“:”和函数“reshape”,前者主要针对2个已知维数矩阵之间的变维操作;而后者是对于一个矩阵的操作。 (1)“:”变维 (2)Reshape函数变维 格式 B = reshape(A,m,n) %返回以矩阵A的元素构成的m×n矩阵B B = reshape(A,m,n,p,…) %将矩阵A变维为m×n×p×… B = reshape(A,[m n p…]) %同上 B = reshape(A,siz) %由siz决定变维的大小,元素个数与A中元素个数 相同。 (5)复制和平铺矩阵 函数repmat 格式 B = repmat(A,m,n) %将矩阵A复制m×n块,即B由m×n块A平铺而成。 B = repmat(A,[m n]) %与上面一致 B = repmat(A,[m n p…]) %B由m×n×p×…个A块平铺而成 repmat(A,m,n) %当A是一个数a时,该命令产生一个全由a组成的m×n矩阵。 1.3 矩阵分解 1.3.1 Cholesky分解 函数chol 格式R = chol(X) %如果X为n阶对称正定矩阵,则存在一个实的非奇异上三角阵R,满足R'*R = X;若X非正定,则产生错误信息。 [R,p] = chol(X) %不产生任何错误信息,若X为正定阵,则p=0,R与上相同;若X非正定,则p为正整数,R是有序的上三角阵。 1.3.2 LU分解

矩阵基本性质

矩阵的基本性质 矩阵的第?第列的元素为。我们?或()表?的单位矩阵。 1.矩阵的加减法 (1),对应元素相加减 (2)矩阵加减法满足的运算法则 a.交换律: b.结合律: c. d. 2.矩阵的数乘 (1),各元素均乘以常数 (2)矩阵数乘满足的运算法则 a.数对矩阵的分配律: b.矩阵对数的分配律: c.结合律: d. 3.矩阵的乘法 (1),左行右列对应元素相乘后求和为C的第行第列的元素(2)矩阵乘法满足的运算法则 a.对于一般矩阵不满足交换律,只有两个方正满足且有 b.分配律: c.结合律: d.数乘结合律: 4.矩阵的转置, (1)矩阵的幂:,,…,

(2)矩阵乘法满足的运算法则 a. b. c. d. 5.对称矩阵:即;反对称矩阵:即 (1)设为(反)对称矩阵,则仍是(反)对称矩阵。 (2)设为对称矩阵,则或仍是对称矩阵的充要条件=。 (3)设为(反)对称矩阵,则,也是(反)对称矩阵。 (4)对任意矩阵,则分别是对称矩阵和反对称矩阵且. (5) 6. Hermite矩阵:即;反Hermite矩阵,即 a. b. c. d. e. f.(当矩阵可逆时) 7.正交矩阵:若,则是正交矩阵 (1) (2)

8.酉矩阵:若,则是酉矩阵 (1) (2) (3), (4) 9.正规矩阵:若,则是正规矩阵;若,则是实正规矩阵 10.矩阵的迹和行列式 (1)为矩阵的迹;或为行列式 (2);注:矩阵乘法不满足交换律 (3) (4),为酉矩阵,则 (5) (6) (7) (8) (9) (10) (11) (12),,则其中为奇异分解值的特征值 11.矩阵的伴随矩阵 (1)设由行列式的代数余子式所构成的矩阵

矩阵的基本运算

矩阵的基本运算 (摘自:华东师范大学数学系;https://www.doczj.com/doc/3e8891132.html,/)§3.1 加和减 §3.2矩阵乘法 §3.2.1 矩阵的普通乘法 §3.2.2 矩阵的Kronecker乘法 §3.3 矩阵除法 §3.4矩阵乘方 §3.5 矩阵的超越函数 §3.6数组运算 §3.6.1数组的加和减 §3.6.2数组的乘和除 §3.6.3 数组乘方 §3.7 矩阵函数 §3.7.1三角分解 §3.7.2正交变换 §3.7.3奇异值分解 §3.7.4 特征值分解 §3.7.5秩 §3.1 加和减

如矩阵A和B的维数相同,则A+B与A-B表示矩阵A与B的和与差.如果矩阵A和B的维数不匹配,Matlab会给出相应的错误提示信息.如: A= B= 1 2 3 1 4 7 4 5 6 2 5 8 7 8 0 3 6 0 C =A+B返回: C = 2 6 10 6 10 14 10 14 0 如果运算对象是个标量(即1×1矩阵),可和其它矩阵进行加减运算.例如: x= -1 y=x-1= -2 0 -1 2 1 §3.2矩阵乘法 Matlab中的矩阵乘法有通常意义上的矩阵乘法,也有Kronecker乘法,以下分别介绍. §3.2.1 矩阵的普通乘法 矩阵乘法用“ * ”符号表示,当A矩阵列数与B矩阵的行数相等时,二者可以进行乘法运算,否则是错误的.计算方法和线性代数中所介绍的完全相同. 如:A=[1 2 ; 3 4]; B=[5 6 ; 7 8]; C=A*B, 结果为 C=×==

即Matlab返回: C = 19 22 43 50 如果A或B是标量,则A*B返回标量A(或B)乘上矩阵B(或A)的每一个元素所得的矩阵. §3.2.2 矩阵的Kronecker乘法 对n×m阶矩阵A和p×q阶矩阵B,A和B的Kronecher乘法运算可定义为: 由上面的式子可以看出,Kronecker乘积A B表示矩阵A的所有元素与 B之间的乘积组合而成的较大的矩阵,B A则完全类似.A B和B A均为np ×mq矩阵,但一般情况下A B B A.和普通矩阵的乘法不同,Kronecker乘 法并不要求两个被乘矩阵满足任何维数匹配方面的要求.Kronecker乘法的Matlab命令为C=kron(A,B),例如给定两个矩阵A和B: A= B= 则由以下命令可以求出A和B的Kronecker乘积C: A=[1 2; 3 4]; B=[1 3 2; 2 4 6]; C=kron(A,B) C = 1 3 2 2 6 4 2 4 6 4 8 12 3 9 6 4 12 8

矩阵的基本运算法则

矩阵的基本运算法则 1、矩阵的加法 矩阵加法满足下列运算规律(设A 、B 、C 都是m n ?矩阵,其中m 和n 均为已知的正整数): (1)交换律:+=+A B B A (2)结合律:()()++++A B C =A B C 注意:只有当两个矩阵为同型矩阵(两个矩阵的行数和列数分别相等)时,这两个矩阵才能进行加法运算。 2、数与矩阵相乘 数乘矩阵满足下列运算规律(设A 、B 是m n ?矩阵,λ和μ为数): (1)结合律:()λμλμ=A A (2)分配律:()λμλμ+=+A A A (3)分配律:()λλλ+=+A B A B 注意:矩阵相加与数乘矩阵合起来,统称为矩阵的线性运算。 3、矩阵与矩阵相乘 矩阵与矩阵的乘法不满足交换律、但是满足结合律和分配率(假设运算都是可行的): (1)交换律:≠AB BA (不满足) (2)结合律:()()=AB C A BC (3)结合律:()()()λλλλ==其中为数AB A B A B (4)分配律:()(),+=++=+A B C AB AC B C A BA CA 4、矩阵的转置 矩阵的转置满足下述运算规律(假设运算都是可行的,符号()T g 表示转置): (1)()T T =A A

(2)()T T T +=+A B A B (3)()T T λλ=A A (4)()T T T =AB B A 5、方阵的行列式 由A 确定A 这个运算满足下述运算法则(设A 、B 是n 阶方阵,λ为数): (1)T =A A (2)n λλ=A A (3)=AB A B 6、共轭矩阵 共轭矩阵满足下述运算法则(设A 、B 是复矩阵,λ为复数,且运算都是可行的): (1)+=+A B A B (2)λλ=A A (3)=AB AB 7、逆矩阵 方阵的逆矩阵满足下述运算规律: (1)若A 可逆,则1-A 亦可逆,且()11--=A A (2)若A 可逆,数0λ≠,则λA 可逆,且()111 λλ--=A A (3)若A 、B 为同阶矩阵且均可逆,则AB 亦可逆,且()111---=AB B A 参考文献: 【1】线性代数(第五版),同济大学

matlab中矩阵基本运算命令.docx

1.1矩阵的表示 1.2矩阵运算 1.2.14特殊运算 1.矩阵对角线元素的抽取 函数diag 格式X = diag(v,k)% 以向量 v 的元素作为矩阵 X 的第 k 条对角线元素,当 k=0 时, v 为 X 的主对角线;当 k>0 时,v 为上方第 k 条对角线;当 k<0 时, v 为下方第 k 条对角线。 X = diag(v)% 以 v 为主对角线元素,其余元素为 0 构成 X。 v = diag(X,k)%抽取 X 的第 k 条对角线元素构成向量 v。k=0:抽取主对角线元素; k>0 :抽取上方第 k 条对角线元素;k<0 抽取下方第 k 条对角线元素。 v = diag(X)% 抽取主对角线元素构成向量 v。 2.上三角阵和下三角阵的抽取 函数tril% 取下三角部分 格式L = tril(X)%抽取 X 的主对角线的下三角部分构成矩阵L L = tril(X,k)% 抽取 X 的第 k 条对角线的下三角部分; k=0 为主对角线; k>0 为主对角线以上; k<0 为主对角线以下。 函数triu% 取上三角部分 格式U = triu(X)%抽取 X 的主对角线的上三角部分构成矩阵U U = triu(X,k)% 抽取 X 的第 k 条对角线的上三角部分; k=0 为主对角线; k>0 为主对角线以上; k<0 为主对角线以下。3.矩阵的变维 矩阵的变维有两种方法,即用“:”和函数“reshape,”前者主要针对 2 个已知维数矩阵之间的变维操作;而后者是对 于一个矩阵的操作。 (1)“:”变维 (2)Reshape 函数变维 格式 B = reshape(A,m,n)%返回以矩阵 A 的元素构成的 m×n 矩阵 B B = reshape(A,m,n,p,)% 将矩阵 A 变维为 m×n×p× B = reshape(A,[m n p])%同上 B = reshape(A,siz)% 由 siz 决定变维的大小,元素个数与 A 中元素个数 相同。 (5)复制和平铺矩阵 函数repmat 格式 B = repmat(A,m,n)% 将矩阵 A 复制 m×n 块,即 B 由 m×n 块 A 平铺而成。 B = repmat(A,[m n])%与上面一致 B = repmat(A,[m n p]) %B 由 m×n×p× 个 A 块平铺而成 repmat(A,m,n)%当 A 是一个数 a 时,该命令产生一个全由 a 组成的 m×n 矩阵。 1.3矩阵分解 1.3.1Cholesky 分解 函数chol 格式R = chol(X)% 如果 X 为 n 阶对称正定矩阵,则存在一个实的非奇异上三角阵R,满足 R'*R = X ;若 X 非正定,则产生错误信息。 [R,p] = chol(X)% 不产生任何错误信息,若X 为正定阵,则p=0 ,R 与上相同;若X 非正定,则p 为正整数, R 是有序的上三角阵。 1.3.2 LU 分解

矩阵的简单运算公式

矩阵的运算 (一) 矩阵的线性运算 特殊乘法:222()A B A AB BA B +=+++ 2 22 ()()() A B A B A B A B =≠ (二) 关于逆矩阵的运算规律 111 1 1 11 1 1(1)()(2)() /(3)( )( )(4)()( ) T T n n A B B A k A A k A A A A ---------==== (三) 关于矩阵转置的运算规律 (1)()(2)()T T T T T T A B B A A B B A =+=+ (四) 关于伴随矩阵的运算规律 **1 *2 ***1* **1*11**1(1)(2)(2)(3)()(4)(), ()(5)()1,()1 0,()2(6)()()()n n n AA A A A E A A n A A A kA k A n r A n r A r A n r A n A A A A A A A A A -------===≥===?? ==-??≤-?= ==若若若若可逆,则,, (五) 关于分块矩阵的运算法则 1 1 1 110000(2)000 0T T T T T A B A C C D B D B B B C C C C B -----?? ?? =????????????????==????????????????(1);, (六) 求变换矩阵 ()121 1 2 11121311111121222321121121313233313131100(a )(2)i n n i i i ij i i i i A T TAT T P P P AP P A a a a p p p a a a p p P p a a a p p p AP P P i λλλλλλλ--?? ? ?= ? ? ? ?===???????? ??? ? ? =→= ??? ? ? ??? ? ?????????=+≥已知矩阵,及其特征值求使得,设,则其中若有重根则时再1 T T -由求 (七) 特征值与矩阵

实验1-矩阵的基本运算

实验1 矩阵的基本运算 一、实验目的 1、熟悉MATLAB中关于矩阵的基本命令 2、掌握利用MATLAB进行向量、矩阵的输入,向量与向量的运算,矩阵与矩阵的运算,矩阵与向量的运算。 3、掌握利用MATLAB求矩阵的特征值,进行矩阵的初等变换;讨论向量组的线性相关性等运算 二、相关知识 为了进行矩阵的各种运算,首先要输入矩阵。 在MATLAB中,矩阵的输入方法主要有两种: 一种是在MATLAB的命令窗口中输入,这种方法适合输入一些阶数较低的矩阵; 对于一些阶数较高的矩阵,最好采用建立M文件的方法,便于多次利用,也方便在需要的时候可以修改数据。 在命令窗口输入的方法为:>>A=[1,2,3;4,5,6;7,8,9]; 注意:逗号表示同行元素,也可用空格代替,分号表示换行。 使用磁盘文件的方法,则需要建立一个以m为后缀的文本文件,可以用MATLAB提供的编辑器编辑,该编辑器提供了编辑环境和MATLAB程序的调试环境。 该编辑器的使用方法是在MATLAB主菜单中选File —>New —>M-File,就打开了一个编辑器的窗口。 文本文件的内容与在命令窗口中输入的相同。将文本文件放在一个特定的位置(某一个文件夹中),并将该位置加入到MATLAB的工作目录中,用File->Setpath来完成。 使用时,在命令窗口输入文件名,就可以使用该文件中的所有数据了。 注意:多个矩阵可以存放在一个文件中。

三、实验内容 1.已知矩阵A 、B 、b 如下: 建立一个名为sy1sj.m 的文件,将矩阵A 、B 、b 输入其中; 2.在1的基础上,建立文件sy1cx.m ,完成下列计算: 1)X11=A’,X12=A+B ,X13=A-B ,X14=AB ; 2)X21=|A|,X22=|B|; 3)X31=R(A),X32=R(B); 4)X4=A -1; 5)作矩阵C ,其元素为A 的元素乘以每个元素的行标再乘以每个元素的列标。 3.利用文件sy1sj.m 中的数据,完成下列运算,并将程序写在文件sy1_1.m 中: 1)求解矩阵方程XA=B 中的解矩阵X6; 2)求满足方程组AX=b’的解向量X7; 3)求X6的特征向量组,记为X8,相应的对角形记为D ; 4)计算X9=B 2(A -1)2; 4.利用文件sy1sj.m 中的数据,完成下列运算,并将程序写在文件sy1_2.m 中: 1)生成矩阵A 的行向量组:a1,a2,a3,a4,a5,a6; 2)生成矩阵A 的列向量组:b1,b2,b3,b4,b5,b6; 3)由A 的1、3、5行,2、4、6列交叉点上的元素生成A 的子矩阵A3; 4)生成一个12阶矩阵A4,其左上角为A ,右上角为6阶单位阵,左下角为6阶零矩阵,右下角为B ; 5)将A 对应的行向量组正交规范化为正交向量组A5,并验证所得结果; 6)求a1与a2的内积A7; 7)完成以下初等变换:将A 的第一、四行互换,再将其第三列乘以6,再将其第一行的10倍加至第五行; 8)求B 的列向量组的一个极大无关向量组A9,并将其余向量用极大线性无关向量组线性表示。 ????? ??????? ??? ?????-------------=0319 4811876381265428617411647056109 1143A ?? ? ?? ? ??? ? ?? ????? ???------=5036 4 22372536191291132815 1055120 11 8785169723 6421 B [ ] 1197531=b

C_矩阵基本运算代码

C#矩阵的运算代码 #region 矩阵运算 ///

/// 矩阵对应行列式的值 /// /// /// private double MatrixValue(double[,] MatrixList) { int Level = MatrixList.GetLength(1); double[,] dMatrix = new double[Level, Level]; for (int i = 0; i < Level; i++) { for (int j = 0; j < Level; j++) { dMatrix[i, j] = MatrixList[i, j]; } } int sign = 1; for (int i = 0, j = 0; i < Level && j < Level; i++, j++) { //判断改行dMatrix[i, j]是否为0,若是,则寻找i后的行(m,m>i,切dMatrix[m, j]!=0)进行交换if (dMatrix[i, j] == 0) { if (i == Level - 1) { return 0; } int m = i + 1; //获取一个dMatrix[m, j]不为为0的行 for (; dMatrix[m, j] == 0; m++) { if (m == Level - 1) { return 0; } } //判断是否达到矩阵的最大行,若是,则返回0 //把i行和m行调换 double temp; for (int n = j; n < Level; n++) { temp = dMatrix[i, n];

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

第三章 矩阵与线性代数计算 MATLAB ,即“矩阵实验室”,它是以矩阵为基本运算单元。因此,本章从最基本的运算单元出发,介绍MATLAB 的命令及其用法。 3.1矩阵的定义 由m×n 个元素a ij (i=1,2,…m;j=1,2,…n)排列成的矩形阵称为一个m 行n 列的矩阵,或m×n 阶矩阵,可以简记为A=(a ij ) m×n ,其中的a ij 叫做矩阵的第i 行第j 列元素。 ???? ? ?????=mn m m n n a a a a a a a a a A 2 1 22221 11211 当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 = [ ] %生成一个空矩阵

(完整版)矩阵的运算教案.doc

9.2 矩阵的运算 一、新课引入: 小王、小李在两次数学考试中答对题数如下表表示: 题型 期中 期末 答题 姓 数 填空题 选择题 解答题 填空题 选择题 解答题 名 小王 10 3 2 8 4 4 小李 9 5 3 7 3 3 填空题每题 4 分,选择题 4 分,解答题每题 10 分; 1、观察: 2、思考( 1):如何用矩阵表示他们的答对题数?他们期中、期末的成绩?思 考( 2):如果期中占 40% ,期末占 60% ,求两同学的总评成绩; 3、讨论:今天如何通过矩阵运算来研究上述问题? 二、新课讲授 1、矩阵的加法 (1)引入:记期中成绩答题数为 A ,期末答题数为 B ,则: 10 3 2 8 4 4 A B 9 5 3 7 3 3 确定两次考试的小王,小李的各题型答题总数的矩阵 C 18 7 6 C A B 16 8 6 (2)矩阵的和(差): 当两个矩阵 A 、 B 的维数相同时,将它们各位置上的元素加(减)所得到的矩阵称为矩 阵 A 、 B 的和(差) , 记作: A B A B 。 ( 3)运算律: 加法运算律: 加法结合律: A B B A ; A B C A B C 。 2、矩阵的数乘 (1)引入:计算小王、小李各题型平均答题数的矩阵: 1 9 3.5 3 2 A B 4 3 8 ( 2)矩阵与实数的积: 设 为任意实数, 把矩阵 A 的所有元素与相乘得到的矩阵叫做矩阵 A 与实数 的乘

积矩阵,记作: A 。 (3)运算律:( 、 R ) 分配律: A B A B ; ( ) A A A ; 结合律: A A A 。 3、例题举隅 1 3 3 8 例 2、已知 A 5 , B ,求 A B 2 6 1 4 6 3 - 4 例 3、已知 A 1 , B ,求 A- B 5 7 - 3 例 4、某公司有三家分厂一月份的水费、电费和燃料费如表所示(单位:元),现在公司限 定各分厂的水费、电费、燃料费都至少要节约 20%,用矩阵表示这三家分厂各项费用的限定额 例 5、给出二元一次方程组 a 1 x b 1 y c 1 存在唯一解的条件 a 2 x b 2 y c 2 4、矩阵的乘法 ( 1)引入:总评成绩如何计算 ( 2)矩阵的乘积: 一般,设 A 是 m k 阶矩阵, B 是 k n 阶矩阵,设 C 为 m n 矩阵,如果矩阵 C 中第 i 行第 j 列元素 C ij 是矩阵 A 第 i 个行向量与矩阵 B 的第 j 个列向量的数量积,那么 C 矩阵 叫做 A 与 B 的乘积,记作: (3)运算律: C AB 。 分配律: A(B C ) AB AC ; ( B C ) A BA CA ; 结合律: AB A B A B ; AB C A BC 。 注意: ( 1)交换律不成立,即: AB ( 2)只有当矩阵 A 的列数与矩阵 BA ; B 的行数相等时,矩阵之积才有意义。 5、例题举隅 3 -1 2 1 4 例 6、已知 A , B 1 0 ,求 AB 5 7 - 2

三矩阵的基本运算

第三节矩阵的基本运算 §3.1 加和减 §3.2矩阵乘法 §3.2.1 矩阵的普通乘法 §3.2.2 矩阵的Kronecker乘法 §3.3 矩阵除法 §3.4矩阵乘方 §3.5 矩阵的超越函数 §3.6数组运算 §3.6.1数组的加和减 §3.6.2数组的乘和除 §3.6.3 数组乘方 §3.7 矩阵函数 §3.7.1三角分解 §3.7.2正交变换 §3.7.3奇异值分解 §3.7.4 特征值分解 §3.7.5秩 §3.1 加和减 如矩阵A和B的维数相同,则A+B与A-B表示矩阵A与B的和与差.如果矩阵A和B的维数不匹配,Matlab会给出相应的错误提示信息.如: A= B= 1 2 3 1 4 7 4 5 6 2 5 8 7 8 0 3 6 0 C =A+B返回: C = 2 6 10 6 10 14 10 14 0 如果运算对象是个标量(即1×1矩阵),可和其它矩阵进行加减运算.例如: x= -1 y=x-1= -2 0 -1 2 1 §3.2矩阵乘法 Matlab中的矩阵乘法有通常意义上的矩阵乘法,也有Kronecker乘法,以下分别介绍.

§3.2.1 矩阵的普通乘法 矩阵乘法用“ * ”符号表示,当A 矩阵列数与B 矩阵的行数相等时,二者可以进行乘法运算,否则是错误的.计算方法和线性代数中所介绍的完全相同. 如:A=[1 2 ; 3 4]; B=[5 6 ; 7 8]; C=A*B , 结果为 C=×== 即Matlab 返回: C = 19 22 43 50 如果A 或B 是标量,则A*B 返回标量A (或B )乘上矩阵B (或A )的每一个元素所得的矩阵. §3.2.2 矩阵的Kronecker 乘法 对n ×m 阶矩阵A 和p ×q 阶矩阵B ,A 和B 的Kronecher 乘法运算可定义为: 由上面的式子可以看出,Kronecker 乘积A B 表示矩阵A 的所有元素与B 之间的乘积组合而成的较大的矩阵,B A 则完全类似.A B 和B A 均为np ×mq 矩阵,但一般情况下A B B A .和普通矩阵的乘法不同,Kronecker 乘法并不要求两个被乘矩阵满足任何维数匹配方面的要求.Kronecker 乘法的Matlab 命令为C=kron(A,B),例如给定两个矩阵A 和B : A= B= 则由以下命令可以求出A 和B 的Kronecker 乘积C : A=[1 2; 3 4]; B=[1 3 2; 2 4 6]; C=kron(A,B) C = 1 3 2 2 6 4 2 4 6 4 8 12 3 9 6 4 12 8 6 12 18 8 16 24 作为比较,可以计算B 和A 的Kronecker 乘积D ,可以看出C 、D 是不同的: A=[1 2; 3 4]; B=[1 3 2; 2 4 6]; D=kron(B,A) D = 1 2 3 6 2 4 3 4 9 12 6 8 2 4 4 8 6 12 6 8 12 16 18 24 §3.3 矩阵除法 在Matlab 中有两种矩阵除法符号:“\”即左除和“/”即右除.如果A 矩阵是非奇异方阵,则A\B 是A 的逆矩阵乘B ,即inv(A)*B ;而B/A 是B 乘A 的逆矩阵,即B*inv(A).具体计算时可不用逆矩阵而直接计算. 通常: ???? ??4321???? ??8765???? ???+??+??+??+?8463745382617251???? ??50432219??????? ??=?=B a B a B a B a B a B a B a B a B a B A C nm n n m m (2122221) 11211 ?????≠?1234?? ???132246?? ???

相关主题
文本预览
相关文档 最新文档