1、MATLAB 2006a 简明教程简明教程 清华大学出版社清华大学出版社第第4章章 MATLAB 的数学运算的数学运算 MATLAB 2006a 简明教程简明教程 清华大学出版社清华大学出版社教学目标教学重点教学内容1/1/20231MATLAB 2006a 简明教程简明教程 清华大学出版社清华大学出版社教学目标l掌握向量和矩阵的运算掌握向量和矩阵的运算l掌握线性代数的基本函数和使用掌握线性代数的基本函数和使用l掌握稀疏矩阵的操作掌握稀疏矩阵的操作l掌握多项式运算及插值掌握多项式运算及插值l掌握函数操作掌握函数操作1/1/20232MATLAB 2006a 简明教程简明教程 清华大学出版社清华
2、大学出版社教学内容l向量、矩阵及其运算向量、矩阵及其运算 l矩阵和线性代数矩阵和线性代数 l稀疏型矩阵稀疏型矩阵 l多项式与插值多项式与插值 l函数运算函数运算 l微分方程微分方程 1/1/20233MATLAB 2006a 简明教程简明教程 清华大学出版社清华大学出版社向量、矩阵及其运算向量、矩阵及其运算l向量的点乘、叉乘和混合积向量的点乘、叉乘和混合积l矩阵的基本运算矩阵的基本运算 l特殊矩阵生成特殊矩阵生成 l向量和矩阵的范数向量和矩阵的范数 1/1/20234MATLAB 2006a 简明教程简明教程 清华大学出版社清华大学出版社向量的点乘、叉乘和混合积向量的点乘、叉乘和混合积l向量的
3、点乘向量的点乘 向量的点乘又称为内积,是两个向量的模和两个向量之间的夹角余弦向量的点乘又称为内积,是两个向量的模和两个向量之间的夹角余弦三者的乘积。三者的乘积。MATLAB 中,实现点乘的函数是中,实现点乘的函数是dot。dot 函数的用法函数的用法为为 dot(x1,x2),其中,其中 x1 和和 x2 的维数必须相同。的维数必须相同。l向量的叉乘向量的叉乘 向量乘法除点乘之外还有叉乘。两个向量叉积的几何意义是指以两个向量乘法除点乘之外还有叉乘。两个向量叉积的几何意义是指以两个向量模的乘积为模,方向和两个向量构成右手坐标系的向量。向量的向量模的乘积为模,方向和两个向量构成右手坐标系的向量。向
4、量的叉乘不可交换。在叉乘不可交换。在 MATLAB 中函数中函数 cross 用于实现向量的叉乘。用于实现向量的叉乘。l向量的混合积向量的混合积 向量的混合积的几何意义是:它的绝对值表示以三个向量为楞的平行向量的混合积的几何意义是:它的绝对值表示以三个向量为楞的平行六面体的体积,符号由右手法则确定。上面介绍了向量的点乘和叉乘,六面体的体积,符号由右手法则确定。上面介绍了向量的点乘和叉乘,向量的混合积由点乘和叉乘逐步实现。向量的混合积由点乘和叉乘逐步实现。1/1/20235MATLAB 2006a 简明教程简明教程 清华大学出版社清华大学出版社矩阵的基本运算矩阵的基本运算 l矩阵与常数之间的四则
5、运算矩阵与常数之间的四则运算矩阵与常数的运算与数组运算相同矩阵与常数的运算与数组运算相同l矩阵和矩阵之间的四则运算矩阵和矩阵之间的四则运算 矩阵和矩阵之间的加减运算与数组运算相同矩阵和矩阵之间的加减运算与数组运算相同 设设 A 是一个是一个 mn 矩阵,矩阵,B 是一个是一个 pq 矩阵,当矩阵,当 np 时,两时,两个矩阵可以相乘,乘积为个矩阵可以相乘,乘积为 mq 矩阵。矩阵乘法不可逆。在矩阵。矩阵乘法不可逆。在 MATLAB 中,矩阵乘法由中,矩阵乘法由“*”实现。实现。矩阵除法在实际中主要用于求解线性方程组矩阵除法在实际中主要用于求解线性方程组l矩阵转置矩阵转置符号符号“”“”实现矩阵
6、的转置操作。对于实数矩阵,实现矩阵的转置操作。对于实数矩阵,“”“”表示矩阵转置,对于复数矩阵,表示矩阵转置,对于复数矩阵,“”“”实现共轭转置。对实现共轭转置。对于复数矩阵,如果想要实现非共轭转置,可以使用符号于复数矩阵,如果想要实现非共轭转置,可以使用符号“.”。l矩阵乘方矩阵乘方1/1/20236MATLAB 2006a 简明教程简明教程 清华大学出版社清华大学出版社特殊矩阵生成特殊矩阵生成(1/2)函数功能生成空白矩阵zeros生成全0矩阵eye生成单位矩阵ones生成全1矩阵tril triu生成上三角或下三角矩阵diag生成对角矩阵gallery生成一些小的测试矩阵hadamard
7、生成 hadamard 矩阵hankel生成 hankel矩阵hilb生成 Hilbert 矩阵invhilb生成反 Hilbert 矩阵magic生成魔术矩阵pascal生成 n 阶 Pascal 矩阵rand生成服从均匀分布的随机矩阵randn生成服从正态分布的随机矩阵rosser典型的对称矩阵特征值的问题测试toeplitz生成 Toeplitz 矩阵vander生成范德蒙矩阵wilkinson生成 Wilkinson 矩阵compan生成多项式的伴随矩阵1/1/20237MATLAB 2006a 简明教程简明教程 清华大学出版社清华大学出版社特殊矩阵生成特殊矩阵生成(2/2)l1对角矩
8、阵的生成对角矩阵的生成l对角矩阵指除对角线以外其他元素为对角矩阵指除对角线以外其他元素为 0 的矩阵。函数的矩阵。函数 diag 可以生成对角矩阵。该函数的用法为:可以生成对角矩阵。该函数的用法为:A=diag(V,K),其中,其中 V 是一个向量,是一个向量,K 是一个整数。该函数返回是一个整数。该函数返回一个矩阵,矩阵的第一个矩阵,矩阵的第 K 个对角线为个对角线为 V。K 在默认情况下为在默认情况下为 0,表,表示矩阵的主对角线,示矩阵的主对角线,K 大于大于 0 时表示主对角线的上方,小于时表示主对角线的上方,小于 0 时时为主对角线的下方。为主对角线的下方。V=diag(A,K),其
9、中,其中A时一个矩阵。时一个矩阵。K 与上面的语句相同。该语句与上面的语句相同。该语句返回矩阵返回矩阵 A 第第 K 个对角线上的元素组成的矩阵。个对角线上的元素组成的矩阵。l2魔术矩阵的生成魔术矩阵的生成魔术矩阵是一种经常遇到的矩阵,除了二阶方阵之外,魔魔术矩阵是一种经常遇到的矩阵,除了二阶方阵之外,魔术矩阵的每一行、每一列以及每条主对角线的元素之和都术矩阵的每一行、每一列以及每条主对角线的元素之和都相同。在相同。在 MATLAB 中,中,magic 函数用于生成魔术矩阵。函数用于生成魔术矩阵。其调用方法为其调用方法为 magic(N),其中,其中 N 为正整数,并且为正整数,并且 N2.1
10、/1/20238MATLAB 2006a 简明教程简明教程 清华大学出版社清华大学出版社向量和矩阵的范数向量和矩阵的范数 l向量的范数定义为向量的范数定义为,其中,最常用的值为,其中,最常用的值为 1、2 和无穷大。矩阵和无穷大。矩阵 的范数定义为的范数定义为,其,其中,最常用的值为中,最常用的值为 1、2 和无穷大。和无穷大。l向量和矩阵的范数可以通过函数向量和矩阵的范数可以通过函数 norm 求求解。该函数的调用格式为解。该函数的调用格式为 n=norm(A,p),其中其中 p 用于指定范数的类型。用于指定范数的类型。p 可以为所可以为所有大于有大于 1 的常数,最常用的为的常数,最常用的
11、为 1、2、inf 和和 fro,fro 为求解矩阵为求解矩阵 A 的的 Frobenius 范数。当范数。当 p 省略时,默认值为省略时,默认值为 2。1/1/20239MATLAB 2006a 简明教程简明教程 清华大学出版社清华大学出版社矩阵和线性代数矩阵和线性代数 l线性方程组线性方程组l逆矩阵和行列式逆矩阵和行列式 l 矩阵分解矩阵分解 l矩阵指数函数和幂函数矩阵指数函数和幂函数 l矩阵特征值矩阵特征值 l矩阵奇异值分解矩阵奇异值分解 1/1/202310MATLAB 2006a 简明教程简明教程 清华大学出版社清华大学出版社线性方程组(线性方程组(1/2)l利用矩阵求逆的方法求解方
12、程组利用矩阵求逆的方法求解方程组 我们首先求系数矩阵的逆,然后利用矩阵我们首先求系数矩阵的逆,然后利用矩阵的逆求解方程组的解。的逆求解方程组的解。l利用矩阵的左除符号利用矩阵的左除符号“”或者右除符号或者右除符号“/”求解方程组求解方程组1/1/202311MATLAB 2006a 简明教程简明教程 清华大学出版社清华大学出版社线性方程组(线性方程组(2/2)l利用左除符号和右除符号求解线性方程组,避免了矩阵利用左除符号和右除符号求解线性方程组,避免了矩阵求逆操作,因此系数矩阵求逆操作,因此系数矩阵 不必为方阵。如果系数矩阵不必为方阵。如果系数矩阵 的维数为的维数为,则有三种情况:,则有三种情
13、况:,此时方程组为超定方程组,此时方程组为超定方程组,MATLAB 将给出最小二乘将给出最小二乘解;解;,此时方程组为方阵系统,此时方程组为方阵系统,MATLAB 给出精确解;给出精确解;,此时方程组为欠约束方程组,此时方程组为欠约束方程组,MATLAB 将给出一组基将给出一组基解,该解中包含最多解,该解中包含最多 个非零元素。个非零元素。l在采用除法符号(包括左除和右除)求解线性方程组时,在采用除法符号(包括左除和右除)求解线性方程组时,MATLAB 采用采用 因式分解法求解方程组。尽管因式分解法求解方程组。尽管 MATLAB 提供了两种方法,一般更倾向于采用第二种方法,该方提供了两种方法,
14、一般更倾向于采用第二种方法,该方法用到较少的浮点数运算,执行速度较快,另外,由于法用到较少的浮点数运算,执行速度较快,另外,由于采用采用 分解法,得出的结果要精确的多。分解法,得出的结果要精确的多。mnmnmn1/1/202312MATLAB 2006a 简明教程简明教程 清华大学出版社清华大学出版社逆矩阵和行列式逆矩阵和行列式 l矩阵行列式矩阵行列式 在在 MATLAB 中,矩阵的行列式用函数中,矩阵的行列式用函数 det 求解。调用格式为求解。调用格式为 det(A),其中,其中 A 为方阵。为方阵。l矩阵求逆矩阵求逆 对于非奇异方阵,如果存在方阵,满足对于非奇异方阵,如果存在方阵,满足
15、并并且且,则称为矩阵的逆,记为,在,则称为矩阵的逆,记为,在 MATLAB 中,用中,用 inv(A)来实现矩阵逆的求解。来实现矩阵逆的求解。1/1/202313MATLAB 2006a 简明教程简明教程 清华大学出版社清华大学出版社矩阵分解矩阵分解 lCholesky 分解分解lLU 分解分解 lQR 分解(正交分解)分解(正交分解)1/1/202314MATLAB 2006a 简明教程简明教程 清华大学出版社清华大学出版社Cholesky 分解分解 lCholesky 分解将对称矩阵表示为一个三角矩阵分解将对称矩阵表示为一个三角矩阵与其转置的乘积的形式,即,其中为对称矩阵,与其转置的乘积的
16、形式,即,其中为对称矩阵,为上三角矩阵。并非所有的对称矩阵都能进行为上三角矩阵。并非所有的对称矩阵都能进行 Cholesky 分解,只有正定矩阵能够进行分解,只有正定矩阵能够进行 Cholesky 分解,如分解,如 Pascal 矩阵。在矩阵。在 MATLAB 中中 Cholesky 分解由函数分解由函数 chol 实现,该函数对实现,该函数对输入矩阵进行输入矩阵进行 Cholesky分解,返回其对应的三分解,返回其对应的三角矩阵。角矩阵。lCholesky 分解同样适用于复数矩阵。如果复数分解同样适用于复数矩阵。如果复数矩阵满足,其中表示矩阵的共轭转置。如果矩阵矩阵满足,其中表示矩阵的共轭转
17、置。如果矩阵存在存在 Cholesky 分解则称其为分解则称其为 Hermitian 正定。正定。1/1/202315MATLAB 2006a 简明教程简明教程 清华大学出版社清华大学出版社LU 分解分解 l矩阵的矩阵的 LU 分解将一个方阵表示为一个下分解将一个方阵表示为一个下三角置换矩阵和一个上三角矩阵乘积的形三角置换矩阵和一个上三角矩阵乘积的形式。如,其中为下三角置换矩阵,为上三式。如,其中为下三角置换矩阵,为上三角矩阵。角矩阵。MATLAB 中中 LU 分解可以通过函分解可以通过函数数 lu 实现。通过矩阵的实现。通过矩阵的 LU 分解,可以实分解,可以实现线性方程组的快速求解。现线性
18、方程组的快速求解。l另外矩阵的另外矩阵的 LU 分解可用于矩阵快速求逆分解可用于矩阵快速求逆和求行列式,有和求行列式,有 det(A)=det(L)*det(U)和和 inv(A)=inv(U)*inv(L)。1/1/202316MATLAB 2006a 简明教程简明教程 清华大学出版社清华大学出版社QR 分解(正交分解)(分解(正交分解)(1/2)l如果矩阵如果矩阵 满足满足 ,则为正交矩阵。正交矩阵为实矩阵,其每,则为正交矩阵。正交矩阵为实矩阵,其每列为单位向量,并且各列互相正交。正交矩阵最简单的例子为二维列为单位向量,并且各列互相正交。正交矩阵最简单的例子为二维旋转矩阵:旋转矩阵:l对于
19、复数矩阵,对应的概念为酉矩阵。对于复数矩阵,对应的概念为酉矩阵。l在数值计算中正交矩阵有着重要的应用,因为正交矩阵具有长度不在数值计算中正交矩阵有着重要的应用,因为正交矩阵具有长度不变性、角度不变性,并且不会扩大误差。变性、角度不变性,并且不会扩大误差。l矩阵的正交分解将矩阵表示为正交矩阵(或酉矩阵)和上三角矩阵矩阵的正交分解将矩阵表示为正交矩阵(或酉矩阵)和上三角矩阵的乘积。如的乘积。如 或或 ,其中,其中 为正交矩阵或酉矩阵,为正交矩阵或酉矩阵,为上三角矩阵,为上三角矩阵,为置换矩阵。正交分解有四种形式,包括完全分为置换矩阵。正交分解有四种形式,包括完全分解、简化分解、带置换矩阵的分解和不
20、带置换矩阵的分解。解、简化分解、带置换矩阵的分解和不带置换矩阵的分解。QQQI cossinsincosAQRAPQRQRP1/1/202317MATLAB 2006a 简明教程简明教程 清华大学出版社清华大学出版社QR 分解(正交分解)(分解(正交分解)(2/2)l 完全分解完全分解过约束线性系统的系数矩阵函数超过列数,为一个矩阵并且,记为,过约束线性系统的系数矩阵函数超过列数,为一个矩阵并且,记为,则完全正交分解产生一个的正交矩阵和一个的上三角矩阵,满足。则完全正交分解产生一个的正交矩阵和一个的上三角矩阵,满足。MATLAB 中矩阵的完全分解由函数中矩阵的完全分解由函数 qr 实现。实现。
21、l简化分解简化分解矩阵的简化正交分解可以节省存储空间和运算时间。正交分解可以通矩阵的简化正交分解可以节省存储空间和运算时间。正交分解可以通过在过在 qr 函数中设置第二个参数为函数中设置第二个参数为 0 实现。实现。l与与 LU 分解不同,分解不同,QR 分解不需要对矩阵进行旋转或者置换,如上面分解不需要对矩阵进行旋转或者置换,如上面的两个例子。但是如果对矩阵进行置换可以避免由于矩阵奇异造成的的两个例子。但是如果对矩阵进行置换可以避免由于矩阵奇异造成的误差。选择置换后,在分解的每一步,选择剩下列中范数最大的一列误差。选择置换后,在分解的每一步,选择剩下列中范数最大的一列作为分解的基。这样得到的
22、结果中,作为分解的基。这样得到的结果中,R 的对角线元素按照降序排列。的对角线元素按照降序排列。包含置换的正交分解可以通过增加包含置换的正交分解可以通过增加 qr 函数的输出参数得到。函数的输出参数得到。1/1/202318MATLAB 2006a 简明教程简明教程 清华大学出版社清华大学出版社矩阵指数函数和幂函数矩阵指数函数和幂函数 l矩阵的正整数幂矩阵的正整数幂 如果如果 A 为方阵,为方阵,p 为正整数,则为正整数,则 Ap 表示表示 p 个个 A 相乘。相乘。l矩阵的负数幂与分数幂矩阵的负数幂与分数幂如果如果 A 为非奇异方阵,则为非奇异方阵,则 A(-p)等价于等价于 inv(A)p
23、。lMATLAB 中,允许对矩阵进行分数幂运算,运算结果中,允许对矩阵进行分数幂运算,运算结果依赖于矩阵特征值的分布情况。依赖于矩阵特征值的分布情况。l矩阵指数运算矩阵指数运算 expm 用于实现矩阵的指数运算。用于实现矩阵的指数运算。线性系统线性系统 的解可以表示为的解可以表示为 ,其中的,其中的矩阵指数运算可以通过矩阵指数运算可以通过expm 完成。完成。/dx dtAx 0tAx te x1/1/202319MATLAB 2006a 简明教程简明教程 清华大学出版社清华大学出版社矩阵特征值矩阵特征值 l矩阵的特征值和特征值分解在线性代数中一直扮演着重要的角色。在矩阵的特征值和特征值分解在
24、线性代数中一直扮演着重要的角色。在 MATLAB 中,函数中,函数eig 实现矩阵的特征值计算和特征值分解。实现矩阵的特征值计算和特征值分解。l例例 4-23 利用函数利用函数 eig 实现矩阵的特征值计算实现矩阵的特征值计算l利用例利用例 2-22 中的矩阵中的矩阵 A。在命令窗口中输入:。在命令窗口中输入:A=0,-6,-1;6,2,-16;-5,20,-10;A=0 -6 -1 6 2 -16 -5 20 -10 lambda=eig(A)lambda=-3.0710 -2.4645+17.6008i -2.4645-17.6008il上例实现对矩阵特征值的计算,如果在调用上例实现对矩阵
25、特征值的计算,如果在调用 eig 函数时,设置输出参数的个函数时,设置输出参数的个数为数为2,则实现对矩阵的特征值分解。,则实现对矩阵的特征值分解。1/1/202320MATLAB 2006a 简明教程简明教程 清华大学出版社清华大学出版社矩阵奇异值分解矩阵奇异值分解 l对于矩阵对于矩阵 ,如果存在数,如果存在数 和向量和向量 、,满足,满足和和 ,则称,则称 为为 的奇异值,的奇异值,、为为 的奇异向的奇异向量。如果将矩阵的奇异值写为对角矩阵的格式,记为量。如果将矩阵的奇异值写为对角矩阵的格式,记为(不足的部分记为(不足的部分记为0);以奇异向量为列并扩充为正交矩);以奇异向量为列并扩充为正
26、交矩阵阵 和和 ,则有,则有 和和 。和和 为正交矩阵,为正交矩阵,则得到则得到 ,即为矩阵,即为矩阵 的奇异值分解。的奇异值分解。l在在 MATLAB 中,函数中,函数svd 实现矩阵的奇异值分解。实现矩阵的奇异值分解。l与矩阵的与矩阵的 QR 分解相似,奇异值分解也可以有简化分解。分解相似,奇异值分解也可以有简化分解。方法与方法与 QR 分解相同,即在输入参数中以分解相同,即在输入参数中以 0 标志。如在标志。如在命令窗口中继续输入:命令窗口中继续输入:AuvAvuTA uvAuvAUVAVUTA UVUVTAU VA1/1/202321MATLAB 2006a 简明教程简明教程 清华大学
27、出版社清华大学出版社稀疏型矩阵稀疏型矩阵(1/2)l在很多实际应用中,用户往往会遇到只有少数非在很多实际应用中,用户往往会遇到只有少数非 0 元素的矩阵,我们称这些矩阵为稀疏矩阵。如元素的矩阵,我们称这些矩阵为稀疏矩阵。如果对稀疏矩阵中的全部元素进行存储和计算则会果对稀疏矩阵中的全部元素进行存储和计算则会导致时间和空间上的极大浪费。因此,为了更有导致时间和空间上的极大浪费。因此,为了更有效的存储和处理稀疏矩阵,效的存储和处理稀疏矩阵,MATLAB 中采用了一中采用了一些优化技术:些优化技术:MATLAB 中只存储稀疏矩阵中的非中只存储稀疏矩阵中的非 0 元素,并用行索引和列索引表明每个非元素,
28、并用行索引和列索引表明每个非 0 元素元素在原矩阵中的位置;同样,在原矩阵中的位置;同样,MATLAB 中采用了一中采用了一些专门的算法来处理稀疏矩阵,以避免对些专门的算法来处理稀疏矩阵,以避免对 0 元素元素的运算,并且最大限度地减少中间结果中的非的运算,并且最大限度地减少中间结果中的非 0 元素。元素。1/1/202322MATLAB 2006a 简明教程简明教程 清华大学出版社清华大学出版社稀疏型矩阵(稀疏型矩阵(2/2)l稀疏型矩阵的生成稀疏型矩阵的生成 l稀疏矩阵与满矩阵的相互转化稀疏矩阵与满矩阵的相互转化 l稀疏矩阵的操作稀疏矩阵的操作 1/1/202323MATLAB 2006a
29、 简明教程简明教程 清华大学出版社清华大学出版社稀疏型矩阵的生成(稀疏型矩阵的生成(1/3)lMATLAB 不会自动生成稀疏矩阵,因此,当用不会自动生成稀疏矩阵,因此,当用户判定一个矩阵为稀疏矩阵时,利用相关函数生户判定一个矩阵为稀疏矩阵时,利用相关函数生成稀疏矩阵。成稀疏矩阵。MATLAB 中用于生成稀疏矩阵的中用于生成稀疏矩阵的函数如表函数如表 4-2 所示。所示。函数功能speye生成单位稀疏矩阵sprand生成均匀分布的随机稀疏矩阵sprandn生成正态分布的随机稀疏矩阵sprandsym生成对称随机稀疏矩阵spdiags生成对角随机稀疏矩阵1/1/202324MATLAB 2006a
30、 简明教程简明教程 清华大学出版社清华大学出版社稀疏型矩阵的生成(稀疏型矩阵的生成(2/3)lspeye 函数函数 lspeye 函数的调用格式为:函数的调用格式为:S=speye(m,n);S=speye(n),l分别用于生成分别用于生成 阶主对角线元素为一的稀疏阶主对角线元素为一的稀疏矩阵和矩阵和 阶单位稀疏矩阵。阶单位稀疏矩阵。1/1/202325MATLAB 2006a 简明教程简明教程 清华大学出版社清华大学出版社稀疏型矩阵的生成(稀疏型矩阵的生成(3/3)lsprand 和和 sprandn 函数函数 l这两个函数的调用格式完全相同。两个函数的唯一区别为这两个函数的调用格式完全相同
31、。两个函数的唯一区别为 sprand 函函数生成的稀疏矩阵元素服从均匀分布,而数生成的稀疏矩阵元素服从均匀分布,而sprandn 函数生成的稀疏函数生成的稀疏矩阵元素服从正态分布。下面以矩阵元素服从正态分布。下面以 sprand 函数为例介绍这两个函数的函数为例介绍这两个函数的应用。应用。sprand 函数的调用格式有:函数的调用格式有:R=sprand(S),生成与稀疏矩阵,生成与稀疏矩阵 S 结构完全相同的稀疏矩阵,矩阵元素结构完全相同的稀疏矩阵,矩阵元素服从均匀分布;服从均匀分布;R=sprand(m,n,density),生成,生成 阶稀疏矩阵,矩阵非阶稀疏矩阵,矩阵非 0 元素个数大
32、约元素个数大约为为density*m*n。R=sprand(m,n,density,rc),与上面的命令类似。如果,与上面的命令类似。如果 rc 为数值,则为数值,则生成的矩阵条件数的倒数接近生成的矩阵条件数的倒数接近 rc;如果;如果 rc 为一个长度不大于为一个长度不大于 min(m,n)的一维向量,则生成的矩阵以的一维向量,则生成的矩阵以 rc 的元素为奇异值,其他奇异值为的元素为奇异值,其他奇异值为 0。l注意,不能用命令注意,不能用命令 sprand(n)生成生成 n 阶稀疏矩阵。阶稀疏矩阵。1/1/202326MATLAB 2006a 简明教程简明教程 清华大学出版社清华大学出版社
33、稀疏矩阵与满矩阵的相互转化稀疏矩阵与满矩阵的相互转化 lMATLAB 提供了一些函数用于在稀疏矩阵和满矩提供了一些函数用于在稀疏矩阵和满矩阵之间进行转换,这些函数如表阵之间进行转换,这些函数如表 4-3 所示。所示。函数功能sparse将满矩阵转化为稀疏矩阵full将稀疏矩阵转化为满矩阵find查找非 0 元的索引spconvert 导入稀疏矩阵1/1/202327MATLAB 2006a 简明教程简明教程 清华大学出版社清华大学出版社sparse 函数函数lsparse 函数的调用格式如下:函数的调用格式如下:S=sparse(A),该命令将矩阵,该命令将矩阵 转化为稀疏矩阵。转化为稀疏矩阵
34、。S=sparse(i,j,s,m,n,nzmax),该命令生成一个阶稀疏,该命令生成一个阶稀疏矩阵,其中、分别为该矩阵非矩阵,其中、分别为该矩阵非0元的横坐标向量、纵元的横坐标向量、纵坐标向量和值,、有相同的长度。该矩阵的非坐标向量和值,、有相同的长度。该矩阵的非0元数元数目不超过目不超过nzmax。S=sparse(i,j,s,m,n),该命令与上面一条命令功能类,该命令与上面一条命令功能类似,生成的稀疏矩阵的非似,生成的稀疏矩阵的非0元个数由的长度确定。元个数由的长度确定。S=sparse(i,j,s),该命令生成的稀疏矩阵维数为。,该命令生成的稀疏矩阵维数为。S=sparse(m,n)
35、,该命令生成一个初始稀疏矩阵,矩,该命令生成一个初始稀疏矩阵,矩阵的全部元素为阵的全部元素为0。1/1/202328MATLAB 2006a 简明教程简明教程 清华大学出版社清华大学出版社full 函数和函数和find 函数函数 lfull 函数函数 full 函数的应用比较简单,其调用格式为函数的应用比较简单,其调用格式为 X=full(S),该命令将稀疏矩阵,该命令将稀疏矩阵 S 转换为满矩阵。转换为满矩阵。lfind 函数函数 find 既适用于满矩阵,也适用于稀疏矩阵。该函既适用于满矩阵,也适用于稀疏矩阵。该函数在应用于稀疏矩阵时用于查找稀疏矩阵中的非数在应用于稀疏矩阵时用于查找稀疏矩
36、阵中的非 0 元素。该函数可以返回非元素。该函数可以返回非 0 元素的位置、行列元素的位置、行列向量和元素值。向量和元素值。1/1/202329MATLAB 2006a 简明教程简明教程 清华大学出版社清华大学出版社常用的稀疏矩阵操作函数常用的稀疏矩阵操作函数lMATLAB 中的大部分数学函数可以用于稀疏矩中的大部分数学函数可以用于稀疏矩阵,功能和调用格式和应用于满矩阵时相同。另阵,功能和调用格式和应用于满矩阵时相同。另外,外,MATLAB 还提供了一些函数专门应用于稀还提供了一些函数专门应用于稀疏矩阵。常用的稀疏矩阵操作函数如表所示。疏矩阵。常用的稀疏矩阵操作函数如表所示。函数功能nnz返回
37、矩阵非 0 元的个数nonzeros返回矩阵的非 0 元素构成的向量,以矩阵的列为序nzmax返回为矩阵非 0 元分配的存储空间大小spones将矩阵的所有非 0 元素置为 1spalloc为稀疏矩阵分配内存空间issparse判断是否为稀疏矩阵,是则返回值 TRUE,否则返回 FALSE。spfun对稀疏矩阵的非 0 元素进行操作spy稀疏矩阵的图形表示1/1/202330MATLAB 2006a 简明教程简明教程 清华大学出版社清华大学出版社多项式与插值多项式与插值 l多项式在数学中有着极为重要的作用,同多项式在数学中有着极为重要的作用,同时多项式的运算也是工程和应用中经常遇时多项式的运算
38、也是工程和应用中经常遇到的问题。到的问题。MATLAB 提供了一些专门用于提供了一些专门用于处理多项式的函数,用户可以应用这些函处理多项式的函数,用户可以应用这些函数对多项式进行操作。数对多项式进行操作。MATLAB 中对多项中对多项式的操作包括多项式求根、多项式的四则式的操作包括多项式求根、多项式的四则运算及多项式的微积分。运算及多项式的微积分。1/1/202331MATLAB 2006a 简明教程简明教程 清华大学出版社清华大学出版社多项式的表示多项式的表示l在在 MATLAB 中多项式用一个行向量表示,中多项式用一个行向量表示,向量中的元素为该多项式的系数,按照降向量中的元素为该多项式的
39、系数,按照降序排列。如多项式序排列。如多项式 可以表可以表示为向量示为向量 p=9 7 4 3。用户可以创建向量。用户可以创建向量的方式创建多项式,再将其显示为多项式,的方式创建多项式,再将其显示为多项式,3219743xxx1/1/202332MATLAB 2006a 简明教程简明教程 清华大学出版社清华大学出版社多项式的四则运算多项式的四则运算l由于多项式是利用向量来表示,多项式的四则运由于多项式是利用向量来表示,多项式的四则运算可以转化为向量的运算。算可以转化为向量的运算。l多项式的加减为对应项系数的加减,因此可以通多项式的加减为对应项系数的加减,因此可以通过向量的加减来实现。但是在向量
40、的加减中两个过向量的加减来实现。但是在向量的加减中两个向量需要有相同的长度,因此在进行多项式加减向量需要有相同的长度,因此在进行多项式加减时,需要将短的向量前面补时,需要将短的向量前面补 0。l多项式的乘法实际上是多项式系数向量之间的卷多项式的乘法实际上是多项式系数向量之间的卷积运算,可以通过积运算,可以通过 MATLAB 中的卷积函数中的卷积函数 conv 来完成。来完成。l多项式的除法为乘法的逆运算,可以通过反卷积多项式的除法为乘法的逆运算,可以通过反卷积函数函数 deconv 来实现。来实现。1/1/202333MATLAB 2006a 简明教程简明教程 清华大学出版社清华大学出版社多项
41、式的其他运算多项式的其他运算l除多项式的四则运算外,除多项式的四则运算外,MATLAB 还提供了多还提供了多项式的一些其他运算。这些运算及其对应的函数项式的一些其他运算。这些运算及其对应的函数如表所示。如表所示。函数函数功能功能roots多项式求根多项式求根polyval多项式求值多项式求值polyvalm矩阵多项式求值矩阵多项式求值polyder多项式求导多项式求导poly求矩阵的特征多项式;或者求一个求矩阵的特征多项式;或者求一个多项式,其根为指定的数值多项式,其根为指定的数值polyfit多项式曲线拟合多项式曲线拟合residue求解余项求解余项 1/1/202334MATLAB 200
42、6a 简明教程简明教程 清华大学出版社清华大学出版社多项式的运算函数(多项式的运算函数(1/2)lroots 函数和函数和 poly 函数函数 这两个函数为功能互逆的两个函数。这两个函数为功能互逆的两个函数。roots 函数函数用于求解多项式的根。该函数的输入参数为多项用于求解多项式的根。该函数的输入参数为多项式的系数组成的行向量,返回值为由多项式的根式的系数组成的行向量,返回值为由多项式的根组成的列向量。组成的列向量。poly 函数用于生成根为制定数值函数用于生成根为制定数值的多项式。的多项式。lpolyval 函数函数polyval 函数用于多项式求值。对于给定的多项函数用于多项式求值。对
43、于给定的多项式,利用该函数可以计算该多项式在任意点的值。式,利用该函数可以计算该多项式在任意点的值。1/1/202335MATLAB 2006a 简明教程简明教程 清华大学出版社清华大学出版社多项式的运算函数(多项式的运算函数(2/2)lpolyder 函数函数l函数函数 polyder 用于多项式求导。该函数可以用于用于多项式求导。该函数可以用于求解一个多项式的导数、两个多项式乘积的导数求解一个多项式的导数、两个多项式乘积的导数和两个多项式商的导数。该函数的用法为:和两个多项式商的导数。该函数的用法为:q=polyder(p)该命令计算多项式该命令计算多项式 p 的导数。的导数。c=poly
44、der(a,b)该命令实现多项式该命令实现多项式 a、b 的积的导数。的积的导数。q,d=polyder(a,b)该命令实现多项式该命令实现多项式a、b 的商的导的商的导数,数,q/d 为最后的结果。为最后的结果。1/1/202336MATLAB 2006a 简明教程简明教程 清华大学出版社清华大学出版社多项式拟合多项式拟合 l曲线拟合是工程中经常要用到的技术之一。曲线拟合是工程中经常要用到的技术之一。MATLAB 提供了曲线拟合工具箱满足用户提供了曲线拟合工具箱满足用户要求,另外,还提供了多项式拟合函数。要求,另外,还提供了多项式拟合函数。函数函数 polyfit 给出在最小二乘意义下最佳拟
45、给出在最小二乘意义下最佳拟合系数。该函数的调用格式为:合系数。该函数的调用格式为:p=polyfit(x,y,n)其中其中x、y分别为待拟合数据的分别为待拟合数据的 x 坐标和坐标和 y 坐标,坐标,n 用于指定返回多项式的次数。用于指定返回多项式的次数。1/1/202337MATLAB 2006a 简明教程简明教程 清华大学出版社清华大学出版社数据插值数据插值l根据已知数据推断未知数据,则需要使用根据已知数据推断未知数据,则需要使用数据插值的概念。数据插值的概念。MATLAB 提供了对数组提供了对数组的任意一维进行插值的工具,这些工具大的任意一维进行插值的工具,这些工具大多需要用到多维数组的
46、操作。本节将对数多需要用到多维数组的操作。本节将对数据插值做简单的介绍,主要介绍一维插值。据插值做简单的介绍,主要介绍一维插值。lMATLAB 中一维插值主要有:中一维插值主要有:多项式插值多项式插值 快速傅立叶变换(快速傅立叶变换(FFT)插值。)插值。1/1/202338MATLAB 2006a 简明教程简明教程 清华大学出版社清华大学出版社一维插值一维插值l一维插值在曲线拟合和数据分析中具有重要一维插值在曲线拟合和数据分析中具有重要的地位。在的地位。在 MATLAB 中,一维插值由函数中,一维插值由函数 interp1 实现。该函数的调用格式为实现。该函数的调用格式为 yi=interp
47、1(x,y,xi,method)x、y:采用数据的:采用数据的 x 坐标和坐标和 y 坐标坐标 xi:待插值的位置:待插值的位置 method:采用的插值方法:采用的插值方法l该语句返回函数在点该语句返回函数在点 xi 处的插值结果。该处的插值结果。该语句中的参数语句中的参数 method 可以选择的内容如可以选择的内容如表所示。表所示。参数对应方法nearest最近邻插值linear线性插值spline三次样条插值pchip或cubic三次插值1/1/202339MATLAB 2006a 简明教程简明教程 清华大学出版社清华大学出版社函数运算函数运算l函数的表示函数的表示l数学函数图象的绘制
48、数学函数图象的绘制l函数极值函数极值l函数求解函数求解l数值积分数值积分l含参数函数的使用含参数函数的使用 1/1/202340MATLAB 2006a 简明教程简明教程 清华大学出版社清华大学出版社函数的表示函数的表示lMATLAB 中提供了两种函数表示的方法:中提供了两种函数表示的方法:利用利用 M 文件将函数定义为文件将函数定义为 MALTAB 函数函数将函数定义为将函数定义为 MALTAB 函数,当需要调用该函数,当需要调用该函数时,需要通过符号函数时,需要通过符号“”获取函数句柄,获取函数句柄,利用函数句柄实现对函数的操作。利用函数句柄实现对函数的操作。匿名函数方法匿名函数方法直接创
49、建函数,如语句:直接创建函数,如语句:fh=(x)1./(x-0.3).2+0.01)+1./(x-0.9).2+0.04)-6;1/1/202341MATLAB 2006a 简明教程简明教程 清华大学出版社清华大学出版社数学函数图象的绘制数学函数图象的绘制 l函数图象具有直观的特性,可以通过函数图象查看出一个函数图象具有直观的特性,可以通过函数图象查看出一个函数的总体特征。函数的总体特征。MATLAB 提供了绘制函数图象的函数提供了绘制函数图象的函数 fplot,方便用户绘制函数的图象。下面介绍该函数的用法。,方便用户绘制函数的图象。下面介绍该函数的用法。该函数的调用格式如下:该函数的调用格
50、式如下:fplot(fun,limits),y=f(x)fplot(fun,limits,LineSpec)fplot(fun,limits,tol)fplot(fun,limits,tol,LineSpec)fplot(fun,limits,n)fun 可以为 MATLAB 函数的 M 文件名,可以是包含变量 x 的字符串,该字符串可以传递给函数 eval,还可以是函数句柄。参数 limits用于指定绘制图象的范围。limits 是一个向量,用于指定 x 轴的范围,格式为 xmin xmax。limits 也可以同时指定 y 轴的范围,格式为 xmin xmax ymin ymax。1/1/