1 / 75

第 4 章 数值计算 (1)

第 4 章 数值计算 (1). 主要内容:. ① 数据分析; ②矩阵分析; ③多项式运算; ④数值插值和拟合; ⑤数值积分和微分 。. 4.1 概述. 数值计算的特点: 1 )数值计算是定义在数值数组的基础上,在计算之前必须定义变量并赋值。 2 )数值计算有误差。 3 )数值计算的计算速度较快。 4 )数值计算除定义了算术运算、关系运算和逻辑运算三种,还提供了许多运算函数。. 4.2 数据分析. 4.2.1 统计分析 1 最大值和最小值 1 )求向量的最大和最小值.

gelsey
Download Presentation

第 4 章 数值计算 (1)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第4章 数值计算 (1)

  2. 主要内容: ①数据分析; ②矩阵分析; ③多项式运算; ④数值插值和拟合; ⑤数值积分和微分 。 MATLAB 7.X程序设计

  3. 4.1 概述 数值计算的特点: 1)数值计算是定义在数值数组的基础上,在计算之前必须定义变量并赋值。 2)数值计算有误差。 3)数值计算的计算速度较快。 4)数值计算除定义了算术运算、关系运算和逻辑运算三种,还提供了许多运算函数。 MATLAB 7.X程序设计

  4. 4.2 数据分析 4.2.1统计分析 1 最大值和最小值 1)求向量的最大和最小值 • y=max(X)返回向量X的最大值存入y,如果X中包含复数元素,则按模取最大值。 • [y,I]=max(X)返回向量X的最大值存入y,最大值的序号存入I,如果X中包含复数元素,则按模取最大值。 • 求向量X的最小值的函数是min(X),用法和max(X)完全相同。 MATLAB 7.X程序设计

  5. 例4-1已知x=[-43,72,9,16,23,47], 求向量x的最大值和最小值。 y=max(x)%求向量x中的最大值 [y,l]=max(x)%求向量x中的最大值及其该元素的位置 z=min(x)%求向量x中的最小值 [z,m]=min(x)%求向量x中的最小值及其该元素的位置 MATLAB 7.X程序设计

  6. 2)求矩阵A的最大值和最小值 • max(A) 返回一个行向量,向量的第i个元素是矩阵A的第i列上的最大值。 [Y,U]=max(A) 返回行向量Y和U,Y向量记录A的每列的最大值,U向量记录每列最大值的行号。 • max(A,[],dim) dim取1或2。dim取1时,该函数和max(A)完全相同;dim取2时,该函数返回一个列向量,其第i个元素是A矩阵的第i行上的最大值。 • 求矩阵最小值的函数是min,其用法和max完全相同。 MATLAB 7.X程序设计

  7. 例4-2 分别求三阶魔方矩阵中各列和各行元素 中的最大值,并求整个矩阵的最大值和 最小值。 MATLAB 7.X程序设计

  8. 3)同型的向量或矩阵比较 • U=max(A,B) A,B是两个同型的向量或矩阵,结果U是与A,B同型的向量或矩阵,U的每个元素等于A,B对应元素的较大者。 • U=max(A,n) • n是一个标量,结果U是与A同型的向量或矩阵,U的每个元素等于A对应元素和n中的较大者。 • min函数的用法和max完全相同。 MATLAB 7.X程序设计

  9. 例 4-3分析下列程序的功能。 x=[4 5 6;1 4 8]; y=[1 7 5;4 5 7]; p=max(x,y) ; P 分析:取两个2×3的二维数组x和y同一位置上的元素值大者构成一个新矩阵p。 MATLAB 7.X程序设计

  10. 2 平均值和中值 求数据序列平均值的函数是mean,求数据序列中值的函数是median。 • mean(X) • 返回向量X的算术平均值。 • median(X) • 返回向量X的中值。 • mean(A) • 返回一个行向量,其第i个元素是A的第i列的算术平均值。 MATLAB 7.X程序设计

  11. median(A) 返回一个行向量,其第i个元素是A的第i列的中值。 • mean(A,dim) • 当dim为1时,该函数等同于mean(A);当dim为2时,返回一个列向量,其第i个元素是A的第i行的算术平均值。 • median(A,dim) • 当dim为1时,该函数等同于median(A);当dim为2时,返回一个列向量,其第i个元素是A的第i行的中值。 MATLAB 7.X程序设计

  12. 例4-4已知x=[1 8 4 2;9 6 2 5;3 6 7 1],从 不同维方向求出其平均值和中值。 • median(x) median(x,1)%按列方向,求数组的中值 • median(x,2)%按行方向,求数组的中值 • mean(x) • mean(x,1)%按列方向,求数组的平均值 • mean(x,2)%按行方向,求数组的平均值 MATLAB 7.X程序设计

  13. 3 求和与求积 • sum(X) 返回向量X各元素的和。 • prod(X) • 返回向量X各元素的乘积。 设A是一个矩阵,函数的调用格式为: • sum(A) • 返回一个行向量,其第i个元素是A的第i列的元素和。 • prod(A) • 返回一个行向量,其第i个元素是A的第i列的元素乘积。 MATLAB 7.X程序设计

  14. sum(A,dim) 当dim为1时,该函数等同于sum(A);当dim为2时,返回一个列向量,其第i个元素是A的第i行的各元素之和。 • prod(A,dim) • 当dim为1时,该函数等同于prod(A);当dim为2时,返回一个列向量,其第i个元素是A的第i行的各元素乘积。 MATLAB 7.X程序设计

  15. 例4-5已知x=[4 5 6;1 4 8],分析矩阵x的每行、每列元素的乘积和全部元 素的乘积。 sum(x) sum(x,1) %求数组各列元素的和 sum(x,2) %求数组各行元素的和 sum(sum(x)) %求数组所有元素的和 MATLAB 7.X程序设计

  16. prod(x) prod(x,1) %求数组各列元素的乘积 prod(x,2) %求数组各行元素的乘积 prod(prod(x)) %求数组所有元素的乘积 MATLAB 7.X程序设计

  17. 4 累加和与累乘积 • cumsum(X) 返回向量X累加和向量。 • cumprod(X) 返回向量X累乘积向量。 • cumsum(A) 返回一个矩阵,其第i列是A的第i列的累加和向量。 MATLAB 7.X程序设计

  18. cumsum(A,dim) • 当dim为1时,该函数等同于cumsum(A);当dim为2时,返回一个矩阵,其第i行是A的第i行的累加和向量。 • cumprod(A) 返回一个矩阵,其第i列是A的第i列的累乘积向量。 • cumprod(A,dim) • 当dim为1时,该函数等同于cumprod(A);当dim为2时,返回一个向量,其第i行是A的第i行的累乘积向量。 MATLAB 7.X程序设计

  19. 例4-6已知a = [1 2 3; 3 9 6; 4 10 8; 4 0 7],求矩阵a的每行、每列元 素的乘积和全部元素的累加和。 cumsum(a) %求矩阵的各列元素的累加和 cumsum(a,2) %求矩阵的各行元素的累加和 cumprod(a) cumprod(a,1) %求矩阵的各列元素的累乘积 cumprod(a,2) %求矩阵的各行元素的累乘积 MATLAB 7.X程序设计

  20. 5 标准方差 • 对于向量x,std(x,flag)返回一个标准方差。flag取0或1。 • 对于矩阵A,std(A)返回一个行向量,它的各个元素便是矩阵A各列或各行的标准方差。 Y=std(A,flag,dim) 其中dim取1或2。当dim=1时,求各列元素的标准方差;当dim=2时,则求各行元素的标准方差。flag取0或1。缺省flag=0,dim=1。 MATLAB 7.X程序设计

  21. 例 4-7 已知a = [1 2 3; 3 9 6; 4 10 8;4 0 7],从不同维方向求出其标准方差。 std(a) std(a,0,1) %按列方向求矩阵a的标准方差 std(a,1,1) %按列方向求矩阵a的标准方差 std(a,0,2) %按行方向求矩阵a的标准方差 std(a,1,2) %按列方向求矩阵a的标准方差 MATLAB 7.X程序设计

  22. 6 排序 sort(X) 返回一个对向量X中的元素按升序排列的新向量。 [Y,I]=sort(A,dim,MODE) 对矩阵A的各列或各行重新排序, Y 是排序后的矩阵; I 记录Y中的元素在排序前A中位置; dim 指明对A的列还是行进行排序; MODE为排序的方式。 MATLAB 7.X程序设计

  23. 按升序排列行函数sortrows的调用格式: B = sortrows(A) 按升序排列A 的列,其中A为矩阵或行向量。 B = sortrows(A,column) 以指定的列向量排序矩阵 [B,index] = sortrows(A) 排序时返回向量的序号。 如果A 为列向量,B = A(index); 如果A 为m-by-n 矩阵,B = A(index,:)。 MATLAB 7.X程序设计

  24. 例4-8 已知a = [1 2 3; 3 9 6; 4 10 8; 4 0 7],对矩阵排序。 sort(a,1) sort(a,1,'ascend') %对矩阵a的各列进行升序排列 sort(a,2) sort(a,2,'ascend') %对矩阵a的各行进行升序排列 sort(a,1,'descend') %对矩阵a的各列进行降序排列 sort(a,2,'descend') %对矩阵a的各行进行降序排列 MATLAB 7.X程序设计

  25. 例4-9分析下列语句的功能。 a=['one ','two ','three ','four ','five']; sortrows(a) MATLAB 7.X程序设计

  26. 4.2.2 协方差和相关系数 • cov(x) 求向量x的协方差。 • cov(A) 求协方差矩阵,对角线元素是A中各列的方差。 • corrcoef(X) 返回从矩阵X形成的一个相关系数矩阵。 MATLAB 7.X程序设计

  27. 例4-10计算x的协方差、y的协方差、 x与y的互协方差。 x=[1 2 3 4 5]; y=[2 4 6 8 10]; cx=cov(x) cy=cov(y) cxy=cov(x,y) MATLAB 7.X程序设计

  28. 4.2.3 傅立叶变换 函数名 含义 fft 离散傅立叶变换 fft2二维离散傅立叶变换 fftn n维离散傅立叶变换 fftshift 将零延迟移到频谱中心 Ifft离散傅立叶反变换 ifft2 二维离散傅立叶反变换 ifftnn维离散傅立叶反变换 ifftshift 逆fftshift MATLAB 7.X程序设计

  29. 例4-11求行向量(0,0.1 ,0.2 …,3.14) 的离散傅立叶变换,并通过傅立叶 反变换验证结果是正确的。 MATLAB 7.X程序设计

  30. 4.3 矩阵操作 4.3.1 矩阵的结构变换 1 转置 转置运算的操作符: ‘ 求A的转置,运算表达式为 A‘ 其中A可以是行向量、列向量和矩阵。 MATLAB 7.X程序设计

  31. 例4-12分析下列语句的执行结果。 a=[1 2 3]; b=a′%行向量的转置 a=[1; 2; 3]; b=a′%列向量的转置 a=[1 2; 2 3; 3 4]; b=a′%矩阵的转置 a=[1+2*i 3-4*i]; b=a′%复数矩阵的转置 MATLAB 7.X程序设计

  32. 2 对角阵 • X = diag(v,k) 当v 是n个元素的向量时,返回有第k个对角线的n+abs(k)顺序的方阵,k = 0(可省略)代表主对角线,k > 0代表上方的次对角线, k < 0代表下方的次对角线。 • v = diag(X,k) • 返回第k 条对角线构成的列向量,k = 0(可省略) 时,返回主对角线。 MATLAB 7.X程序设计

  33. diag也允许嵌套使用,格式为: diag(diag(A)) 内部的diag取A的对角元素,外diag利用取出的列向量构成对角阵。 例4-13编程求出n阶魔方矩阵的各对角线。 MATLAB 7.X程序设计

  34. 3 对称变换 上下对称交换函数:flipud 左右对称变换函数:fliplr • B = flipud(A) 返回上下方向翻转的矩阵。如果是列向量,返回相反顺序的向量;如果是行向量,返回原向量。 • B = fliplr(A) 返回水平方向翻转的矩阵。如果是行向量,返回相反顺序的向量;如果是列向量,返回原向量。 MATLAB 7.X程序设计

  35. 以指定的维翻转矩阵的函数flipdim,格式为: B = flipdim(A,dim) 返回以指定的维翻转矩阵。dim =1,以行方向翻转;dim =2,以列方向翻转。 flipdim(A,1)等价 flipud(A), flipdim(A,2) 等价 fliplr(A)。 MATLAB 7.X程序设计

  36. 例4-14 分析下列语句的功能。a=[1 2 3 4;5 6 7 8;9 10 11 12;13 14 15 16]; flipud(a) %flipdim(A,1)%上下方向翻转矩阵 fliplr(a) %flipdim(A,2)% 水平方向翻转矩阵 a=[1; 2; 6; 7; 8]; flipud(a)%列向量的上下方向翻转 a=[1 2 6 7 8]; flipud(a)%行向量的上下方向翻转 MATLAB 7.X程序设计

  37. 4 旋转 • B = rot90(A) 返回A的逆时针旋转90度的矩阵 • B = rot90(A,k) 返回A的逆时针旋转k×90度的矩阵,其中k为正整数。 • 例4-15已知a=[1 2; 6 7; 8 0],分析下列语句 • 的功能。 • rot90(a) • rot90(a,2) • rot90(a,3) MATLAB 7.X程序设计

  38. 5 重组 B = reshape(A,m,n) 返回矩阵A的元素重组的m×n 的矩阵B。如果A没有m×n 个元素,结果错误。 例 4-16建立有12个元素的行向量,并分别重组 为3×4和2×6的矩阵。 MATLAB 7.X程序设计

  39. 6 下三角和上三角矩阵 • tril (X) 提取X的下三角矩阵 • tril (X,K) 提取X的主对角线上和第K条对角线上、下的元素。其中K =0是主对角线,K >0是主对角线的上面,K< 0是主对角线的下面。 MATLAB 7.X程序设计

  40. triu (X) 提取X的上三角矩阵. • triu (X,K) 提取X的主对角线上和第K条对角线上的元素。其中K =0是主对角线,K >0是主对角线的上面,K< 0是主对角线的下面。 MATLAB 7.X程序设计

  41. 例4-17求出3阶魔方矩阵的各下三角阵和各上三角阵。例4-17求出3阶魔方矩阵的各下三角阵和各上三角阵。 MATLAB 7.X程序设计

  42. 例 4-18分析下列程序的功能。 a=-4:4 A=reshape(a,3,3) %把一维数组a重组为二维数组 a1=diag(A,1) %取A阵第一对角线的元素 A1=diag(a1,-1) %产生以a1数组元素为第一下对角线元素的二维数组 flipudA=flipud(A)%上下方向翻转矩阵A fliplrA=fliplr(A)%水平方向翻转矩阵A rot90A=rot90(A)%逆时针旋转90度矩阵A MATLAB 7.X程序设计

  43. 例4-19将三个2×2的矩阵x,y和z组合 成两个新矩阵: (1)组合成一个43的矩阵,其中第一列为按列顺序排列的x矩阵元素,第二列为按列顺序排列的y矩阵元素,第三列为按列顺序排列的z矩阵元素。 (2)按照x,y和z的列顺序组合成一个行向量。 MATLAB 7.X程序设计

  44. 4.3.2矩阵分析 1 逆矩阵 inv(A) 求方阵A的逆矩阵 求伪逆的函数为:pinv(A) 例4-20求矩阵的逆。 a=[-1 2 0;-2 3 0;3 0 2]; inv(a) MATLAB 7.X程序设计

  45. 例4-21解方程组 MATLAB 7.X程序设计

  46. 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 。 MATLAB 7.X程序设计

  47. 例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=A\C/B MATLAB 7.X程序设计

  48. 例4-23求方程组的最小范数解。 MATLAB 7.X程序设计

  49. 2 秩 rank(A) 求A的秩 例4-24求矩阵的秩: (1)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) MATLAB 7.X程序设计

  50. 3 行列式 det(A) 求方阵A对应的行列式的值 例4-25求任意阶魔方矩阵的行列式。 n=input('please input the order of magic matrix'); a=magic(n); det(a) MATLAB 7.X程序设计

More Related