向量与矩阵的基本运算
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数学实验
向量与矩阵运算
主要内容
Matlab能处理数、向量和矩阵.数实际上是 一个1×1维矩阵. 这节的主要内容:
➢矩阵的生成、操作; ➢矩阵的基本运算; ➢矩阵的函数.
一 向量与矩阵运算
向量与矩阵的生成
向量的生成 ✓ 直接输入: a=[1,2,3,4] ✓ 冒号运算符 ✓ 从矩阵中抽取行或列
>> C=A.*B; D=A./B; E=A.\B; F=A.^B;
参与运算的对象必须具有相同的形状!
函数取值
函数作用在矩阵上的取值
设 x 是变量, f 是一个函数
当 x = a 是标量时,f(x) = f(a)也是一个标量 当 x = [a, b, … , c] 是向量时,f(x)= [f(a), f(b), … , f(c)]
矩阵操作
改变矩阵的形状:reshape
reshape(A,m,n): 将矩阵元素按 列方向 进行重组 重组后得到的新矩阵的元素个数 必须与原矩阵元素个数相等!
矩阵操作
查看矩阵的大小:size
size(A) 列出矩阵 A 的行数和列数 size(A,1) 返回矩阵 A 的行数 size(A,2) 返回矩阵 A 的列数
>> y1=sin(x); y2=exp(A); y3=sqrt(A);
怎样计算 eA ?
(exp(1)).^A
矩阵的超越函数
Matlab 提供了三种矩阵函数:expm、sqrtm、logm
详情参见联机帮助(help expm / sqrtm / logm )
更一般的矩阵函数: funm
funm(A,@fun) 参数 fun 的可以是 exp,,log,cos,sin,cosh,sinh
ones(m,n)
eye(m,n)
diag(X)
tril(A) triu(A) rand(m,n) randn(m,n)
生成一个 m 行 n 列的元素全为 1 的矩阵, m=n 时可写为 ones(n) 生成一个主对角线全为 1 的 m 行 n 列矩阵, m=n 时可简写为 eye(n),即为 n 维单位矩阵 若 X 是矩阵,则 diag(X) 为 X 的主对角线向量 若 X 是向量,diag(X) 产生以 X 为主对角线的对角矩阵 提取一个矩阵的下三角部分
自己动手
A(:) 与 A(:,:) 的区别 ? 如何获得由 A 的第一、三行和第一、二列组成的子矩阵?
矩阵操作
矩阵的旋转
fliplr(A) 左右旋转 flipud(A) 上下旋转 rot90(A) 逆时针旋转 90 度;
rot90(A,k) 逆时针旋转 k×90 度
例:>> A=[1 2 3;4 5 6]
矩阵的乘方
A 是方阵,p 是正整数 A^p 表示 A 的 p 次幂,即 p 个 A 相乘。
若 A 是方阵,p 不是正整数 A^p 的计算涉及到 A 的特征值分解,即若 A = V*D*V-1 则 A^p=V*(D.^p)/V
矩阵的乘方
d1 0 0
若
a
是标量,
D
0
d2
0
0 0 dn
a^ d1 0 0
则
a
^
D
0
a^ d2
0
0
0 a^ dn
ቤተ መጻሕፍቲ ባይዱ
若 a 是标量,A 是方阵,且 [V,D] = eig(A),则 a^A = V*(a^D)/V
若 A, P 均是矩阵,则 A^P 无定义
矩阵的 Kronecker 乘积
矩阵 Kronecker 乘积的定义
设A是n×m矩阵,B是p×q矩阵,则A与B的kronecker乘积为:
数与数组的点幂
例:x=[1 2 3]; y=[4 5 6];
x.^y =[1^4,2^5,3^6]=[1,32,729] x.^2 =[1^2,2^2,3^2]=[1,4,9]
2 .^x = ? 2 .^[x;y]= ?
.^ 前面留个空格
Matlab中的所有 标点符号必须在 英文状态下输入
三 矩阵函数
列组成的子矩阵 E 8. 求出矩阵 E 的最大元素 9. 教材第 53 页,1(1),(3),(4)、2、3、4、5
Matlab中常见数学函数
sin、cos、tan、cot、sec、csc、… asin、acos、atan、acot、asec、acsc、… exp、log、log2、log10、sqrt abs、conj、real、imag、sign fix、floor、ceil、round、mod、rem max、min、sum、mean、sort、fft norm、rank、det、inv、eig、lu、qr、svd ……
矩阵基本运算
矩阵的加减:对应分量进行运算
要求参与加减运算的矩阵具有 相同的维数
例:>> A=[1 2 3; 4 5 6]; B=[3 2 1; 6 5 4]
>> C=A+B; D=A-B;
矩阵的普通乘法
要求参与运算的矩阵满足线性代数中矩阵相乘的原则
例:>> A=[1 2 3; 4 5 6]; B=[2 1; 3 4];
以三角分解函数lu()和特征值分解函数eig() 讲述矩阵函数的使用。
1、三角分解
最基本的分解“LU”分解,矩阵分解为两个 基本三角矩阵形成的方阵,一个为上三角矩阵 一个为下三角矩阵。计算的方法用高斯消去法。 函数格式[L,U]=lu(X)
%L,U为输出变量(返回值),A为输入变量, U为上三角阵,L为下三角阵或其变换形式, 满足LU=X 运行结果如下:
>> B=fliplr(A) >> C=flipud(A) >> D=rot90(A), E=rot90(A,-1)
矩阵操作
矩阵的转置与共轭转置
’ 共轭转置 .’ 转置,矩阵元素不取共轭
点与单引号之间不能有空格!
例:>> A=[1 2;2i 3i](动手验证)
>> B=A’ >> C=A.’
A=[1 2 3;4 5 6;7 8 9]; [L,U]=lu(A)
运行结果:
2、特征值分解
如果A是n×n矩阵,若Ax =λx则称λ为A的特征 值,x为相应的特征向量。 函数eig()为特征值分解函数,其调用格式为: [x,D]=eig(A) %x、D为输出变量(返回值),A为输入变量.D的 对角元素是特征值,x列是相应的特征向量 例 >> A=[1 2 3;4 5 6;7 8 9]; >> [x,D]=eig(A) 运行结果为:
提取一个矩阵的上三角部分
产生 0~1 间均匀分布的随机矩阵 m=n 时简写为 rand(n)
产生均值为0,方差为1的标准正态分布随机矩阵 m=n 时简写为 randn(n)
矩阵操作
提取矩阵的部分元素: 冒号运算符
A(:) A的所有元素 A(:,:) 二维矩阵A的所有元素 A(:,k) A的第 k 列, A(k,:) A的第 k 行 A(k:m) A的第 k 到第 m 个元素 A(:,k:m) A的第 k 到第 m 列组成的子矩阵
f 作用在 x 的每个分量上 若 A 是矩阵,则 f(A) 是一个与 A 同形状的矩阵
函数取值
exp(a11) exp(a12 )
例:
exp(
A)
exp(a21
)
exp(a22 )
exp(am1) exp(am2 )
exp(a1n ) exp(a2n )
exp(amn )
例:>> x=[0:pi/4:pi]; A=[1 2 3; 4 5 6];
>> C=A*B
二 矩阵基本运算
矩阵的除法:/、\ 右除和左除
若 A 可逆方阵,则 B/A <==> A 的逆右乘 B <==> B*inv(A) A\B <==> A 的逆左乘 B <==> inv(A)*B
通常,矩阵除法可以理解为
X=A\B <==> A*X=B X=B/A <==> X*A=B 当 A 和 B 行数相等时即可进行左除 当 A 和 B 列数相等时即可进行右除
例:>> A=[1 2 3; 4 5 6]
>> size(A) >> size(A,1) >> size(A,2)
length(x) 返回向量 X 的长度 length(A) 等价于 max(size(A))
自己动手
1、用rand函数生成8×10矩阵A; 2、用length、size函数求出矩阵A的行数和 列数;
kron(A,B) Kronecker乘积有时也称张量积
矩阵的数组运算
数组运算:对应元素进行运算
数组运算包括:点乘、点除、点幂 相应的数组运算符为: “.* ” , “./ ” , “.\ ” 和 “ .^ ” 点与算术运算符之间不能有空格!
例:>> A=[1 2 3; 4 5 6]; B=[3 2 1; 6 5 4];
例:a=[1:4] ==> a=[1, 2, 3, 4]
b=[0:pi/3:pi] ==> b=[0, 1.0472, 2.0944, 3.1416] c=[6:-2:0] ==> c = [6, 4, 2, 0]
向量与矩阵运算
向量与矩阵的生成(续)
矩阵的生成 ✓ 直接输入: A=[1, 2, 3; 4, 5, 6; 7, 8, 9] ✓ 由向量生成 ✓ 通过编写m文件生成 ✓ 由函数生成
① log 是自然对数,即以 e 为底数 ② mod(x,y) 结果与 y 同号,rem(x,y) 则与 x 同号 ③ max 等函数的参数是矩阵时,是作用在矩阵各列上
上机作业
1. 试分别生成 5 阶的单位阵、8 阶均匀分布的随机矩阵及其 下三角矩阵
2. 生产列向量 x=[1, 3, 5, 7, 9, … , 29] 3. 生成以 x 的元素为对角线的矩阵 A,并输出 A 的行数 4. 生成一个与 A 同阶的正态分布的随机矩阵 B 5. 输出 A 与 B 的 kronecker 乘积矩阵 C 6. 生成由 A 与 B 点乘得到的矩阵 D 7. 生成一个由 D 的第 8、4、10、13 行和第 7、1、6、9、2
a11B a12B K
C
A
B
a21B
a22 B
K
L L L
an1
B
an 2 B
K
a1mB
a2
m
B
L
anm
B
Kronecker 乘积的性质
A B 是 np×mq 矩阵;通常 A B B A
任何两个矩阵都有 Kronecker 乘积
Matlab 中实现两个矩阵 Kronecker 相乘的函数为
例:>> x=[1,2,3];y=[2,3,4];
>> A=[x,y], B=[x;y]
例:>> C=magic(3)
自动动手
1、使用函数生成8×10零矩阵、 5×5元素都 为1的矩阵、 5×5单位矩阵、 4×4魔术方阵。
常见矩阵生成函数
zeros(m,n) 生成一个 m 行 n 列的零矩阵,m=n 时可简写为 zeros(n)
向量与矩阵运算
主要内容
Matlab能处理数、向量和矩阵.数实际上是 一个1×1维矩阵. 这节的主要内容:
➢矩阵的生成、操作; ➢矩阵的基本运算; ➢矩阵的函数.
一 向量与矩阵运算
向量与矩阵的生成
向量的生成 ✓ 直接输入: a=[1,2,3,4] ✓ 冒号运算符 ✓ 从矩阵中抽取行或列
>> C=A.*B; D=A./B; E=A.\B; F=A.^B;
参与运算的对象必须具有相同的形状!
函数取值
函数作用在矩阵上的取值
设 x 是变量, f 是一个函数
当 x = a 是标量时,f(x) = f(a)也是一个标量 当 x = [a, b, … , c] 是向量时,f(x)= [f(a), f(b), … , f(c)]
矩阵操作
改变矩阵的形状:reshape
reshape(A,m,n): 将矩阵元素按 列方向 进行重组 重组后得到的新矩阵的元素个数 必须与原矩阵元素个数相等!
矩阵操作
查看矩阵的大小:size
size(A) 列出矩阵 A 的行数和列数 size(A,1) 返回矩阵 A 的行数 size(A,2) 返回矩阵 A 的列数
>> y1=sin(x); y2=exp(A); y3=sqrt(A);
怎样计算 eA ?
(exp(1)).^A
矩阵的超越函数
Matlab 提供了三种矩阵函数:expm、sqrtm、logm
详情参见联机帮助(help expm / sqrtm / logm )
更一般的矩阵函数: funm
funm(A,@fun) 参数 fun 的可以是 exp,,log,cos,sin,cosh,sinh
ones(m,n)
eye(m,n)
diag(X)
tril(A) triu(A) rand(m,n) randn(m,n)
生成一个 m 行 n 列的元素全为 1 的矩阵, m=n 时可写为 ones(n) 生成一个主对角线全为 1 的 m 行 n 列矩阵, m=n 时可简写为 eye(n),即为 n 维单位矩阵 若 X 是矩阵,则 diag(X) 为 X 的主对角线向量 若 X 是向量,diag(X) 产生以 X 为主对角线的对角矩阵 提取一个矩阵的下三角部分
自己动手
A(:) 与 A(:,:) 的区别 ? 如何获得由 A 的第一、三行和第一、二列组成的子矩阵?
矩阵操作
矩阵的旋转
fliplr(A) 左右旋转 flipud(A) 上下旋转 rot90(A) 逆时针旋转 90 度;
rot90(A,k) 逆时针旋转 k×90 度
例:>> A=[1 2 3;4 5 6]
矩阵的乘方
A 是方阵,p 是正整数 A^p 表示 A 的 p 次幂,即 p 个 A 相乘。
若 A 是方阵,p 不是正整数 A^p 的计算涉及到 A 的特征值分解,即若 A = V*D*V-1 则 A^p=V*(D.^p)/V
矩阵的乘方
d1 0 0
若
a
是标量,
D
0
d2
0
0 0 dn
a^ d1 0 0
则
a
^
D
0
a^ d2
0
0
0 a^ dn
ቤተ መጻሕፍቲ ባይዱ
若 a 是标量,A 是方阵,且 [V,D] = eig(A),则 a^A = V*(a^D)/V
若 A, P 均是矩阵,则 A^P 无定义
矩阵的 Kronecker 乘积
矩阵 Kronecker 乘积的定义
设A是n×m矩阵,B是p×q矩阵,则A与B的kronecker乘积为:
数与数组的点幂
例:x=[1 2 3]; y=[4 5 6];
x.^y =[1^4,2^5,3^6]=[1,32,729] x.^2 =[1^2,2^2,3^2]=[1,4,9]
2 .^x = ? 2 .^[x;y]= ?
.^ 前面留个空格
Matlab中的所有 标点符号必须在 英文状态下输入
三 矩阵函数
列组成的子矩阵 E 8. 求出矩阵 E 的最大元素 9. 教材第 53 页,1(1),(3),(4)、2、3、4、5
Matlab中常见数学函数
sin、cos、tan、cot、sec、csc、… asin、acos、atan、acot、asec、acsc、… exp、log、log2、log10、sqrt abs、conj、real、imag、sign fix、floor、ceil、round、mod、rem max、min、sum、mean、sort、fft norm、rank、det、inv、eig、lu、qr、svd ……
矩阵基本运算
矩阵的加减:对应分量进行运算
要求参与加减运算的矩阵具有 相同的维数
例:>> A=[1 2 3; 4 5 6]; B=[3 2 1; 6 5 4]
>> C=A+B; D=A-B;
矩阵的普通乘法
要求参与运算的矩阵满足线性代数中矩阵相乘的原则
例:>> A=[1 2 3; 4 5 6]; B=[2 1; 3 4];
以三角分解函数lu()和特征值分解函数eig() 讲述矩阵函数的使用。
1、三角分解
最基本的分解“LU”分解,矩阵分解为两个 基本三角矩阵形成的方阵,一个为上三角矩阵 一个为下三角矩阵。计算的方法用高斯消去法。 函数格式[L,U]=lu(X)
%L,U为输出变量(返回值),A为输入变量, U为上三角阵,L为下三角阵或其变换形式, 满足LU=X 运行结果如下:
>> B=fliplr(A) >> C=flipud(A) >> D=rot90(A), E=rot90(A,-1)
矩阵操作
矩阵的转置与共轭转置
’ 共轭转置 .’ 转置,矩阵元素不取共轭
点与单引号之间不能有空格!
例:>> A=[1 2;2i 3i](动手验证)
>> B=A’ >> C=A.’
A=[1 2 3;4 5 6;7 8 9]; [L,U]=lu(A)
运行结果:
2、特征值分解
如果A是n×n矩阵,若Ax =λx则称λ为A的特征 值,x为相应的特征向量。 函数eig()为特征值分解函数,其调用格式为: [x,D]=eig(A) %x、D为输出变量(返回值),A为输入变量.D的 对角元素是特征值,x列是相应的特征向量 例 >> A=[1 2 3;4 5 6;7 8 9]; >> [x,D]=eig(A) 运行结果为:
提取一个矩阵的上三角部分
产生 0~1 间均匀分布的随机矩阵 m=n 时简写为 rand(n)
产生均值为0,方差为1的标准正态分布随机矩阵 m=n 时简写为 randn(n)
矩阵操作
提取矩阵的部分元素: 冒号运算符
A(:) A的所有元素 A(:,:) 二维矩阵A的所有元素 A(:,k) A的第 k 列, A(k,:) A的第 k 行 A(k:m) A的第 k 到第 m 个元素 A(:,k:m) A的第 k 到第 m 列组成的子矩阵
f 作用在 x 的每个分量上 若 A 是矩阵,则 f(A) 是一个与 A 同形状的矩阵
函数取值
exp(a11) exp(a12 )
例:
exp(
A)
exp(a21
)
exp(a22 )
exp(am1) exp(am2 )
exp(a1n ) exp(a2n )
exp(amn )
例:>> x=[0:pi/4:pi]; A=[1 2 3; 4 5 6];
>> C=A*B
二 矩阵基本运算
矩阵的除法:/、\ 右除和左除
若 A 可逆方阵,则 B/A <==> A 的逆右乘 B <==> B*inv(A) A\B <==> A 的逆左乘 B <==> inv(A)*B
通常,矩阵除法可以理解为
X=A\B <==> A*X=B X=B/A <==> X*A=B 当 A 和 B 行数相等时即可进行左除 当 A 和 B 列数相等时即可进行右除
例:>> A=[1 2 3; 4 5 6]
>> size(A) >> size(A,1) >> size(A,2)
length(x) 返回向量 X 的长度 length(A) 等价于 max(size(A))
自己动手
1、用rand函数生成8×10矩阵A; 2、用length、size函数求出矩阵A的行数和 列数;
kron(A,B) Kronecker乘积有时也称张量积
矩阵的数组运算
数组运算:对应元素进行运算
数组运算包括:点乘、点除、点幂 相应的数组运算符为: “.* ” , “./ ” , “.\ ” 和 “ .^ ” 点与算术运算符之间不能有空格!
例:>> A=[1 2 3; 4 5 6]; B=[3 2 1; 6 5 4];
例:a=[1:4] ==> a=[1, 2, 3, 4]
b=[0:pi/3:pi] ==> b=[0, 1.0472, 2.0944, 3.1416] c=[6:-2:0] ==> c = [6, 4, 2, 0]
向量与矩阵运算
向量与矩阵的生成(续)
矩阵的生成 ✓ 直接输入: A=[1, 2, 3; 4, 5, 6; 7, 8, 9] ✓ 由向量生成 ✓ 通过编写m文件生成 ✓ 由函数生成
① log 是自然对数,即以 e 为底数 ② mod(x,y) 结果与 y 同号,rem(x,y) 则与 x 同号 ③ max 等函数的参数是矩阵时,是作用在矩阵各列上
上机作业
1. 试分别生成 5 阶的单位阵、8 阶均匀分布的随机矩阵及其 下三角矩阵
2. 生产列向量 x=[1, 3, 5, 7, 9, … , 29] 3. 生成以 x 的元素为对角线的矩阵 A,并输出 A 的行数 4. 生成一个与 A 同阶的正态分布的随机矩阵 B 5. 输出 A 与 B 的 kronecker 乘积矩阵 C 6. 生成由 A 与 B 点乘得到的矩阵 D 7. 生成一个由 D 的第 8、4、10、13 行和第 7、1、6、9、2
a11B a12B K
C
A
B
a21B
a22 B
K
L L L
an1
B
an 2 B
K
a1mB
a2
m
B
L
anm
B
Kronecker 乘积的性质
A B 是 np×mq 矩阵;通常 A B B A
任何两个矩阵都有 Kronecker 乘积
Matlab 中实现两个矩阵 Kronecker 相乘的函数为
例:>> x=[1,2,3];y=[2,3,4];
>> A=[x,y], B=[x;y]
例:>> C=magic(3)
自动动手
1、使用函数生成8×10零矩阵、 5×5元素都 为1的矩阵、 5×5单位矩阵、 4×4魔术方阵。
常见矩阵生成函数
zeros(m,n) 生成一个 m 行 n 列的零矩阵,m=n 时可简写为 zeros(n)