210 likes | 452 Views
数学实验. 向量与矩阵运算. 向量的生成. 直接输入: a=[1,2,3,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]. 向量与矩阵运算. 向量与矩阵的生成. 从矩阵中抽取行或列. 例 : >> x=[1,2,3];y=[2,3,4];. >> A=[x,y], B=[x;y]. 向量与矩阵运算. 向量与矩阵的生成(续).
E N D
数学实验 向量与矩阵运算
向量的生成 • 直接输入: a=[1,2,3,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] 向量与矩阵运算 • 向量与矩阵的生成 • 从矩阵中抽取行或列
例:>>x=[1,2,3];y=[2,3,4]; >>A=[x,y], B=[x;y] 向量与矩阵运算 • 向量与矩阵的生成(续) • 矩阵的生成 • 直接输入: A=[1, 2, 3; 4, 5, 6; 7, 8, 9] • 由向量生成 • 通过编写m文件生成 • 由函数生成 例:>>C=magic(3)
提取矩阵的部分元素: 冒号运算符 • A(:) A的所有元素 • A(:,:)二维矩阵A的所有元素 • A(:,k) A的第 k 列, A(k,:) A的第 k 行 • A(k:m) A的第 k 到第 m 个元素 • A(:,k:m) A的第 k 到第 m 列组成的子矩阵 自己动手 A(:) 与 A(:,:) 的区别 ? 如何获得由 A 的第一、三行和第一、二列组成的子矩阵? 矩阵操作
例:>>A=[1 2 3;4 5 6] >>B=fliplr(A) >>C=flipud(A) >>D=rot90(A), E=rot90(A,-1) 矩阵操作 • 矩阵的旋转 • fliplr(A)左右旋转 • flipud(A)上下旋转 • rot90(A)逆时针旋转 90 度;rot90(A,k) 逆时针旋转 k×90度
’共轭转置 • .’转置,矩阵元素不取共轭 例:>>A=[1 2;2i 3i] >>B=A’ >>C=A.’ 矩阵操作 • 矩阵的转置与共轭转置 点与单引号之间不能有空格!
矩阵操作 • 改变矩阵的形状:reshape reshape(A,m,n): 将矩阵元素按列方向进行重组 重组后得到的新矩阵的元素个数 必须与原矩阵元素个数相等!
例:>>A=[1 2 3; 4 5 6] >>size(A) >>size(A,1) >>size(A,2) 矩阵操作 • 查看矩阵的大小:size • size(A)列出矩阵 A 的行数和列数 • size(A,1)返回矩阵 A 的行数 • size(A,2)返回矩阵 A 的列数 • length(x) 返回向量X 的长度 • length(A) 等价于 max(size(A))
例:>>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]; >>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 是方阵,p 是正整数 A^p表示 A的 p次幂,即 p个 A相乘。 • 若 A 是方阵,p 不是正整数 A^p的计算涉及到 A 的特征值分解,即若 A = V*D*V-1 则A^p=V*(D.^p)/V 矩阵的乘方
若 a 是标量, 则 矩阵的乘方 • 若 a 是标量,A 是方阵,且 [V,D] = eig(A),则a^A = V*(a^D)/V • 若 A, P 均是矩阵,则 A^P 无定义
矩阵Kronecker乘积的定义 设A是n×m矩阵,B是p×q矩阵,则A与B的kronecker乘积为: • 是 np×mq 矩阵;通常 • Matlab 中实现两个矩阵 Kronecker 相乘的函数为 kron(A,B) 矩阵的 Kronecker 乘积 • Kronecker乘积的性质 • 任何两个矩阵都有 Kronecker 乘积 Kronecker乘积有时也称张量积
例:>>A=[1 2 3; 4 5 6]; B=[3 2 1; 6 5 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)] f作用在 x 的每个分量上 • 若 A 是矩阵,则 f(A) 是一个与 A 同形状的矩阵
例: 例:>>x=[0:pi/4:pi]; A=[1 2 3; 4 5 6]; >>y1=sin(x); y2=exp(A); y3=sqrt(A); 怎样计算 eA ? 函数取值
更一般的矩阵函数: funm • funm(A,@fun) 参数 fun的可以是 exp,,log,cos,sin,cosh,sinh 矩阵的超越函数 • Matlab 提供了三种矩阵函数:expm、sqrtm、logm 详情参见联机帮助(help expm / sqrtm / logm )
数与数组的点幂 例: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] Matlab中的所有 标点符号必须在 英文状态下输入 2 .^x=? 2 .^[x;y]=? .^ 前面留个空格
Matlab中常见数学函数 • log是自然对数,即以e为底数 • mod(x,y)结果与 y同号,rem(x,y)则与x同号 • max等函数的参数是矩阵时,是作用在矩阵各列上
上机作业 • 试分别生成 5 阶的单位阵、8 阶均匀分布的随机矩阵及其下三角矩阵 • 生产列向量 x=[1, 3, 5, 7, 9, … , 29] • 生成以 x 的元素为对角线的矩阵 A,并输出 A 的行数 • 生成一个与 A 同阶的正态分布的随机矩阵 B • 输出 A 与 B 的 kronecker 乘积矩阵 C • 生成由 A 与 B 点乘得到的矩阵 D • 生成一个由 D 的第 8、4、10、13 行和第 7、1、6、9、2 列组成的子矩阵 E • 求出矩阵 E 的最大元素 • 教材第 39 页,1(1),(3),(4)、2、3、4、5