MATLAB7.X程序设计 第4章 MATLAB 数值计算(1).ppt
第第4章章 数值计算数值计算(1)第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)主要内容:主要内容:数据分析;数据分析;矩阵分析;矩阵分析;多项式运算;多项式运算;数值插值和拟合;数值插值和拟合;数值积分和微分数值积分和微分。2MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)4.1 4.1 概述概述数值计算的特点:数值计算的特点:1)数数值值计计算算是是定定义义在在数数值值数数组组的的基基础础上上,在在计计算之前必须定义变量并赋值。算之前必须定义变量并赋值。2)数值计算有误差。)数值计算有误差。3)数值计算的计算速度较快。)数值计算的计算速度较快。4)数值计算除定义了算术运算、关系运算和逻)数值计算除定义了算术运算、关系运算和逻辑运算三种,还提供了许多运算函数。辑运算三种,还提供了许多运算函数。3MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)4.2 4.2 数据分析数据分析4.2.1统计分析统计分析1 最大值和最小值最大值和最小值 1)求向量的最大和最小值)求向量的最大和最小值y=max(X)y=max(X)返返回回向向量量X X的的最最大大值值存存入入y y,如如果果X X中中包含复数元素,则按模取最大值。包含复数元素,则按模取最大值。y,I=max(X)y,I=max(X)返回向量返回向量X X的最大值存入的最大值存入y y,最大最大值的序号存入值的序号存入I I,如果如果X X中包含复数元素,则按中包含复数元素,则按模取最大值。模取最大值。求向量求向量X X的最小值的函数是的最小值的函数是min(X)min(X),用法和用法和max(X)max(X)完全相同。完全相同。4MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)例例 4-14-1 已已 知知 x=-43,72,9,16,23,47x=-43,72,9,16,23,47,求向量求向量x x的最大值和最小值。的最大值和最小值。y=max(x)y=max(x)%求向量求向量x x中的最大值中的最大值 y,l=max(x)y,l=max(x)%求向量求向量x x中的最大值及其该元中的最大值及其该元素的位置素的位置z=min(x)z=min(x)%求向量求向量x x中的最小值中的最小值 z,m=min(x)z,m=min(x)%求向量求向量x x中的最小值及其该元中的最小值及其该元素的位置素的位置5MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)2 2)求矩阵)求矩阵A A的最大值和最小值的最大值和最小值max(A)max(A)返返回回一一个个行行向向量量,向向量量的的第第i i个个元元素素是是矩矩阵阵A A的的第第i i列上的最大值。列上的最大值。Y,U=max(A)Y,U=max(A)返回行向量返回行向量Y Y和和U U,Y Y向量记录向量记录A A的每列的最大值,的每列的最大值,U U向量记录每列最大值的行号。向量记录每列最大值的行号。max(A,dim)max(A,dim)dimdim取取1 1或或2 2。dimdim取取1 1时,该函数和时,该函数和max(A)max(A)完全相同;完全相同;dimdim取取2 2时,该函数返回一个列向量,其第时,该函数返回一个列向量,其第i i个元素是个元素是A A矩阵的第矩阵的第i i行上的最大值。行上的最大值。求矩阵最小值的函数是求矩阵最小值的函数是minmin,其用法和其用法和maxmax完全相同完全相同。6MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)例例4-2 4-2 分别分别求三求三阶阶魔方矩魔方矩阵阵中中各列和各行元素各列和各行元素 中的最大值,并求整个矩阵的最大值和中的最大值,并求整个矩阵的最大值和 最小值。最小值。7MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)3 3)同型的向量或矩阵比较)同型的向量或矩阵比较U=max(A,B)U=max(A,B)A,BA,B是是两两个个同同型型的的向向量量或或矩矩阵阵,结结果果U U是是与与A,BA,B同同型型的的向向量量或或矩矩阵阵,U U的的每每个个元元素素等等于于A,BA,B对对应元素的较大者。应元素的较大者。U=max(A,n)U=max(A,n)n n是是一一个个标标量量,结结果果U U是是与与A A同同型型的的向向量量或或矩矩阵阵,U U的每个元素等于的每个元素等于A A对应元素和对应元素和n n中的较大者。中的较大者。minmin函数的用法和函数的用法和maxmax完全相同完全相同。8MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)例例 4-3 4-3 分析下列程序的功能。分析下列程序的功能。x=4 5 6;1 4 8;y=1 7 5;4 5 7;p=max(x,y);P分分析析:取取两两个个2323的的二二维维数数组组x x和和y y同同一一位位置置上的元素值大者构成一个新矩阵上的元素值大者构成一个新矩阵p p。9MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)2 2 平均值和中值平均值和中值求求数数据据序序列列平平均均值值的的函函数数是是meanmean,求求数数据据序序列列中值的函数是中值的函数是medianmedian。mean(X)mean(X)返回向量返回向量X X的算术平均值。的算术平均值。median(X)median(X)返回向量返回向量X X的中值。的中值。mean(A)mean(A)返返回回一一个个行行向向量量,其其第第i i个个元元素素是是A A的的第第i i列列的的算术平均值。算术平均值。10MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)median(A)median(A)返返回回一一个个行行向向量量,其其第第i i个个元元素素是是A A的的第第i i列列的中值。的中值。mean(A,dim)mean(A,dim)当当dimdim为为1 1时时,该该函函数数等等同同于于mean(A)mean(A);当当dimdim为为2 2时时,返返回回一一个个列列向向量量,其其第第i i个个元元素素是是A A的第的第i i行的算术平均值。行的算术平均值。median(A,dim)median(A,dim)当当dimdim为为1 1时时,该该函函数数等等同同于于median(A)median(A);当当dimdim为为2 2时时,返返回回一一个个列列向向量量,其其第第i i个个元元素素是是A A的第的第i i行的中值。行的中值。11MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)例例例例4-44-44-44-4 已已已已知知知知x=1 x=1 x=1 x=1 8 8 8 8 4 4 4 4 2;9 2;9 2;9 2;9 6 6 6 6 2 2 2 2 5;3 5;3 5;3 5;3 6 6 6 6 7 7 7 7 1111,从从从从 不同维方向求出其平均值和中值。不同维方向求出其平均值和中值。不同维方向求出其平均值和中值。不同维方向求出其平均值和中值。median(x)median(x)median(x,1)median(x,1)%按列方向,求数组的中值按列方向,求数组的中值median(x,2)median(x,2)%按行方向,求数组的中值按行方向,求数组的中值mean(x)mean(x)mean(x,1)mean(x,1)%按列方向按列方向,求数组的平均值求数组的平均值mean(x,2)mean(x,2)%按行方向按行方向,求数组的平均值求数组的平均值12MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)3 3 求和与求积求和与求积sum(X)sum(X)返回向量返回向量X X各元素的和。各元素的和。prod(X)prod(X)返回向量返回向量X X各元素的乘积。各元素的乘积。设设A A是一个矩阵,函数的调用格式为:是一个矩阵,函数的调用格式为:sum(A)sum(A)返回一个行向量,其第返回一个行向量,其第i i个元素是个元素是A A的第的第i i列的元素和。列的元素和。prod(A)prod(A)返回一个行向量,其第返回一个行向量,其第i i个元素是个元素是A A的第的第i i列的元素乘积列的元素乘积。13MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)sum(A,dim)sum(A,dim)当当dimdim为为1 1时时,该该函函数数等等同同于于sum(A)sum(A);当当dimdim为为2 2时时,返返回回一一个个列列向向量量,其其第第i i个个元元素素是是A A的的第第i i行行的各元素之和。的各元素之和。prod(A,dim)prod(A,dim)当当dimdim为为1 1时时,该该函函数数等等同同于于prod(A)prod(A);当当dimdim为为2 2时时,返返回回一一个个列列向向量量,其其第第i i个个元元素素是是A A的的第第i i行行的各元素乘积。的各元素乘积。14MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)例例4-54-5 已已知知x=4 x=4 5 5 6;1 6;1 4 4 88,分分析析矩矩阵阵x x 的的每每行行、每每列列元元素素的的乘乘积积和和全全部部元元 素的乘积。素的乘积。sum(x)sum(x)sum(x,1)sum(x,1)%求数组各列元素的和求数组各列元素的和sumsum(x,2)(x,2)%求数组各行元素的和求数组各行元素的和sum(sum(x)sum(sum(x)%求数组所有元素的和求数组所有元素的和15MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)prod(x)prod(x)prod(x,1)prod(x,1)%求数组各列元素的乘积求数组各列元素的乘积prod(x,2)prod(x,2)%求数组各行元素的乘积求数组各行元素的乘积prod(prod(x)prod(prod(x)%求数组所有元素的乘积求数组所有元素的乘积16MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)4 4 累加和与累乘积累加和与累乘积cumsumcumsum(X)(X)返回向量返回向量X X累加和向量。累加和向量。cumprodcumprod(X)(X)返回向量返回向量X X累乘积向量。累乘积向量。cumsumcumsum(A)(A)返返回回一一个个矩矩阵阵,其其第第i i列列是是A A的的第第i i列列的的累累加加和向量。和向量。17MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)cumprodcumprod(A)(A)返返回回一一个个矩矩阵阵,其其第第i i列列是是A A的的第第i i列列的的累累乘乘积积向向量。量。cumsumcumsum(A,dim)(A,dim)当当dimdim为为1 1时时,该该函函数数等等同同于于cumsumcumsum(A)(A);当当dimdim为为2 2时时,返返回回一一个个矩矩阵阵,其其第第i i行行是是A A的第的第i i行的行的累加和累加和向量。向量。cumprodcumprod(A,dim)(A,dim)当当dimdim为为1 1时时,该该函函数数等等同同于于cumprodcumprod(A)(A);当当dimdim为为2 2时时,返返回回一一个个向向量量,其其第第i i行行是是A A的第的第i i行的行的累乘积累乘积向量。向量。18MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)例例4-64-6 已已知知a a=1 1 2 2 3;3;3 3 9 9 6;6;4 4 10 10 8;8;4 4 0 0 77,求求矩矩阵阵a a的的每每行行、每每列列元元 素的乘积和全部元素的累加和。素的乘积和全部元素的累加和。cumsumcumsum(a)(a)%求矩阵的各列元素的累加和求矩阵的各列元素的累加和cumsumcumsum(a,2)(a,2)%求矩阵的各行元素的累加和求矩阵的各行元素的累加和cumprod(a)cumprod(a)cumprod(a,1)cumprod(a,1)%求矩阵的各列元素的累乘积求矩阵的各列元素的累乘积cumprod(a,2)cumprod(a,2)%求矩阵的各行元素的累乘积求矩阵的各行元素的累乘积19MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)对对于于向向量量x x,std(xstd(x,flag)flag)返返回回一一个个标标准准方方差差。flagflag取取0 0或或1 1。对对于于矩矩阵阵A A,std(A)std(A)返返回回一一个个行行向向量量,它它的的各各个个元元素素便是矩阵便是矩阵A A各列或各行的标准方差。各列或各行的标准方差。Y=std(A,flag,dim)Y=std(A,flag,dim)其其中中dimdim取取1 1或或2 2。当当dim=1dim=1时时,求求各各列列元元素素的的标标准准方方差差;当当dim=2dim=2时时,则则求求各各行行元元素素的的标标准准方方差差。flagflag取取0 0或或1 1。缺省。缺省flag=0flag=0,dim=1dim=1。5 5 标准方差标准方差20MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)例例例例 4-7 4-7 4-7 4-7 已已已已知知知知a a a a=1 1 1 1 2 2 2 2 3;3;3;3;3 3 3 3 9 9 9 9 6;6;6;6;4 4 4 4 10 10 10 10 8;4 8;4 8;4 8;4 0 0 0 0 7 7 7 7,从不同维方向求出其标准方差。从不同维方向求出其标准方差。从不同维方向求出其标准方差。从不同维方向求出其标准方差。std(a)std(a)std(a,0,1)std(a,0,1)%按列方向求矩阵按列方向求矩阵a a的标准方差的标准方差std(a,1,1)std(a,1,1)%按列方向求矩阵按列方向求矩阵a a的标准方差的标准方差std(a,0,2)std(a,0,2)%按行方向求矩阵按行方向求矩阵a a的标准方差的标准方差std(a,1,2)std(a,1,2)%按列方向求矩阵按列方向求矩阵a a的标准方差的标准方差21MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)6 6 排序排序 sort(X)sort(X)返回一个对向量返回一个对向量X X中的元素按升序排列的新向量。中的元素按升序排列的新向量。Y,I=sort(A,dimY,I=sort(A,dim,MODE)MODE)对矩阵对矩阵A A的各列或各行重新排序,的各列或各行重新排序,Y Y 是排序后的矩阵;是排序后的矩阵;I I 记录记录Y Y中的元素在排序前中的元素在排序前A A中位置;中位置;dim dim 指明对指明对A A的列还是行进行排序;的列还是行进行排序;MODE MODE为排序的方式。为排序的方式。22MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)按升序排列行函数按升序排列行函数sortrowssortrows的调用格式:的调用格式:B=B=sortrows sortrows(A)(A)按升序排列按升序排列A A 的列,其中的列,其中A A为矩阵或行向量。为矩阵或行向量。B=B=sortrows sortrows(A,column)(A,column)以指定的列向量排序矩阵以指定的列向量排序矩阵 B,index=B,index=sortrows sortrows(A)(A)排序时返回向量的序号。排序时返回向量的序号。如果如果A A 为列向量,为列向量,B=A(index)B=A(index);如果如果A A 为为m-by-n m-by-n 矩阵,矩阵,B=A(index,:)B=A(index,:)。23MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)例例4-8 4-8 已已知知a a=1 1 2 2 3;3;3 3 9 9 6;6;4 4 10 8;4 0 7 10 8;4 0 7,对对矩阵排序。矩阵排序。sort(a,1)sort(a,1)sort(a,1,ascend)sort(a,1,ascend)%对矩阵对矩阵a a的各列进行升序排列的各列进行升序排列sort(a,2)sort(a,2)sort(a,2,ascend)sort(a,2,ascend)%对矩阵对矩阵a a的各行进行升序排列的各行进行升序排列sort(a,1,descend)sort(a,1,descend)%对矩阵对矩阵a a的各列进行降序排列的各列进行降序排列sort(a,2,descend)sort(a,2,descend)%对矩阵对矩阵a a的各行进行降序排列的各行进行降序排列24MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)例例4-94-9 分析下列语句的功能。分析下列语句的功能。a=one,two ,three,four,five;sortrows(a)25MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)4.2.2 协方差和相关系数协方差和相关系数 covcov(x)(x)求向量求向量x x的协方差。的协方差。covcov(A)(A)求协方差矩阵,对角线元素是求协方差矩阵,对角线元素是A A中各列的方差。中各列的方差。corrcoefcorrcoef(X)(X)返回从矩阵返回从矩阵X X形成的一个相关系数矩阵。形成的一个相关系数矩阵。26MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)例例4-104-10 计计算算x x的的协协方方差差、y y的的协协方方差差、x x与与y y的互协方差。的互协方差。x=1 2 3 4 5;y=2 4 6 8 10;cx=cov(x)cy=cov(y)cxy=cov(x,y)27MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)4.2.3 傅立叶变换傅立叶变换 函数名函数名 含义含义 fft 离散傅立叶变换离散傅立叶变换 fft2 二维离散傅立叶变换二维离散傅立叶变换 fftn n n维离散傅立叶变换维离散傅立叶变换 fftshift 将零延迟移到频谱中心将零延迟移到频谱中心 Ifft 离散傅立叶反变换离散傅立叶反变换 ifft2 二维离散傅立叶反变换二维离散傅立叶反变换 ifftn n n维离散傅立叶反变换维离散傅立叶反变换 ifftshift 逆逆fftshiftfftshift28MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)例例4-114-11 求求行行向向量量(0 0,0.1 0.1,0.2 0.2,3.143.14)的的离散傅立叶变换,并通过傅立叶离散傅立叶变换,并通过傅立叶 反变换验证结果是正确的。反变换验证结果是正确的。29MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)4.3 4.3 矩阵操作矩阵操作4.3.1 矩阵的结构变换矩阵的结构变换 1 1 转置转置 转置运算的操作符:转置运算的操作符:求求A A的转置,运算表达式为的转置,运算表达式为 AA其中其中A A可以是行向量、列向量和矩阵。可以是行向量、列向量和矩阵。30MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)例例4-124-12 分析下列语句的执行结果。分析下列语句的执行结果。a=1 2 3;a=1 2 3;b=ab=a%行向量的转置行向量的转置a=1;2;3;a=1;2;3;b=ab=a%列向量的转置列向量的转置a=1 2;2 3;3 4;a=1 2;2 3;3 4;b=ab=a%矩阵的转置矩阵的转置a=1+2*i 3-4*i;a=1+2*i 3-4*i;b=ab=a%复数矩阵的转置复数矩阵的转置 31MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)2 2 对角阵对角阵X=diag(v,k)当当v 是是n个个元元素素的的向向量量时时,返返回回有有第第k个个对对角角线线的的n+abs(k)顺顺序序的的方方阵阵,k=0(可可省省略略)代代表表主主对对角角线线,k 0代代表表上上方方的的次次对对角线,角线,k 0是是主主对对角角线线的上面,的上面,K0K 0是主是主对角线的上面,对角线的上面,K 0K 0是主对角线的下面。是主对角线的下面。40MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)例例4-17 求求出出3阶阶魔魔方方矩矩阵阵的的各各下下三三角角阵阵和和各各上上三三角阵。角阵。41MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)例例 4-18 分析下列程序的功能。分析下列程序的功能。a=-4:4 A=reshape(a,3,3)%把一维数组把一维数组a重组为二维数组重组为二维数组 a1=diag(A,1)%取取A A阵第一对角线的元素阵第一对角线的元素 A1=diag(a1,-1)%产生以产生以a1a1数组元素为第一下对角线元素的二维数组数组元素为第一下对角线元素的二维数组 flipudA=flipud(A)%上下方向翻转矩阵上下方向翻转矩阵A AfliplrA=fliplr(A)%水平方向翻转矩阵水平方向翻转矩阵A Arot90A=rot90(A)%逆时针旋转逆时针旋转9090度矩阵度矩阵A A42MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)例例4-194-19 将将三三个个2222的的矩矩阵阵x,yx,y和和z z组组合合 成两个新矩阵:成两个新矩阵:(1 1)组组合合成成一一个个4 4 3 3的的矩矩阵阵,其其中中第第一一列列为为按按列列顺顺序序排排列列的的x x矩矩阵阵元元素素,第第二二列列为为按按列列顺顺序序排排列列的的y y矩矩阵阵元元素素,第第三三列列为为按按列顺序排列的列顺序排列的z z矩阵元素。矩阵元素。(2 2)按按照照x,yx,y和和z z的的列列顺顺序序组组合合成成一一个个行行向向量。量。43MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)4.3.2矩阵分析矩阵分析 1 逆矩阵逆矩阵 inv(A)inv(A)求方阵求方阵A A的的逆矩阵逆矩阵求求伪逆的函数伪逆的函数为为:pinv(A)例例4-20 求矩阵求矩阵的逆。的逆。a=-1 2 0;-2 3 0;3 0 2;inv(a)44MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)例例4-21 解方程组解方程组 45MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)A=2 2-1 1;4 3-1 2;8 3-3 4;3 3-2-2;b=4 6 12 6;x=inv(A)*b 执行结果为:执行结果为:x=0.6429 0.5000 -1.5000 0.2143由执行结果可知方程组的解为:由执行结果可知方程组的解为:0.6429 0.5000 -1.5000 0.2143。46MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)例例4-22 求矩阵求矩阵X,使满足:使满足:AXB=C。A=1 2 3;2 2 1;3 4 3;B=2,1;5 3;C=1 3;2 0;3 1;X=AC/B47MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)例例4-234-23 求方程组的最小范数解。求方程组的最小范数解。48MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)2 秩秩 rank(A)rank(A)求求A A的秩的秩例例4-24 求矩阵求矩阵的的秩:秩:(1)a=4 2-6;7 5 4;3 4 9;a=4 2-6;7 5 4;3 4 9;R=rank(a)(2)a=5 4-2;4 5 2;-2 2 8;R=rank(a)49MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)3 行列式行列式 det(A)det(A)求方阵求方阵A A对应的行列式的值对应的行列式的值例例4-254-25 求任意阶魔方矩阵的行列求任意阶魔方矩阵的行列式。式。n=input(please input the order of magic matrix);a=magic(n);det(a)50MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)例例4-264-26 求求例例4-24中中方阵的方阵的行列式和行列式和逆:逆:定义函数文件定义函数文件 qiuni:function ii=qiuni(a)%a matrixad=det(a)if ad=0 disp(no inverse)ii=pinv(a);else ii=inv(a);end在命令窗口输入语句:在命令窗口输入语句:a=4 2-6;7 5 4;3 4 9;ii=qiuni(a)51MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)4 迹迹 trace(A)trace(A)求矩阵求矩阵A A的迹,返回的迹,返回sum(diag(A)例例4-27 求三阶魔方矩阵的求三阶魔方矩阵的迹迹。方法方法1:trace(magic(3)执行结果为:执行结果为:ans=15方法方法2:sum(diag(trace(magic(3)52MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)5 5 范数范数1)向量的范数向量的范数 norm(x)norm(x)求向量求向量x x的的22范数范数 norm(x,1)norm(x,1)求向量求向量x x的的11范数范数 norm(xnorm(x,infinf)求向量求向量x x的无穷大范数的无穷大范数 max(abs(max(abs(A A)norm norm(x(x,-inf)-inf)求求 向向 量量 x x的的 负负 无无 穷穷 大大 范范 数数min(abs(A)min(abs(A)2)矩阵的范数矩阵的范数 norm norm(A,1)(A,1)求矩阵的求矩阵的11范数范数 norm norm(A,2)(A,2)求矩阵的求矩阵的22范数范数 norm norm(A,(A,infinf)求矩阵的无穷大求矩阵的无穷大范数范数53MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)例例4-28 求向量求向量(0 1 2 3)的范数。的范数。x=0 1 2 3;norm(x,1)%求求x的的1范数范数norm(x)%求求x x的的2 2范数范数norm(x,inf)%求求x x的的范数范数norm(x,-inf)%求求x x的的-范数范数54MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)例例4-29 求矩阵的范数。求矩阵的范数。A=2 2-1 1;4 3-1 2;8 3-3 4;3 3-2-2;norm(A,1)%求求A的的1范数范数norm(A)%求求A A的的2 2范数范数norm(A,inf)%求求A A的的 范数范数55MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)6 6 条件数条件数condcond(A(A,1)1)计算计算A A的的1-1-范数下的条件数范数下的条件数condcond(A)(A)或或condcond(A(A,2)2)计算计算A A的的2-2-范数下的条件数范数下的条件数condcond(A(A,infinf)计算计算A A的的-范数下的条件数范数下的条件数56MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)例例4-30 求矩阵的求矩阵的条件条件数数。A=2 2-1 1;4 3-1 2;8 3-3 4;3 3-2-2;cond(A,1)%求求A的的1条件数条件数cond(A)%求求A的的2条件数条件数cond(A,inf)%求求A的的无穷大无穷大条件数条件数57MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)7 7 行阶梯形行阶梯形R=rref(A)求矩阵求矩阵A的减少行阶梯形式的减少行阶梯形式8 8 有理基有理基z=null z的列向量为方程组的正交规范基的列向量为方程组的正交规范基 z=null(A,r)z的列向量是方程的列向量是方程AX=0的有理基的有理基58MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)例例4-31 解方程组解方程组 59MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)例例4-324-32 求方程组的通解。求方程组的通解。60MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)例例4-334-33 求解方程组求解方程组 的通解。的通解。61MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)例例4-34 求解方程组求解方程组。62MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)例例4-35 4-35 求解方程组求解方程组 。63MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)9 9 子空间夹角子空间夹角 subspace(A,B)返回两个列指定的返回两个列指定的A,B子空间的夹角子空间的夹角例例4-364-36 求魔方矩阵的子空间夹角。求魔方矩阵的子空间夹角。H=magic(8);A=H(:,2:4);B=H(:,5:8);theta=subspace(A,B)64MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)4.3.3 矩阵的特殊值分析矩阵的特殊值分析 eigeig(A)(A)求包含矩阵求包含矩阵A A的特征值的向量。的特征值的向量。X,D=X,D=eigeig(A)(A)产生一个矩阵产生一个矩阵A A的特征值在对角线上的对角的特征值在对角线上的对角矩阵矩阵D D和矩阵和矩阵X X,它们的列是相应的特征向量,它们的列是相应的特征向量,满足满足AX=XDAX=XD。65MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)例例4-374-37 求矩阵的特征值和特征向量求矩阵的特征值和特征向量66MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)4.3.4矩阵的分解矩阵的分解1 LU分解分解 L,U=L,U=lulu(A)(A)求求上上三三角角矩矩阵阵U U和和交交换换下下三三角角矩矩阵阵L L,使使LU=ALU=A。L,U,P=L,U,P=lulu(A)(A)求求上上三三角角矩矩阵阵U U、有有单单位位对对角角线线的的下下三三角角矩阵矩阵L L和交换矩阵和交换矩阵P P,满足满足LU=PALU=PA。67MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)例例4-38 4-38 对三阶魔方矩阵作对三阶魔方矩阵作LULU分解。分解。L,U=lu(magic(3)为验证结果的正确性,用语句:为验证结果的正确性,用语句:L*U 68MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)例例4-394-39 求方程组的一个特解。求方程组的一个特解。69MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)2 Cholesky因式分解因式分解 cholchol(A)(A)求求正正定定矩矩阵阵A A的的CholeskyCholesky因因子子,是是一一个个上上三三角角矩矩阵阵。如如果果A A不不是是一一个个正正定定矩矩阵阵,则则给给出一个错误信息。出一个错误信息。G,err=G,err=cholchol(A)(A)求求矩矩阵阵A A的的CholeskyCholesky因因子子G G。如如果果A A不不是是一一个个正正定定矩矩阵阵,则则不不给给出出错错误误信信息息,而而是是将将errerr设为非零值。设为非零值。70MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)例例4-404-40 对矩阵作对矩阵作CholeskyCholesky因式分解。因式分解。a=2 5 4;5 2 1;4 1 8;chol(a)71MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)3 3 qrqr因式分解因式分解 Q,R=Q,R=qrqr(A)(A)求求得得mmmm的的矩矩阵阵Q Q和和上上三三角角矩矩阵阵R R,Q Q的的列列形成了一个正交基,形成了一个正交基,Q Q和和R R满足满足A=QRA=QR。Q,R,P=Q,R,P=qrqr(A)(A)求求矩矩阵阵Q Q、上上三三角角矩矩阵阵R R和和交交换换矩矩阵阵P P。Q Q的的列列形形成成一一个个正正交交基基,R R的的对对角角线线元元素素按按大大小降序排列,它们满足小降序排列,它们满足AP=QRAP=QR。72MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数值计算 (1)(1)例例 4-41 对对 矩矩 阵阵 作作 qr因因 式式 分分 解解。a=2 5 4;5 2 1;4 1 8;Q,R=qr(a)Q,R,P=qr(A)73MATLAB 7.X程序设计程序设计第第第第4 4章章章章 数值计算数值计算数值计算数