总数2001支,一支烟的重量195克请问多少重

&&&&中公最新版2014江苏省公务员录用考试专业教材行政职业能力测验&...
自营订单满49元(含)免运费
不足金额订单收取运费5元起
邀请好友参加吧
版 次:5页 数:字 数:540000印刷时间:日开 本:大16开纸 张:胶版纸包 装:平装是否套装:否国际标准书号ISBN:8丛书名:江苏省公务员录用考试专业教材所属分类:&&&
下载免费当当读书APP
品味海量优质电子书,尊享优雅的阅读体验,只差手机下载一个当当读书APP
本商品暂无详情。
当当价:为商品的销售价,具体的成交价可能因会员使用优惠券、积分等发生变化,最终以订单结算页价格为准。
划线价:划线价格可能是图书封底定价、商品吊牌价、品牌专柜价或由品牌供应商提供的正品零售价(如厂商指导价、建议零售价等)或该商品曾经展示过的销售价等,由于地区、时间的差异化和市场行情波动,商品吊牌价、品牌专柜价等可能会与您购物时展示的不一致,该价格仅供您参考。
折扣:折扣指在划线价(图书定价、商品吊牌价、品牌专柜价、厂商指导价等)某一价格基础上计算出的优惠比例或优惠金额。如有疑问,您可在购买前联系客服咨询。
异常问题:如您发现活动商品销售价或促销信息有异常,请立即联系我们补正,以便您能顺利购物。
当当购物客户端手机端1元秒
当当读书客户端万本电子书免费读当前位置: >>
MATLAB入门(详)
第一章 MATLAB 的基本操作1.1 MATLAB 的命令窗口在Windows 下开始运行 Matlab,就会出现如图 1.1 所示的界面(Command 界面) ,最 上面显示“MATLAB”字样的高亮条部分叫做标题栏,它表明当前窗口是命令窗口。标题 栏下面是菜单栏, 它包含 (File 文件)、 “ ” (Edit 编辑)、 “ ” (Debug)、 “ ” (Desktop)” (Window “ 窗口) ”和“ (Help 帮助) ”等选项。菜单栏下面有工具按钮,将鼠标移到上面将会显示相 应按钮的功能,读者可根据提示进行操作。图 1.1工具栏下面的大片区域是命令输入区,Matlab 的命令就是从这里输入的。Matlab 语句 的一般形式为: 变量=表达式 例如在 Matlab 命令窗口里输入: a=3;b=4; y=a*b+a/b 得到的输出结果如图 1.2 所示。1 图 1.2如果变量和“=”省略,Matlab 会自动建立名为“ans”的变量。输入语句后以回车结 束,就会在工作区里显示计算结果。对初学者来说,特别值得注意的是:如果输入的语句 以“; ”结束,Matlab 则只进行计算而不输出结果;如果以“, ”结束,Matlab 会输出计算 结果。 在某些变量很多,但只需要知道最终结果的情况下,应该注意合理使用“;,否则输 ” 出的结果将比较乱,且会影响运行速度。 Matlab 的变量由字母、数字和下划线组成,最多可以有 31 个字符,第一个字符必须 是字母。还应注意:Matlab 的变量是要区分大小写的。1.2 建立 M 文件对于比较简单的 Matlab 语句,可以在命令窗口中直接输入,但是如果是较为复杂的 Matlab 语句,就要使用 Matlab 提供的 M 文件了。 M 文件是由 MATLAB 语句 (命令或函数) 构成的 ASCII 码文本文件, 文件名必须以“.m” 为扩展名。通过在命令窗口调用 M 文件,从而实现一次执行多条 MATLAB 语句的功能。 M 文件有两种形式: (1) 命令文件 (Script) 命令文件用来存储程序或语句。 。 它是 MATLAB 命令或函数的组合,没有输入输出参数,执行时只需在命令窗口中键入文件名回车即可。 (2)函数文件(Function) 。函数文件用来新建函数,可以有输入参数和返回输出参数, 函数在自己的工作空间中操作局部变量。 创建命令文件的三种方法:(1)菜单操作:用鼠标单击 MATLAB 命令窗口菜单栏上的2 File, 此时会下拉一个菜单, 然后单击 New 选项, 出现一个右拉式子菜单。 单击 M-file。 (2) 命令操作:在 MATLAB 命令窗口输入命令 edit。(3)命令按钮操作:单击 MATLAB 命令窗 口工具栏上的“新建”命令按钮。此时都将会出现一个 M 文件编辑窗口如图 1.3,这是一个 还没有命名的窗口。我们可以在这里编辑有关的计算程序,程序编辑完毕后必须先存盘, 然后才能运行。单击存盘标记以后,屏幕上会出现一个新的窗口,此窗口的文件名均为 Untitled.m,在保存之前可以先更名, (注意:文件名中不能有中文字,而且文件名的第一 个字母必须是英文,否则将会出现错误) 。 运行 M 文件时单击该 M 文件上方的 Debug, 下拉一个菜单,然后单击 Run 选项如图 1.4,即可以得到结果。如果运行原有的 M 文件,只须单击 File 中的 Open 选项,弹出对话 框, 输入你想要打开的文件名, 即可打开 M 文件, 然后再运行 M 文件, 或直接在 Command 界面中输入你定义的文件名,按回车键,在不打开 M 文件的同时就可以得到计算结果。 M 文件还有另外一种形式就是函数文件。编好的函数文件可以当做新函数一样来调 用。函数文件的第一行必须是下面的格式: function[因变量]=函数名(自变量) 注意:第一行的有无,是区分命令文件与函数文件的重要标志;函数文件保存的文件 名应与用户定义的函数名一致。 函数文件,应该在命令窗口中以固定格式调用。怎样创建一个函数文件并调用,我们 将在后面系统的学习中举例。图 1.33 图 1.41.3 Matlab 命令区在 M 文件中,我们熟悉了命令区菜单命令的“File”项和常用操作键,下面我们学习命 令区菜单栏的其他项和一些通用操作命令。 ①菜单栏“Edit”选项 单击菜单栏上的“Edit”选项,将产生一个下拉菜单,如图 1.5 所示。图 1.5 4 下拉菜单中常用的是: “Undo”用于撤消上一次操作; “Redo”恢复上一步操作; “Cut” 用来剪切所选内容; “Copy”用来复制; “Paste”用来粘贴前面剪切或复制的内容; “Select All”用于选中工作区里的所有内容; “Clear……”是清除命令,可用来清除窗口、历史记 录或工作空间的命令。 ②菜单栏“Window”选项:主要显示已打开的 MATLAB 窗口的信息。 ③菜单栏“Help”选项: 单击菜单栏“Help”选项,将产生一个下拉菜单,如图 1.6 所示。主要用于打开 MATLAB 的帮助窗口。如单击“MATLAB Help”将出现如图 1.7 所示的界面,读者可以根据需要寻 找帮助。图 1.6图 1.7 5 第二章大样本数据的处理方法2.1 矩阵的基本运算2.1.1 实验目的(1)熟练掌握矩阵的基本运算并能利用索引向量进行矩阵的合成与分解. (2)熟练掌握矩阵的特征值与特征向量的计算方法. (3)灵活运用 sort 命令,解决有关排序的实际问题.2.1.2 实验背景知识介绍Matlab 是矩阵实验室(Matrix Lab)的意思,它是以向量和矩阵运算为基础的。在线 性代数课程中我们学习了矩阵的加减法、数乘、矩阵的乘法、矩阵的秩以及矩阵的转置与 求逆运算.为了运用 Matlab 软件进行矩阵的基本运算,我们首先回顾以下基本概念:1.矩阵的基本运算设有矩阵 A ? (a ij ) m?n , B ? (bij ) m?n ,则有以下的基本运算: (1) 矩阵的加减法A ? B ? (a ij ? bij ) m?n(2) 矩阵的数乘kA ? (kaij ) m?n , (k为常数)(3) 矩阵的转置? a11 ? ? a12 T A ?? ? ? ?a ? 1n(4) 矩阵的乘法a 21 ? a m1 ? ? a 22 ? a m 2 ? ? ? ? ? ? a 2 n ? a mn ? ?nAB T ? (? a ik bkl ) m?mk ?1(5) 矩阵的点乘与点除A ? ? B ? (aij bij ) m?n , A ? / B ? (aij / bij ) m?n , (bij ? 0)(6) 矩阵可逆的充分必要条件n 阶矩阵 A 可逆 ? det(A) ? 0 ? r ( A) ? n6 2.矩阵的特征值与特征向量设有 n 阶矩阵 A 和常数 ? ,如果存在非零向量 ? ,使得A? ? ??则称 ? 是 A 的一个特征值, 非零向量 ? 称为矩阵 A 对应于特征值 ? 的一个特征向量. 特征值与特征向量具有以下性质: (1) A与A 有相同的特征值; (2) 不同的特征值对应的特征向量线性无关; (3) n 阶矩阵 A ? (a ij ) n?n 的 n 个特征值 ?1 , ? 2 ,?, ? n 满足:T?? ? ?ai ?1 i i ?1nnii? tr ( A) , ? ? i ? det(A)i ?1n其中 tr (A) 称为矩阵 A 的迹.3.矩阵的协方差矩阵和相关系数矩阵设有样本数据矩阵? x11 ?x 12 X ?? ? ? ? ? x1 p ?x 21 x 22 ? x2 p? x n1 ? ? xn 2 ? ? ? [ x , x , ?, x ] 1 2 n ? ? ? ? x np ? ?它 的 n 个 列 向 量 即 为 n 个 样 品 : x1 , x 2 ,?, x n , 他 们 组 成 来 自 p 元 总 体( X 1 , X 2 , ?, X p ) T 的样本. 观测矩阵 X 的 p 个行向量分别是 p 个变量(或者称为指标)X 1 , X 2 ,?, X p 在 n 次试验中所取的值.样本观测数据的协方差矩阵? s11 ?s 21 S?? ? ? ? ? s p1 ?其中s12 s 22 ? s p2? s1 p ? ? s2 p ? ? ? ? ? ? s pp ? ?s jk1 n ? ? ( x ij ? x j )( x ik ? x k ), n ? 1 i ?1j , k ? 1,2,?, p ,表示第 j 个指标与第 k 个指标的协方差 样本观测数据的相关系数矩阵7 ? r11 ?r 21 R?? ?? ? ?rp1 ?其中r12 r22 ? rp 2? r1 p ? ? 1 ? r2 p ? ? r21 ??? ? ? ?? ? ? ? rpp ? ?rp1 ? ?s jk s jj s kkr12 1 ? rp 2? r1 p ? ? r2 p ? ? ? ? ? ? 1? ?r jk ?,j , k ? 1,2, ? , p由于协方差矩阵与相关系数矩阵是实对称矩阵,根据代数理论可知:一定存在正交矩 阵 Q s , Qr ,使得T Q s SQ s ? ? s , QrT RQr ? ? r其中 ? s , ? r 分别为与 S, R 相似的两个对角矩阵, 其主对角线上的元素就是 S, R 的特 征值,Q s , Qr 就是特征向量.由于 tr ( S ) ? tr (? s ), tr ( R) ? tr (? r ) ,通常利用协方差矩阵 与相关系数矩阵的特征值作为初始权,归一化后生成权向量.2.1.3 实验内容1.矩阵运算的 Matlab 实现(1)矩阵的输入:在 Matlab 中,矩阵的首尾要以“[ ]”括起来,按行输入每个元素: 同一行中的元素用逗号或者用空格符来分隔,且空格个数不限;行与行之间用分号或 “Enter”键分隔。矩阵的元素可以是数字或表达式。表达式中不能包含没有定义的变量。 元素的赋值由表达式完成。?1 ?2 【例题 2.1】矩阵 A ? ? ?3 ? ?45 1 0 1? 6 0 1 1? ? ,在 Matlab 中的输入方法为: 7 1 0 1? ? 8 0 1 1?% 此处分号的作用在于上述输入的结果A=[1,5,1,0,1;2,6,0,1,1;3,7,1,0,1;4,8,0,1,1];并不显示,如果要显示结果,可以去掉分号或者将分号改成逗号. 注意:%号之后的语句都是解释语句,MATLAB 不执行这部分语句。 又如,在 Matlab 中输入: x=pi/4;y=2; A=[3,4,5;sin(x),y^2,9] 运行结果如图 2.1 所示8 图 2.1(2)子矩阵的生存:假设矩阵 A 是一个 m ? n 矩阵。如果要从矩阵 A 中取出部分元 素组成新的矩阵,可以有以下方法: ①取出矩阵 A 的第 i 行或第 j 列: B=A(i,:) , C=A(:,j) , % 此处冒号的作用表示取出行(列)的所有元素; ②若去掉矩阵 A 的第 i 行或第 j 列; A(i,:)=[], A(:,j) =[], %注意两者命令的区别③取出矩阵 A 的第 i,j,k 行(列)元素组成的矩阵: 方法 1 索引向量法: 首先输入索引向量 a=[i,j,k]; 然后输入 B=A(a, :), C= A(: ,a) 方法 2 矩阵拼接法: B=[A(i,:);A(j,:);A(k,:)] C=[A(: ,i),A(: ,j),A(: ,k)](3)矩阵的运算:为了方便实现矩阵的基本运算,我们将 Matlab 命令列于下表:表 2.1 矩阵的基本运算命令 A+B A-B A.*B功能 矩阵对应元素相加 矩阵对应元素相减 矩阵对应元素相乘命令 std(A) range(A) rank(A)9功能 计算 A 的各列标准差 计算矩阵 A 的各列极差 计算矩阵 A 的秩 A./B A*B k*A A' inv(A) mean(A) var(A) abs(A)矩阵对应元素相除 矩阵 A 左乘矩阵 B 常数 k 乘矩阵 A 的各元素 矩阵 A 转置运算 矩阵 A 的求逆运算 计算 A 的各列均值 计算 A 的各列方差 对 A 的各元素取绝对值A.^n A^n flipud(A) fliplr(A) exp(A) log(A) sqrt(A) sum(A)矩阵 A 的各元素 n 次方 方阵 A 的 n 次方 将矩阵 A 的元素上下翻转 将矩阵 A 的元素左右翻转 将矩阵 A 的各元素做指数 对矩阵 A 的各元素取对数 对 A 的各元素求算术平方根 计算 A 的各列元素之和(4)常用的产生特殊矩阵的命令 命令 功能 命令 功能ones(m,n) 全部元素都为 1 的矩阵 rand(m,n) 产生 m×n 维随机矩阵 eye(m,n) m×n 维单位矩阵zeros(m,n) 全部元素都为 0 的矩阵 randn(m,n) 正态分布的随机矩阵 compan(A) 矩阵 A 的伴随矩阵2.有关矩阵的特征值、特征向量的 Matlab 命令在多元统计分析与综合评价时经常用到矩阵的特征值建立权向量,利用最大特征值对 应的特征向量计算主成分得分.为了方便今后的应用,我们介绍有关特征值、特征向量的 Matlab 命令: (1) 计算矩阵 A 的特征值与特征向量 [v, d] =eig (A) 输出:v 的每一列向量就是对应特征值的特征向量,d 是一个对角阵,主对角线上的 元素就是矩阵 A 的特征值, 例如在 Matlab 中输入: A=[1,5,1,0;2,6,0,1;3,7,1,0;4,8,0,1]; [v,d]=eig(A) 运行结果如图 2.2 所示10 图 2.2表明:矩阵 A 的特征值为 8.9501,-0.6440,-0.0。它们对应的特征向 量分别为: (-0.3497, -0.4503, -0.5284, -0.6291) ; (-0.2116, -0.0515, 0.6055, 0.7655) ; (0.1715,-0.0,0.6860)(-0.3,-0.8595,-0.2996) ; (2) 计算矩阵的特征多项式 p=poly(A) q=poly(sym(A)) 输出:p 是矩阵 A 的特征多项式的系数(按降幂排列),q 是矩阵 A 的特征多项式 (3) 设有样本数据矩阵? a11 ?a 12 A?? ? ? ? ?a1 pa 21 ? a n1 ? a 22 ? a n 2 ? ? ? [a , a , ? , a ] 1 2 n ? ? ? ? a 2 p ? a np ?cov(A),corrcoef(A)在 Matlab 中计算矩阵列向量之间的协方差矩阵与相关系数矩阵的命令分别为:3、矩阵元素的排序 Matlab 命令可以解决很多实际问题,比如参加游泳比赛、田径比赛的运动员有各自的 号码及比赛的成绩,有的项目按成绩从小到大排序得到排名,有的项目按成绩从大到小排11 序得到排名,我们既要准确迅速地给出各运动员的名次,也要根据成绩排序快速确定运动 员的号码.在 Matlab 中可以利用 sort 命令,具体用法如下: B=sort(A);% 将矩阵 A 中各列元素按照从小到大的排序; [B,i]=sort(A); % 此时 i 给出 A 中各列元素从小到大排序以后元素的序号 C=sort(A, 'descend'); %将矩阵 A 中各列元素按照从大到小排列 [C,k]= sort(A, 'descend'); 序号 %此时 k 给出 A 中各列元素从大到小排序以后元素的k=[1:2:5];m=[2:12,14:22,23:34]; B=A(m,k)【例题 2.2】 :下表给出的我国部分城市某年上半年的月平均气温,将平均气温从低到高 排列,并给出各城市的名次矩阵;表 2.2序号 1城 北市 京1月 -5.42月 -1.5123月 7.34月 14.45月 23.16月 25.7 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32天津-4.9 -3.5 -4.6 -9.9 -16.2 5.6 -19.8 -22.8 5.9 4.0 6.1 3.7 12.9 6.7 -1.5 -0.4 -1.3 4.7 5.4 15.4 14.4 20.0 8.7 8.3 7.0 4.9 10.3 1.1 1.1 -3.2 -6.9-1.6 0.5 -0.2 -5.1 -9.1 2.6 -13.9 -16.5 6.8 5.8 7.1 5.8 12.9 8.4 1.6 2.0 2.6 6.9 7.5 15.1 13.8 18.9 10.5 11.1 10.0 6.7 11.7 4.7 5.0 1.1 -3.3137.6 10.8 6.2 0.7 0.2 3.7 -3.0 -4.4 1.0 10.7 12.3 11.7 15.6 12.7 9.6 6.1 11.6 13.2 12.7 19.4 18.2 22.6 15.1 16.1 15.1 12.1 14.9 4.9 12.1 6.5 1.614.4 15.4 12.4 10.4 11.8 10.9 9.8 8.6 15.2 15.6 16.0 16.1 18.2 17.1 15.8 11.3 15.4 17.3 16.5 21.7 21.6 26.8 18.1 17.7 17.3 14.4 19.6 8.1 14.6 11.4 7.423.0 24.1 20.2 18.2 19.2 18.2 17.0 16.5 20.8 22.7 21.9 23.8 23.2 23.3 24.6 17.8 23.9 24.0 22.9 26.5 24.9 27.8 23.5 22.5 22.7 17.4 17.0 12.4 22.2 17.7 11.525.8 27.3 23.5 23.2 24.1 23.0 23.0 22.8 24.2 24.7 24.4 25.4 26.8 25.6 27.2 21.2 26.9 26.9 25.7 27.2 26.9 28.6 26.1 24.1 23.8 20.2 20.0 14.6 26.3 22.2 15.6石 家 庄 太 原呼和浩特 沈 大 长 阳 连 春哈 尔 滨 上 南 杭 合 福 南 济 青 郑 武 长 广 南 海 桂 重 成 贵 昆 拉 西 兰 西 海 京 州 肥 州 昌 南 岛 州 汉 沙 州 宁 口 林 庆 都 阳 明 萨 安 州 宁 33 34银川-4.7 -11.8-1.5 -8.94.5 3.011.3 9.618.9 19.923.2 23.1乌鲁木齐题目分析:此题主要利用 sort 命令将各城市的平均气温从低到高,或者从高到低排 列,关键要能准确找到某城市在某月中的排序。 在 Matlab 中输入: A=[ -5.4 -4.9 -1.5 7.3 14.4 23.1 25.7 -1.6 7.6 14.4 23.0 25.8……-11.8 -8.9 3.0 9.6 19.9 23.1]; B=sort(A); [B,i]=sort(A); 结果为: i= 9 8 …… 21 23 21 23 21 23 21 23 21 23 3 23 9 8 9 8 32 29 32 29 29 32 % 此时 B 给出各城市从小到大的排序 % 此时 i 给出平均气温从小到大排列以后各城市的序号这里第一行表示按照从小到大排序,一到六月份最低温度的城市代号分别是第 9,9, 9,32,32,29 个城市,即一至三月份最低温度的城市是哈尔滨(9),四至五月份最低温 度的城市是西宁(32),六月份拉萨(29)温度最低。 如果想进一步了解某城市在某月中的排序也可以对 i 进一步排序,命令如下: B1=sort(i) ; [B1,j]= sort(i); 结果为: j=8 9 …… 10 4 10 4 6 8 4 9 11 13 12 1014% 此时 j 给出各城市平均气温从小到大排序的名次矩阵9 813 1413 1423 2222 24 这里第一行的 8,9,13,13,23,22 表示编号为 1 的城市(北京) ,一到六月份温度 按照从小到大排序,分别是第 8,9,13,13,23,22 位。 请读者练习将平均气温从高到低排列的命令。2.2 .向量的距离与夹角余弦2.2.1 实验目的(1)熟练掌握向量的欧氏距离、马氏距离、绝对距离与闵可夫斯基距离的计算. (2)掌握向量范数与矩阵范数的概念以及条件数的计算. (3)掌握判别分析建模的简单方法.2.2.2 实验背景知识介绍在解决实际问题的过程中,我们经常用向量表示各种方案(或样品) ,为了对不同的 方案进行综合评价(或不同的样品进行判别分析) ,我们首先介绍向量的距离、向量范数 与矩阵范数以及条件数的概念. 1.欧氏距离:设有 n 维向量 x ? ( x1 , x 2 ,?, x n ), y ? ( y1 , y 2 ,?, y n ) ,则称d ( x, y) ?为 n 维向量 x,y 之间的欧氏距离.?(xi ?1ni? yi ) 22.绝对距离:设有 n 维向量 x ? ( x1 , x 2 ,?, x n ), y ? ( y1 , y 2 ,?, y n ) ,则称d ( x, y ) ? ? | x i ? y i |i ?1n为 n 维向量 x,y 之间的绝对距离. 3.闵可夫斯基距离:设有 n 维向量 x ? ( x1 , x 2 ,?, x n ), y ? ( y1 , y 2 ,?, y n ) ,则称d ( x, y ) ? [? | x i ? y i | r ]1 / ri ?1n为 n 维向量 x,y 之间的闵可夫斯基距离. 显然,当 r=2 和 1 时闵可夫斯基距离分别为欧氏距离和绝对距离. 4.马氏距离:设有 n 维向量 x ? ( x1 , x 2 ,?, x n ), y ? ( y1 , y 2 ,?, y n ) ,则称d ( x , y ) ? ( x ? y )? ?1 ( x ? y ) T15 为 n 维向量 x,y 之间的马氏距离,其中 ? 为总体协方差矩阵. 设 x 是取自均值向量为 m ,协方差矩阵为 ? 的总体 G,则称d ( x , G ) ? ( x ? m ) ? ?1 ( x ? m ) T为 n 维向量 x 与总体 G 的马氏距离. 显然,当 ? 为单位矩阵时马氏距离就是欧氏距离. 5.向量的范数:设有 n 维向量 x ? ( x1 , x 2 ,?, x n ) ,则称|| x || p ? (? | x i | p )1 / pi ?1n为向量 x 的 l p 范数. 其中 1 ? p ? ? ,这之中最常用的范数是 p ? 1, p ? 2 以及 p ? ? ,即|| x ||1 ? ? | x i |i ?1n|| x || 2 ? (? | x i | 2 )1 / 2i ?1n|| x || ? ? max | x i |i6.矩阵的范数: 设有 n 阶实数矩阵 A , 则与向量范数 || ? || ? , || ? ||1 , || ? || 2 相容的矩阵范数 分别为 (a) 行范数: || A || ? ? max{1? i ? n?| aj ?1nnij|}(b) 列范数: || A ||1 ? max{1? j ? n?| ai ?1Tij|}1/ 2(c) 2-范数: || A || 2 ? (? max ( A A))TT 其中 ? max ( A A) 表示矩阵 A A 的最大特征值.7.矩阵的 Frobenius 范数:设有 n 阶实数矩阵 A ,则称N ( A) ?为矩阵 A 的 Frobenius 范数.16i , j ?1?an2 ij 8.矩阵的条件数:设矩阵 A 可逆, || ? || 是某种矩阵范数,则称cond ( A) ?|| A ?1 || ? || A ||为矩阵 A 相应于该矩阵范数的条件数. 矩阵的条件数在求解线性方程组时具有重要意义,它可以帮助你判别所得到的数值解 的可信性以及模型的合理性,通常条件数大就是病态的矩阵,条件数小的矩阵是良态的. 9.向量范数与矩阵范数满足的不等式|| x || ? ?|| x ||1 ? n || x || ? || x || ? ?|| x || 2 ? n || x || ?? ( A) ?|| A ||,|| A || 2 ? N ( A) || Ax || 2 ? N ( A) || x || 2其中 ? ( A) ? max{| ? i |} 是方阵 A 的谱半径(方阵 A 特征值绝对值的最大值)i10.模型的误差分析 当一个判别准则提出以后,还要研究它的可靠性即判别分析模型的误差估计。通常, 利用回代误判率和交叉误判率进行误差的估计。若属于 G1 的样品被误判为属于 G2 的个数 为 N1 个,属于 G2 的样品被误判为属于 G1 的个数为 N2 个,两类总体的样品总数为 n,则 误判率为 p ?N1 ? N 2 n(a)回代误判率 设 G1,G2 为两个总体,X1,X2,?,Xm 和 Y1,Y2,?,Yn 是分别来自 G1,G2 的训练样 本,以全体训练样本作为 m+n 个新样品,逐个代入已建立的判别准则中判别其归属,这个 过程称为回判. 若属于 G1 的样品被误判为属于 G2 的个数为 N1 个,属于 G2 的样品被误判? 为属于 G1 的个数为 N2 个,则误判率估计为 p ? N1 ? N 2 m?n(b)交叉误判率估计 交叉误判率估计是每次剔除一个样品,利用其余的 m+n-1 个训练样本建立判别准则 再用所建立的准则对删除的样品进行判别. 对训练样本中每个样品都做如上分析,以其误 判的比例作为误判率,具体步骤如下. ① 从总体为 G1 的训练样本开始, 剔除其中一个样品, 剩余的 m-1 个样品与 G2 中的 全部样品建立判别函数. ② 用建立的判别函数对剔除的样品进行判别.17 ③ 重复步骤①,②,直到 G1 中的全部样品依次被删除,又进行判别,其误判的样品 个数记为 m12 . ④ 对 G2 的样品重复步骤①,②,③直到 G2 中的全部样品依次被删除,又进行判别, 其误判的样品个数记为 n21 . 于是交叉误判率估计为? p? m12 ? n21 m?n2.2.3 实验内容1.计算向量距离的 Matlab 命令在 Matlab 中计算上述距离的命令如下:表 2.3格式 dist(X,Y) mandist(X,Y) pdist(X, 'euclidean') pdist(X, 'cityblock') pdist(X,’minkowski’,r) sqrt(mahal(X,G))功能 计算 X 中的每一行向量与 Y 中的每个列向量之间的欧氏距离 计算 X 中的每一行向量与 Y 中的每个列向量之间的绝对距离 计算 X 中的每一行向量之间的欧氏距离 计算 X 中的每一行向量之间的绝对距离 计算 X 中的每一行向量之间的闵可夫斯基距离 计算 X 中的每一行向量与总体 G 的马氏距离注意:dist(X,Y)与 mandist(X,Y)中要求 X 的列数等于 Y 的行数;sqrt(mahal(X,G))中 G 的行数必须大于 G 的列数. 【例题 2.3】 现测得 6 只 Apf 和 9 只 Af 蠓虫的触长,翅长数据如下: Apf: (1.14,1.78), (1.18,1.96), (1.20,1.86), (1.26,2.00), (1.28,2.00), (1.30,1.96) Af:(1.24,1.72), (1.36,1.74), (1.38,1.64), (1.38,1.82), (1.38,1.90), (1.40,1.70), (1.48,1.82), (1.54,1.82), (1.56,2.08) (1) 计算两类蠓虫的各自之间的欧氏、绝对、马氏距离 (2) 计算两类蠓虫到另一类蠓虫总体的马氏距离,由此你得到什么结论? (3) 对触长,翅长为(1.24,1.80),(1.28,1.84),(1. 40,2.04)的 3 个样本进行识别. 题目分析: 为了对分类有一个直观的印象, 我们首先作出原始数据的散点图 (图 2.3) , 从图中可以看出未知的三个蠓虫既可能属于 Apf,也可能属于 Af.18 2.1 2.05 2 1.95 1.9 1.85 1.8 1.75 1.7 1.65 1.6 1.1Apf Af x1.151.21.251.31.351.41.451.51.551.6图 2.3由于 Apf 和 Af 是两类不同的蠓虫,因此他们的触长,翅长应该有所区别.这种区别在 于:同类之间差别较小,两类之间差别较大.利用 Matlab 软件,我们得到如下结果:表 2.4 APF 蠓虫之间欧氏、绝对、马氏距离 APF 蠓虫之间 欧氏距离 绝对距离 马氏距离d12 d13 d14 d15 d16 d23 d24 d25 d26 d34 d35 d36 d45 d46 d560.0 0.8 0.0 0.7 0.3 0.4 0.6 0.04470.0 0.0 0.0 0.0 0.0 0.0 0.0 0.06002.3 2.8 2.7 1.0 3.4 1.5 0.6 1.1764表 2.5 AF 蠓虫之间欧氏、绝对、马氏距离 AF 类蠓虫之间 欧氏距离 绝对距离 马氏距离d120.1217190.14001.4423 d13 d14 d15 d16 d17 d18 d19 d23 d24 d25 d26 d27 d28 d29 d34 d35 d36 d37 d38 d39 d45 d46 d47 d48 d49 d56 d57 d58 d59 d670.0 0.2 0.2 0.0 0.2 0.2 0.5 0.0 0.9 0.4 0.7 0.0 0.0 0.9 0.2200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.02.5 1.8 2.5 3.5 0.5 0.6 1.2 1.1 0.1 1.3 0.9 1.0 2.0 1.2 1.9 d68 d69 d78 d79 d890.3 0.0 0.26080.0 0.0 0.28001.9 0.2 2.4183表 2.6 两类蠓虫分别到另一类蠓虫总体的马氏距离 Apf 蠓虫到 Apf 类的马氏距离 Apf 蠓虫到 Af 类的马氏距离1.2 0.6 0.5Af 蠓虫到 Apf 类的马氏距离3.4 3.4 3.5Af 蠓虫到 Af 类的马氏距离4.9 8.9 4.3 8.3 6.58711.5 1.0 1.5 0.9 2.1296从表 2.5 可以看出: 蠓虫到 Apf 类的马氏距离均小于 Apf 蠓虫到 Af 类的马氏距离; Apf Af 蠓虫到 Af 类的马氏距离均小于 Af 蠓虫到 Apf 类的马氏距离,这表明利用马氏距离进 行两类蠓虫的判别,其回代正确率 100%. 设 x ? ( x1 , x 2 ,?, x n ) 是待判别的样品, G1 ,G2 是两个不同的总体,距离判别分析的 准则如下: 若 d ?x,G1 ? ? d ?x,G2 ?21则 x ? G1 若 d ?x,G1 ? ? d ?x,G2 ? 由于则 x ? G2d ( x1 , Apf ) ? 2.5897 ? d ( x1 , Af ) ? 2.2238 ,所以 x1 ? Af ; d ( x 2 , Apf ) ? 2.7874 ? d ( x 2 , Af ) ? 1.9791 ,所以 x 2 ? Af ;d ( x 3 , Apf ) ? 3.1014 ? d ( x 2 , Af ) ? 2.4437 ,所以 x 3 ? Af .计算程序: %输入原始数据 Apf=[1.14,1.78;1.18,1.96;1.2,1.86;1.26,2.;1.28,2;1.30,1.96] ; Af=[1.24,1.72;1.36,1.74;1.38,1.64;1.38,1.82;1.38,1.90 ;1.40,1.70;1.48,1.82;1.54,1.82;1.56, 2.08]; %计算 Apf 类蠓虫之间的欧氏距离、绝对距离、马氏距离 d1=(pdist(Apf))'; d2=(pdist(Apf,'cityblock'))'; d3=(pdist(Apf,'mahal'))'; d=[d1,d2,d3] %计算 Af 类蠓虫之间的欧氏距离、绝对距离、马氏距离 D1=(pdist(Af))'; D2=(pdist(Af,'cityblock'))'; D3=(pdist(Af,'mahal'))'; D=[D1,D2,D3] %计算两类蠓虫到另一类蠓虫总体的马氏距离 d11=sqrt(mahal(Apf,Apf)); d12=sqrt(mahal(Apf,Af)); d21=sqrt(mahal(Af,Apf)); d22=sqrt(mahal(Af,Af)); %未知样品的判别 x= [1.24,1.8;1.28,1.84;1.4,2.04]; sqrt(mahal(x,Apf)) sqrt(mahal(x,Af)) 结果说明:(1) 以上我们给出了利用距离进行判别的简单方法,如果选取不同的距离22 可能得到不同的结果; 对于距离判别分析可以考虑加权距离判别; 由于马氏距离的 (2) (3) 计算公式中有总体的协方差矩阵,因此首先要检验两类总体的协方差矩阵是否相等,此时 我们利用样本的协方差矩阵 S1 , S 2 进行检验,在《数据分析》课程中我们将进一步研究距 离判别分析方法.2. Matlab 软件计算向量范数、矩阵范数、向量夹角余弦的方法在 Matlab 中计算向量范数、矩阵范数、向量夹角余弦的命令如表 1.13 所示:表 2.7 矩阵范数、向量夹角余弦的命令命令 norm(A,1) norm(A,2) norm(A,inf) norm(A, 'fro') normr(A) normc(A) 1-pdist(A,'cos ine') 矩阵 A 的 1 范数 矩阵 A 的 2 范数 矩阵 A 的无穷范数功能矩阵 A 的 Frobenius 范数 将矩阵 A 的行向量单位化 将矩阵 A 的列向量单位化 计算矩阵 A 的行向量之间的夹角余弦3.Matlab 线性方程组的解(1)齐次线性方程组 AX=0 的非零解 MATLAB 中 Z=null(A, )就是求 AX=0 的基础解系,其中 Z 的列向量即为所求基础 ‘r’ 解系。? x1 ? 2 x 2 ? 2 x3 ? x 4 ? 0 ? 【例题 2.4】求方程组 ?2 x1 ? x 2 ? 2 x3 ? 2 x 4 ? 0 的通解 ? x ? x ? 4 x ? 3x ? 0 2 4 ? 1解:在 MATLAB 中输入: A=[1,2,2,1;2,1,-2,-2;1,-1,-4,-3]; format rat Z=null(A,'r') 运行结果如图 2.4 所示 %指定有理格式输出23 图 2.4? 2 ? ? 5 ? ? ? ? ? ? ? 2? ? ? 4? ? k2 ? ? 故所求通解为: x ? k1 ? 1 ? 0 ? ? ? ? ? 0 ? ? 3 ? ? ? ? ?注意:format rat 是有理式格式输出,小数用最接近的分数表示;若输入 format long 则输出格式是长格式,显示 15 位数;缺省格式是 format short(短格式) ,显示到小数点 后 4 位;format bank 是货币银行格式,显示到小数点后 2 位。 (2)非齐次线性方程组 AX=b 求解 其命令格式可以是: ①若矩阵 A 可逆,则 X=A\b %用矩阵左除法求解 ②化成行简化阶梯型,利用 rref 函数 C=[A,b];%由系数矩阵 A 和常数列向量 b 构成增广矩阵 C D=rref(C)%将 C 化成行简化阶梯型 则 D 的最后一列元素就是所求的解? 2 x1 ? 3x 2 ? 5 x3 ? 12 ? 【例题 4】求方程组 ?3 x1 ? 6 x 2 ? 8 x3 ? 34 的解 ? 6 x ? 5 x ? 4 x ? 43 2 ? 1解法 1:在 MATLAB 命令窗口中输入: A=[2,3,5;3,6,8;6,5,4];24 b=[12;34;43]; X=A\b 运行结果如图 2.5图 2.5注意: b 是列向量,求解前应先检验 A 是否是满秩矩阵。 (可以用 R=rank(A)命令求秩) 解法 2:在 MATLAB 命令窗口中输入: A=[2,3,5;3,6,8;6,5,4]; b=[12;34;43]; C=[A,b]; D=rref(C) 运行结果如图 2.625 图 2.6实验 2.3 . 数据的属性与处理方法 2.3.1 实验目的(1) 熟练掌握效益型、成本型、固定型、区间型数据处理的方法. (2) 掌握常见的建立客观性权向量的基本方法. (3) 掌握综合评价建模方法2.3.2 实验背景知识介绍设有 n 个决策方案的集合:A= A1 , A2 ,?, AnT?TTT?其中 Ai ? ?ai1 , ai 2 , ?, aim ? 是第 i 个方案关于第 m 项评价指标的指标值向量.于是我们 可以得到 n 个方案关于 m 项评价指标的指标矩阵? a11 ? ? a 21 A= ? ? ? ?a ? n1a12 a 22 ? an2? a1m ? ? ? a2m ? ? ?? ? ? a nm ? ?其中 a ij 表示第 i 个方案关于第 j 项评价因素的指标值.26 通常评价指标分为效益型、成本型、固定型和区间型指标.而对各评价方案进行综合 评价,必须首先统一评价指标的属性.我们用 I 1 , I 2 , I 3 分别表示效益型、成本型和固定型 指标,对于指标矩阵 A ,我们针对上述的几种指标建立效益型和成本型矩阵,即通过无量 纲化,将矩阵的各元素均转化为效益型和成本型指标. (1)效益型矩阵? (aij ? min aij ) (max aij ? min aij ) ? j j j ? B ? (bij ) n?m , bij ? ? (max aij ? aij ) (max aij ? min aij ) j j j ? ?(max aij ? ? j ? aij ? ? j ) max aij ? ? j ? min aij ? ? j j ? j ? aij max aij aij ? I 1 ? j ? D ? (d ij ) n?m , d ij ? ? min aij . aij aij ? I 2 j ? aij ? I 3 ?min aij ? ? j . aij ? ? j ? j其中 ? j 为第 j 项指标的适度数值. (2)成本型矩阵aij ? I 1 aij ? I 2 aij ? I 3? min aij . / aij ? j ? E ? (eij ) n?m , eij ? ? aij / max aij j ? ? aij ? ? j / max aij ? ? j j ?aij ? I 1 aij ? I 2 aij ? I 3? ? (max aij ? aij ) (max aij ? min aij ) aij ? I 1 ? j j j ? C ? (cij ) n?m , cij ? ? (aij ? min aij ) (max aij ? min aij ) aij ? I 2 j j ? j ? a ? ? ? min a ? ? (max a ? ? ? min a ? ? ) a ? I j ij j ij j ij j ij 3 ? ij j j j ?(3) 建立客观性权向量的方法 变异系数法:首先计算变异系数 v i ? s i / x ,然后将其归一化就得到权向量. 夹角余弦法: 利用[1]中的方法可得到各方案与理想最佳和最劣方案的相对偏差矩阵为U ? (uij ) n?m , V ? (v ij ) n?m其中27 uij ?max aij ? aijjmax aij ? min aijj j; vij ?aij ? min aijjmax aij ? min aijj j计算 U,V 的对应列向量的夹角余弦得到初始权重,归一化后得到客观性权向量.2.3.3 实验内容【例题 2.4】 近年来我国淡水湖水质富营养化的污染日趋严重,表 1.20、表 1.21 分 别为我国五个湖泊的实测数据和湖泊水质评价标准. 利用距离判别法对上述五个湖泊的水 质进行综合评估,确定水质等级.表 2.8 全国 5 个主要湖泊评价参数的实测数据 指标 湖泊 总磷(mg/L) 耗氧量(mg/L) 透明度(m) 总氮(mg/L)杭州西湖 武汉东湖 青海湖 巢湖 滇池130 105 20 30 2010.30 10.70 1.4 6.26 10.130.35 0.40 4.5 0.25 0.502.76 2.0 0.22 1.67 0.23表 2.9 湖泊水质评价标准 评价参数 总磷 耗氧量 透明度 总氮 极贫营养 贫营养 中营养 富营养 极富营养&1 &0.09 &37 &0.024 0.36 12 0.0623 1.80 2.4 0.31110 7.10 0.55 1.20&660 &27.1 &0.17 &4.6题目分析: (1).建立无量纲化实测数据矩阵和评价标准矩阵 根 据 表 2.8 和 表 2.9 , 我 们 得 到 实 测 数 据 矩 阵 X ? ( xij ) 5? 4 和 等 级 标 准 矩 阵Y ? ( y kt ) 4?5?130 10.3 0.35 ?105 10.7 0.4 ? X ? ? 20 1.4 4.5 ? ? 30 6.26 0.25 ? 20 10.13 0.5 ? 2.76 ? ? 1 ? ?0.09 2.0 ? Y ?? 0.22 ? , ? 37 ? ? 1.67 ? ?0.02 0.23 ? ?28660 ? 0.36 1.8 7.10 27 .1? ? 12 2.4 0.55 0.17 ? ? 0.06 0.31 1.20 4.60 ? 4 23 110 然后建立无量纲化实测数据矩阵:A=(aij) (i=1,2,3,4,5;j=1,2,3,4)? xij / max xij ? j aij ? ? min xij / xij ? j ?j?3 j?3无量纲化等级标准矩阵 B=(bkt), (k=1,2,3,4,;t=1,2,3,4,5)? y kt / max y kt ? k bkt ? ? min y kt / y kt ? k ?利用 Matlab 我们得到:k ?3 k ?3? ? ? A?? ? ? ? ?? ? ? B?? ? ? ?(2)计算评价指标的权重1.7 0.8 0.15380.96260.0 ? ? 1.0 0.7246 ? 0.6 0.0797 ? ? 0.0 0.6051 ? 0.0 0.0833 ? ?0.0 ? ? 0.0 1.0000 ? 0.1 1.0000 ? ? 0.9 1.0000 ? ?0.3 0.30.8 0.2 0.0130首先计算矩阵 B 的各行向量的均值与标准差:2 ? (bij ? ? i ) 5?i ?1 5 ? bij , si ? 5 j ?1j ?14(i=1,2,3,4)(i=1,2,3,4)然后计算变异系数: wi ? si / ? i最后对变异系数归一化得到各指标的权向量为 w=[ 0.2767 ,0.7 ,0.2442] 根据权重的大小,即可说明总磷、耗氧量、透明度和总氮四种指标对湖泊水质富营养 化所起作用.由上可知,各指标的作用很接近,比较而言总磷所起作用最大,耗氧量、总氮 次之、透明度的作用最小. (3). 建立各湖泊水质的综合评价模型 我们利用欧氏距离和绝对值距离进行建模.29 计算 A 中各行向量到 B 中各列向量的欧氏距离 d ijd ij ?k ?12 ? (aik ? bkj ) , , (i ? 1,2,3,4,5; j ? 1,2,3,4,5)4若 d ik ? min {d ij } ,则第 i 个湖泊属于第 k 级.(i =1,2,3,4,5) 1? j ? 5 计算 A 中各行向量到 B 中各列向量的绝对值距离 DijDij ? ? | aik ? bkj |k ?14若 Dik ? min {Dij } ,则第 i 个湖泊属于第 k 级.(i =1,2,3,4,5) 1? j ? 5表 2.9 欧氏距离判别表 距离 湖泊d i1di23i ddi4d i5级别杭州西湖 武汉东湖 青海湖 巢湖 滇池1.9 0.1 1.07931.8 0.8 1.06501.9 0.2 0.98671.1 0.2 0.73280.4 1.1 1.34505 5 3 4 4表 2.10 绝对值距离判别表 距离 湖泊 杭州西湖 武汉东湖 青海湖 巢湖 滇池d i13.6 0.1 1.6701di23.8 0.3 1.6374d i33.8 0.4 1.4444di42.7 0.3 1.0660d i50.7 3.1 2.3161级别5 5 3 4 4从上面的计算可知,尽管欧氏距离与绝对值距离意义不同, 但是对各湖泊水质的富营 养化的评价等级是一样的,表明我们给出的方法具有稳定性. 计算程序: X=[130,10.30,0.35,2.76;105,10.70,0.40,2.0;20,1.4,4.5,0.22;30,6.26,0.25,1.67;20,10.13,0.5 0,0.23]; %输入原始数据30 Y=[1,4,23,110,660;0.09 ,0.36,1.80,7.10,27.1;37,12,2.4,0.55,0.17;0.02,0.06,0.31,1.20,4.6]; B1=Y(1,:)./660; B2=Y(2,:)./27.1; B3=0.17./Y(3,:); B4=Y(4,:)./4.6; B=[B1;B2;B3;B4] A1=X(:,1)./130; A2=X(:,2)./10.7; A3=0.25./X(:,3); A4=X(:,4)./2.76; A=[A1,A2,A3,A4]; %建立无量纲化的数据矩阵与无量纲等级矩阵 b=B'; t=std(b)./mean(b); w=t/sum(t); jd=dist(A,B), mjd=mandist(A,B), % 计算绝对距离与欧氏距离 % 计算绝对距离与欧氏距离结果说明: (1) 此题也可以用夹角余弦法建立权向量, 建议读者选取不同的方法建立 权向量,比较判别结果; 【例题 2.5】根据北京、上海、天津和云南四个城市的 6 项经济指标统计数据建立综 合评价模型,对上述四个地区进行评估.表 2.11 经济效益统计数据 地区 资金利润率 销售利润率 全员劳动生 产率 北京 上海 天津 云南 综合能耗 物耗 技改占固定资产 投资比率29.09 36.97 29.13 23.9224.05 22.90 20.40 27.201.94 2.60 1.97 1.174.55 2.43 3.60 7.9267.40 67.90 68.70 58.1067.60 54.55 64.00 55.20题目分析:在这些指标中,除了综合能耗和物耗是成本型指标外,其余指标均为效益 型指标. 计算步骤如下: (1) 计算各评价指标的客观性权重31 利用[1]中的方法可得到理想最佳和最劣方案为: u=(36.97,27.2,2.6,2.43,58.1,67.6), v=(23.92,20.4,1.17,7.92,68.7,54.55) 相对偏差矩阵为:0 ? ? 0.2 0.2 0.8774 ? 0 0. 0.0 ? ? ? R? ? 0.0 0.1 1.9? ? ? 0 1.0 0 0.9502? ? 1.0000 ? ? T?? ? ? ?量: W=(0.2151 ,0.1,0.3,0.0962) (2) 建立效益型矩阵 B, D 和成本型矩阵 C , E0.8 0.8 0.0? ? 1.6 1.0 0.0755 0 ? 0..9 0 0.7241 ? ? 0 1. 1.8 ?将上述两个矩阵的对应列向量的夹角余弦作为初始权重,归一化后得到客观性权向?0.3962 ? 1 B?? ?0.3992 ? ? 0 ?0.7869 ? 1 D?? ?0.7879 ? ?0.8 ? 0 C?? ?0.6008 ? ? 10.6 0 1 0.9 0..4 1 00....0 0..4406 10..7869 00.5 0 1? 0 ? ? 0.7241 ? ? 0.0498 ? 1 ? 0.8070 ? ? 0.9467 ? ? 0.8166 ? 1 ? 1 ? ? 0.2759 ? ? 0.9502 ? 00.0 1 0.8 0...7 1 0.5 1 032 ?0.2 ?0.8 E?? ? 0.8211 1 ? 0.7500 ? 1其中 bij ? ?0.5 0.9 1 0.5 10.0 ? 0.9884 1 ? ? 1 0.8523 ? ? 0.2 ?? (aij ? min aij ) (max aij ? min aij ) ? j j j ?(max aij ? aij ) (max aij ? min aij ) j j ? j ? aij max aij ? j d ij ? ? min aij . aij ? j ? j ? 1,2,3,6 j ? 4,5j ? 1,2,3,6 j ? 4,5( i ? 1,2,3,4 )( i ? 1,2,3,4 )?(max aij ? aij ) /(max aij ? min aij ) ? j j cij ? ? j (aij ? min aij ) /(max aij ? min aij ) ? j j j ?j ? 1,2,3,6 j ? 4,5?min aij . / aij ? eij ? ? j ?aij / max aij j ?(3)计算综合评价值j ? 1,2,3,6 j ? 4,5( i ? 1,2,3,4)由矩阵 B 、 D 可得: H i ??bj ?16ij? w j , Fi ? ? d ij ? w j ( i ? 1,2,3,4 )j ?1 66由矩阵 C 、 E 可得: hi ?? cij ? w j , f i ? ? eij ? w j ( i ? 1,2,3,4 )j ?1 j ?16表 2.12 综合评价值与排序地区Hi0.2 0.0排序Fi排序hi排序fi0.1 0.8排序北京 上海 天津 云南2 1 3 40.9 0.72 1 3 40.9 0.02 1 3 42 1 3 4从表 2.12 可以看出:对于两类不同的效益型矩阵和成本型矩阵,综合评估的结果完全 一样,表明我们的方法具有较高的可靠性. 计算程序:33 A=[29.09 36.97 22.90 29.13 20.40 23.92 27.2024.05 2.60 1.97 1.171.94 2.43 3.60 7.924.55 67.90 68.70 58.1067.40 67.60 54.55 64.00 55.20];%理想最佳和最劣方案 U=[max(A(:,1:3)),min(A(:,4:5)),max(A(:,6))] V=[min(A(:,1:3)),max(A(:,4:5)),min(A(:,6))] %相对偏差矩阵 R=abs(A-ones(4,1)*U)./(ones(4,1)*range(A)) T=abs(A-ones(4,1)*V)./(ones(4,1)*range(A)) %建立权向量 r=normc(R); t=normc(T); w=sum((r.*t))/sum(sum(r.*t)) %建立成本型矩阵与效益型矩阵 B=[(A(:,1:3)-ones(4,1)*min(A(:,1:3))),(ones(4,1)*max(A(:,4:5))-A(:,4:5)),A(:,6)-min(A(:,6 ))]./(ones(4,1)* range(A)) D=[A(:,1:3)./(ones(4,1)*max(A(:,1:3))),(ones(4,1)*min(A(:,4:5)))./A(:,4:5),A(:,6)/max(A(: ,6))] %计算综合评价值 H=B*(w') F=D*(w') 结果说明:(1) 计算程序中只给出了成本型矩阵 B 与效益型矩阵 D 的程序,C,E 的程 序请读者自己给出,相应的综合评价值的程序也请自行给出.(2) 如果是成本型矩阵,则 综合评价值越小排名越靠前;如果是效益型矩阵,则综合评价值越大排名越靠前.2.3.4 练习1. 根据我国部分省、市、自治区电力消费量的数据统计,解决以下实际问题: (1) 哪些地区的电力消费量逐年增长?34 (2) 计算自治区之间的夹角余弦与欧氏距离、绝对距离,哪两个自治区最接近? (3) 将电力消费量从大到小排列,给出 2000 年的各地区排名 (4) 将原始数据进行变换: (a) 各数据减去均值再比上标准差, (b) 各数据减去均值再比上极差, (c) 各数据比上均值表 2.13 分地区电力消费量(单位:亿千瓦小时) 地 北 天 河 山 区 京 津 北 西 99 174.13 124.15 354.16 255.47 121.82 462.19 190.77 296.38 264.74 411.81 230.29 185.67 136.66 127.65 448.69 338.17 281.33 226.73 359.00 125.58 13.96261.74 178.99 602.68 399.16 186.83 622.81 267.60 409.38 403.27 684.80 439.59 288.97 261.28 181.21 741.07 571.48 414.99 374.76 787.66 220.77 32.00344.13 211.19 745.72 459.34 236.77 756.11 295.46 422.58 501.20 848.74 611.67 312.96 355.26 193.91 805.47 672.09 487.65 376.74 .06 38.65 303.86384.43 234.05 809.34 501.99 254.21 748.89 291.37 442.28 559.45 971.34 738.05 338.93 401.51 208.15 .52 503.02 406.12 .44 38.37 307.61 21.23399.94 247.94 867.55 557.58 280.89 764.77 295.08 456.86 592.98 .40 359.59 439.19 222.28 .41 526.02 439.78 .92 42.96 220.54 589.57内蒙古 辽 吉 宁 林黑龙江 上 江 浙 安 福 江 山 河 湖 湖 广 广 海 重 四 海 苏 江 徽 建 西 东 南 北 南 东 西 南 庆 川350.23582.85462.2635 贵 云 陕 甘 青 宁 新州 南 西 肃 海 夏 疆103.21 124.55 170.29 177.84 42.21 55.02 69.99203.70 223.71 239.68 241.06 69.02 92.38 119.67274.22 296.70 273.63 291.58 107.24 115.32 169.30287.78 273.58 292.76 295.33 109.10 136.17 182.98335.19 320.75 321.54 306.09 111.90 151.81 197.922. 根据开发高新区技术企业主要经济指标,解决以下问题: (1) 计算各地区人均总产值、人均总收入和人均出口总额并与全国的平均作比较; (2) 总产值、人均总产值从大到小排列,两者排名向量的绝对距离是多少? (3) 以总产值、 总收入、 出口总额为评价指标建立综合评价模型对各开发区进行评价; (4) 以人均总产值、人均总收入、人均出口总额为评价指标建立综合评价模型对各开 发区进行评价,如此得到的结果与(3)中的结果有何不同?对此你有何看法? (5) 用 box-cox 公式对原始数据作变换表 2.14 开发高新区技术企业主要经济指标 地区 全国 北京 天津 石家庄 保定 太原 包头 沈阳 大连 鞍山 长春 吉林 哈尔滨 大庆 上海 职工人数(人) 总产值 (万元) 总收入 (万元) 出口总额(千美元)720 04
9 南京 常州 无锡 苏州 杭州 合肥 福州 夏门 南昌 济南 青岛 淄博 潍坊 威海 郑州 洛阳 武汉 襄樊 长沙 株洲 广州 深圳 珠海 惠州 中山 佛山 南宁 桂林 海南 重庆 成都
178520 绵阳 贵阳 昆明 西安 宝鸡 西宁 兰州 乌鲁 木齐
1641460 469
3、对例题 2 中触长,翅长为(1.24,1.80),(1.28,1.84),(1. 40,2.04)的 3 个样本利用向量 之间的夹角余弦进行识别。第三章函数的微积分实验 3.1程的求根 3.1.1 实验目的(1)学习 MATLAB 软件中函数的定义方法。函数的表达与一元方(2)掌握非线性方程与非线性方程组数值解的 Matlab 命令;3.1.2 实验背景知识介绍函数是数学中最基本的概念。不论是简单的数值计算,还是复杂的实际应用,都离不 开函数,特别是多项式,它频繁出现在很多的计算里,对于一个数学表达式,怎样将它转 化为计算机能够识别的语句函数,是各种软件首先要解决的问题,MATLAB 提供了大量的函 数命令。尤其关于函数方程的求根、分解、求导数以及多项式的拟合等功能在 MATLAB 中 都能得到很好的实现。通常一元函数记为 y ? f (x) ,二元函数记为 z ? f ( x, y) ,??,n 元函数记为 y ? f ( x1 , x 2 ,?, x n ) 。38 3.1.3 实验内容1、函数的一般表达MATLAB 软件中函数的定义是指:将数学函数用 Matlab 语言编写成可在 Matlab 软件 环境下运行的程序源代码。有三种方法: (1)基本的数学函数可直接写出; (2)用命令 sym 或 syms 生成符号对象; (3)建立 M 文件,M 文件是由 MATLAB 命令或函数构成的文本文件, 并以“.m”为扩展名。 (1)MATLAB 中的基本的数学函数见表 3.1表 3.1 基本的数学函数函数名 sin(x) cos(x) tan(x) cot(x) sec(x) exp(x) log(x) sqrt(x) log10(x) abs(x)含义函数名 asin(x) acos(x) atan(x) acot(x) csc(x) max(x) min(x) sum(x) sign(x) fix(x)含义正弦函数 余弦函数 正切函数 余切函数 正割函数 指数函数 对数函数 平方根函数 常用对数函数 绝对值反正弦函数 反余弦函数 反正切函数 反余切函数 余割函数 最大值 最小值 元素的的总和 符号函数 朝零方向取整(2)各种定义函数的方法 ①sym 定义函数 其格式为:y=sym(?f(x)?)或 y=?f(x)? ②inline 定义函数:用于曲线拟合、数值计算 其格式为:首先建立 M 文件,在 M 文件中输入 fun=inline(?f(x)?, ?参变量?, ?x?) ③利用 M 文件建立函数文件(Function) 。方法如下: 格式:function[ y1 , y 2 , ? ]= ff ( x1 , x2 , ?) 说明: ff是函数名,x1 , x2是输入变量,y1 , y2是输出变量 。 注意: (1)输入变量用( )括起来,输出变量用[ ]括起来。 (2)函数名和文件名必须相同!函数名开头必须用字母,区分大小写。 (3)程序开头必须以 function 开始,第二行以后可加入注释行或运算语句。39 【例题 3.1】建立函数 y ?1 ? sinx x e 1 ? cosx方法 1:在 MATLAB 命令窗口中输入:y='(1+sin(x))*exp(x)/(1+cos(x))' 方法 2:建立 M 文件,在 M 文件内输入:fun=inline('(1+sin(x))*exp(x)/(1+cos(x))');此 时默认 x 是输入参量。 方法 3:建立文件名为的函数文件 function [y]=ff(x) y=(1+sin(x)).*exp(x)./(1+cos(x)) 在命令窗口调用 ff 函数: y=ff(x) 回车后将出现图 3.1 所示的界面图 3.1界面显示所输入的 x 是没有定义的,此时若给 x 赋值,将计算函数 y 的对应值。在命 令窗口可以反复调用 M 函数文件 2、多项式的一般表达及非线性方程(组)的求根 (1)多项式在 MATLAB 中是由行向量来表达的,向量中的元素是多项式系数的降幂 排列。 其中最后一个元素代表多项式中的 0 幂项, 即常数项, 千万不可省略, 否则 MATLAB 将无法识别这一项。 【例题 3.2】 MATLAB 中输入四次多项式 f ( x ) ? 1.35 ? 0.668 x ? 0.436 x ? 0.6955 x ,2 340 只需在命令区中输入: p=[0.,0.668,1.35]; 这样就建立了 f ( x ) ? 1.35 ? 0.668 x ? 0.436 x ? 0.6955 x 这个多项式。2 3(2)多项式的求根命令: ① roots 函数 【例题 3.3】求例题 3.2 中多项式的根 解:输入:p=[0.,0.668,1.35]; x=roots(p) 回车后将得到如图 3.2 所示的结果。 因为采用矩阵算法, 所以 MATLAB 中的多项式和 它的根都是向量。多项式为行向量,根为列向量。图 3.2②如果不用 roots 命令求根,还可以利用 solve 函数的命令。可以得到方程根的解析解 或数值解,其命令格式为: solve(?eqn1?,?eqn2?,…,?eqnN?); solve(?eqn1?,?eqn2?,…,?eqnN?,?var1,var2,...,varN?); 【例题 3.4】求方程 e?x? sin?x2的根。 % 用 pi 代替 3.1416 也可以解:输入:x_star=solve('exp(-x)=sin(3.1416*x/2)','x')41 得到:x_star = . 【例题 3.5】求解非线性方程组 ?? x 2 ? xy ? y ? 32 ?x ? 4x ? 3 ? 0解:输入:[x,y]=solve('x^2+x*y+y=3','x^2-4*x+3=0') 得到:x=1, 3 y = 1, -3/2③有些方程无法用 solvs 函数求出根,这时就需要调用相应的数值解函数,如 fzero。 fzero 函数是找出一维变量为零的点。寻找零点时可以指定一个开始点,或者指定一 个开始区间。如果指定一个开始点,此函数首先在开始点附近寻找一个使函数值变号的区 间。如果我们知道函数值在某个区间上变号,则可以用一个包含两个元素的矢量指点区间 作为 fzero 的输入参数。其计算格式为 x= fzero(fun,x0) 或 x= fzero(fun,[a,b]) 其中,x 为方程的零点,fun 为所求方程的函数(fun 既可以是 x 的字符串,也可以是 内嵌函数的名字或 m 文件的名字) ,x0 为初始点,[a,b]为使函数值变号的区间。 【例题 3.6】 求方程 x ? x ? 1 ? 0 的根,取初始点 x0=1.53解:输入:x=fzero('x^3-x-1',1.5) 结果为:x =1.3247实验 3.2 函数的导数、积分与极值的计算 3.2.1 实验目的掌握 Matlab 软件计算函数的极限、导数、积分与极值的命令。.3.3.2 实验内容1、函数极限的 Matlab 实现格式:limit(F,x,a) %计算当 x→a 时,F=F(x)的极限,缺省时 a=0 limit(F,x,a,?right?) %计算当 x→a+时,F=F(x)的右极限 limit(F,x,a,?left?) %计算当 x→a-时,F=F(x)的左极限2、函数微分的 Matlab 实现MATLAB 中函数的微分是 diff。包括数值差分和符号微分。其主要调用格式为: diff S, v’ ( ‘ ,n) %对自变量 v, 求表达式 S 的 n 次导数。 在缺省状态下, v=findsym(S),n=142 【例题 3.7】 :求当 x→0 时,函数 y ? 解:在命令窗口或 M 文件中输入: syms x %定义自变量 F=(sin(x)-tan(x))/sin(x^3); j1=limit(F,x,0) d1=diff(F,'x')sin x ? tan x 的极限和一阶导数。 sin x 3注意:在实际问题中,往往会遇到某函数 f(x) 是用表格表示的,用通常的导数定义无 法求导,因此要寻求其他方法近似求导。插值法是常用的一种的方法,详细内容将在计算方 法中详细介绍。3、数值积分的 Matlab 实现在直角坐标系里,求一个函数与 x 轴围成的面积,就属于简单积分。可以用以下几种 方法计算。 1)梯形法数值积分 格式为: I=trapz(x,y) %用梯形法计算 y 在 x 点上的积分。其中 x 是由积分区间[a,b]的离散节点构成的列向量, 是相应节点函数值构成的向量。 y 2)辛普生(Simpson)法 格式为: I=quad(?fun?,a,b) I=quadl(?fun?,a,b) %近似地从 a 到 b 计算函数 fun 的数值积分, 高精度计算,效能可能比 quad 更好注意:quadl 最后是字母 l,不是数字 1。 2)符号函数的积分 格式为: I=int(s,'v','a','b') I=int(s,'v') %对表达式 s 中指定的符号变量 v 计算从 a 到 b 的定积分 %对表达式 s 中指定的符号变量 v 计算不定积分?【例题 3.8】用 MATLAB 计算定积分 I ??2 0sin xdx方法 1:用 trapz 函数计算。在命令窗口或 M 文件中输入: x=0:0.001:pi/2; y=sin(x); z=trapz(x,y)43 则输出结果:z =0.9992 方法 2:用 quad 函数计算。输入: i=quad('sin(x)',0,pi/2) 则输出结果:i =1.0000 以上两种方法得出得结果不同,这是由于所选方法各自产生的误差不同造成的。 【例题 3.9】 计算定积分 I ??sin x dx 0 x1解:在命令窗口或 M 文件中输入: x=0:0.001:1; y=sin(x)./x; I=trapz(x,y) 则输出结果如图 3.3 所示。图 3.3图 3.2 的警告信息是说明用零作了除数,导致 f(0)没有意义。 重新输入: x=0:0.001:1; y=sin(x)./x; y(1)=1; I=trapz(x,y)44 则输出结果 I =0.9461 结果分析: 后面我们输入 y(1)=f(0)=1, 这是因为 lim?x ?0sin x 从计算结果可以看出, ? 1。 x为获得较好近似值,所取步长 h=0.001 已非常小,如果步长稍大一些,则计算结果稍差。 【例题 3.10】 求人造地球卫星轨迹的长度――人造地球卫星的轨迹可视为平面上的椭 圆。我国的第一颗人造卫星近地点距离地球表面 439km,远地点距离地球表面 2384km, 地球半径为 6371km,求该卫星的轨迹长度。 题目分析:人造地球卫星的轨迹可用下列椭圆参数方程来描述? x ? a cos t ? ? y ? b sin t?(0 ? t ? 2? , a ? b ? 0)其中 a=8755km,b=6810km 分别为椭圆的长短半轴,则该轨迹的长度 L 就是如下的参 数方程弧长积分: L ? 4?2 0(a sin t ? b cos t ) dt2 2 2 21 2在命令窗口或 M 文件中输入: x=0:0.001:pi/2; a=8755;b=6810; y=sqrt(a^2.*(sin(x)).^2+b^2.*(cos(x)).^2); L=4*trapz(x,y) 则输出结果为 L=4. 即人造地球卫星的轨道长度 L=49062 km。4、求极值问题的 MATLAB 实现在 Matlab 中有求函数极小值的命令: [x,fval] = fminbnd(F,a,b) %计算 F 在 a,b 之间取极小值时的 x 与 y(即 fval).3 2【例题 3.11】 求 f ( x) ? 2 x ? 6 x ? 18 x ? 7 在区间(-2,4)内极小值 解:输入: f=inline('2*x.^3-6*x.^2-18*x+7') [x,fval] = fminbnd(f, -2, 4) 结果为: x = 3.0000 fval =-47.0000 故 函数在 x=3 时,有极小值- 4745 注意:如果计算极大值,可将 f(x)前面添负号,则-f(x)的极小值点,就是 f(x)的极大 值点.极大值为-fval 【例题 3.12】 求 f ( x) ? 2 x ? 6 x ? 18 x ? 7 在区间(-2,4)内极大值3 2解:输入: f='-2*x.^3+6*x.^2+18*x-7' ; [x,fval] = fminbnd(f, -2, 4) 结果为: x = -1.0000 fval =-17.0000 故 函数在 x=-1 时,有极大值 17。 注意:计算函数极值时,不能用 sym(?f(x)?)表示法,但是可以用:y=?f(x)?3.3.4 练习1、求 f ( x ) ?3x 2 的二阶导数。 x3 ? 2x2 ? 31 x2、求下列函数的极限值:(1) lim (1 ? x )x?0(2) limln 2 x . x ??? x 33、用多种方法求下列积分,比较他们的结果 1)?3?0e ?0.5t sin(t ??6)dt2)??2 01 ? sin 2 x dx1 3) 2?4)?????e dx?x 2?x 2 ln x 2 dx实验 3.3 线性插值与曲面插值 3.3.1 实验目的掌握线性插值与曲面插值的 Matlab 命令;.46 3.3.2 实验背景知识介绍在生产和科学实验中, 自变量 x 与因变量 y 的函数 y = f(x)的关系式有时不能直接写出 表达式,而只能得到函数在若干个点的函数值或导数值。当要求观测点之外的函数值时, 就需要估计函数在该点的值。 如何根据观测点的值,构造一个比较简单的函数 y=φ (x),使函数在观测点的值等于 已知的数值或导数值, 再用简单函数 y=φ (x)在点 x 处的值来估计未知函数 y=f(x)在 x 点的 值呢?寻找这样的函数φ (x),办法是很多的。 根据测量数据的类型,对应地有两种处理观测数据的方法。 1.测量值是准确的,没有误差,一般用插值法。 2.测量值与真实值有误差,一般用曲线拟合。 插值法是函数逼近的重要方法之一,有着广泛的应用。插值法有很多种,其中以拉格朗 日(Lagrange)插值和牛顿(Newton)插值为代表的多项式插值最有特点,常用的插值还有 Hermit 插值,分段插值和样条插值. 曲线拟合的常用方法是曲线拟合的最小二乘法。 (我们将在第六章介绍) MATLAB 中提供了众多的数据处理命令。有插值命令,有拟合命令,有查表命令等。3.2.3 实验内容1、一维插值 已知离散点上的数据集 [( x1 , y1 ), ( x2 , y 2 ), ?, ( xn , y n )] ,找出一个解析函数连接自变 量相邻的两个点 ( xi , xi ?1 ) ,并求得两点间的数值,这一过程叫插值。 命令 1 yi=interp1(X,Y,xi,method) %在离散点集[X,Y]内求出对应于 xi 的插值点 yi说明:该命令用指定的算法对数据点之间计算内插值。它找出一元函数 f(x)在中间点 的数值。其中函数 f(x)由所给数据决定。各个参量之间的关系如图 3.4。Y:原始数据点 Yi:插值点f(x)x:原始数据点 xi:插值点图 3.4数据点与插值点关系示意图 47 常用的插值方法(method)有: ?nearest?:最近邻点插值,直接完成计算; ?linear?:线性插值(缺省方式) ,直接完成计算; ?spline?: 三次样条函数插值。 对于该方法, 命令 interp1 调用函数 spline、 ppval、 mkpp、 umkpp。这些命令生成一系列用于分段多项式操作的函数。命令 spline 用它们执行三次样 条函数插值; ?pchip?:分段三次 Hermite 插值。对于该方法,命令 interp1 调用函数 pchip,用于对 向量 x 与 y 执行分段三次内插值。该方法保留单调性与数据的外形; ?cubic?:与?pchip?操作相同; ?v5cubic?:在 MATLAB 5.0 中的三次插值。 对于超出 x 范围的 xi 的分量,使用?nearest?、?linear?、?v5cubic?的插值算法,相应地 将返回 NaN。对其他的方法,interp1 将对超出的分量执行外插值算法。 命令 2 yi = interp1(x,Y,xi,method,'extrap') %对于超出 x 范围的 xi 中的分量将执行特殊的外插值法 extrap。 yi = interp1(x,Y,xi,method,extrapval) %确定超出 x 范围的 xi 中的分量的外 插值 extrapval,其值通常取 NaN 或 0。 注意:自变量必须是单调的。 【例题 3.13】根据某企业历史记录以及 2010 年的计划产量如表 3.2,现在需要了解 1995 年的产量。表 3.2年份 20 50产量 75.995 91.972 105.711 123.203 131.669 150.697年份 80 10产量 179.323 203.212 226.505 249.633 256.344 267.893解:在 MATLAB 命令窗口或 M 文件中输入: year = 0; product = [75.995 226.505 249.633 91.972 105.711 123.203 131.669 150.697 179.323 203.212256.344 267.893 ];48 p1995 = interp1(year,product,1995) x = 0; %将年代按照每年一个插值点划分 y = interp1(year,product,x,'pchip'); plot(year,product,'o',x,y) 插值结果为:p85 插值图形为图 3.3。 %计算插值函数图 3.3离散数据的一维插值图2、二维插值 格式 ZI = interp2(X,Y,Z,XI,YI,method) %用指定的算法 method 计算二维插值说明:返回矩阵 ZI,其元素对应于参量 XI 与 YI(可以是向量、或同型矩阵)的元素。 用户可以输入行向量和列向量 Xi 与 Yi,此时,输出向量 Zi 与矩阵 meshgrid(xi,yi)是同型 的。参量 X 与 Y 必须是单调的,且相同的划分格式,就像由命令 meshgrid 生成的一样。 若 Xi 与 Yi 中有在 X 与 Y 范围之外的点,则相应地返回 nan(Not a Number) 。 常用的插值方法(method)有: ?linear?:双线性插值算法(缺省算法) ; ?nearest?:最临近插值; ?spline?:三次样条插值; ?cubic?:双三次插值。 【例题 3.14】 :美国
年,工作 10 年、20 年、30 年后退休工资如表 3.3,问 一个人在 1975 年已工作 15 年,若退休应拿多少退休工资?表 3.3y 10 年 150.697 179.32320 年 199.592 195.0724930 年 187.625 250.287 90203.212 226.505 249.633179.092 153.706 120.281322.767 426.730 598.243解:在 MATLAB 命令窗口或 M 文件中输入: years = 0; service = 10:10:30; wage = [150.697 199.592 187.625 179.323 195.072 250.287 203.212 179.092 322.767 226.505 153.706 426.730 249.633 120.281 598.243]; w = interp2(service,years,wage,15,1975) 插值结果为:w =190.6288 练习:1、已知 x=[0.1,0.8,1.3,1.9,2.5,3.1];y=[1.2,1.6,2.7,2.0,1.3,0.5];用不同的方法求 x=2 点的插值,并分析所得的结果有何不同? 2、在海洋深处不同深度的水温如下,求在 500 米、1000 米、1500 米处的水温。若求 在 2000 米处的水温呢? 深度 m 水温 0C 446 7.04 714 4.28 950 3.40 .1316342第四章 Matlab 编程4.1 实验目的学会用 MATLAB 语言编程,掌握条件语句、for 循环、while 循环语句,模拟计算建 模。50 4.2 实验背景知识介绍1.程序的三种基本结构1966 年,Bohra 和 Jacopini 提出了程序的以下三种基本结构,用这三种基本结构作为 表示一个良好结构化程序设计的基本单元. (1)顺序结构, 顺序执行每个操作,即先执行 A 操作,再执行 B 操作,两者之间是顺 序执行的关系。图 4.1 是顺序结构的流程图。顺序结构是最简单的一种基本结构。 (2)选择结构, 设 P 代表一个判断条件,当 P 成立(或称“为真”)时,执行 A 操作, 否则执行 B 操作。即 A 和 B 中只能选择其中之一。图 4.2 是选择结构的流程图。A 或 B 两 个框中可以有一个是空的,即不执行任何操作. (3)循环结构,它又称重复结构,即反复执行某一部分的操作.有两类循环结构: ①当型循环结构:当条件 P 成立时,反复执行 A 操作,直到条件 P 不再成立时才跳出 循环。图 4.3(a)是当型循环结构的流程图。 ②直到型循环结构:先执行 A 操作,再判断条件 P 是否成立,若 P 成立,则再执行 A 操作,如此反复,直到条件 P 不成立时跳出循环。图 4.3(b)是直到型(Until 型)循环的流 程图。图 4.1图 4.2图 4.3已经证明,由以上三种基本结构顺序组成的算法结构,可以解决任何复杂的问题.由基本 结构所构成的算法属于”结构化”的算法,它不存在无规律的转向,只在本基本结构内才允许 存在分支和向前或向后的跳转. 2、关系运算和逻辑运算 关系运算符主要用来比较数与数、矩阵与矩阵之间的大小,并返回真(用“1”表示) 、 假(用“0”表示) 。其 6 种基本关系运算符及 4 种逻辑运算见表 4.1表 4.1 51 基本关系运算符 & (大于) & (小于) & = (大于等于) & = (小于等于) = = (等于) ~ = (不等于)逻辑运算 &(与) |(或) ~(非) Xor(异或)3、在 MATLAB 中关系操作符、逻辑操作符和计算操作符都有它们的优先等级和计算 的先后秩序。各运算符的优先级如表 4.2 所示。表 4.2 各运算符的优先级(适用于 MATLAB 6.x 版本)优先级别 1 2 3 4 5 6 7 8 9 括号() 转置.? 代数正+ 数组乘.* 加+ 冒号: 小于& 数组与& 数组或| 大于& 等于= = 不小于&= 不大于&= 不等于~= 共轭转置? 代数负数组除./ 减数组幂.^ 逻辑非~ 数组除.\ 矩阵乘* 矩阵左除\ 矩阵右除/ 矩阵幂 ^ 运算符4.3 实验内容(1)循环语句:MATLAB 提供了两种循环方式:①for-end 循环和 while-end 循环。 ①for 循环语句――计数循环方式: 调用格式为: for 循环变量=初值:步长:终值 循环体语句 end 执行过程:将初值赋给循环变量,执行循环体语句;执行完一次循环之后,循环变量 自增一个步长的值,然后再判断循环变量的值是否介于初值和终值之间,如果满足仍然执 行循环体,直至不满足为止。 循环的嵌套调用格式为: for 循环变量 1=初值 1:步长 1:终值 1 for 循环变量 2=初值 2:步长 2:终值 252 循环体语句 end end ② while 循环语句――条件循环方式 while 语句的一般调用格式为: while 表达式 循环体语句 end 其执行过程为:若表达式的值为真时,则执行循环体语句,执行后再判断表达式的值 是否为真,直到表达式的值为假则跳出循环。 while 语句一般用于事先不能确定循环次数的情况。 (2)条件控制语句:MATLAB 提供了两种条件控制方式: if 分支语句和 switch 分 支语句。 ① if 分支语句:在 MATLAB 中,if 语句有 3 种调用格式。 (a) 单分支 if 语句调用格式为 if 表达式 语句体 end 其执行过程为:当表达式的值为真时,则执行语句体,执行完之后继续执行 if 语句的 后继语句;否则跳过语句体直接执行 if 语句的后继语句。 (b) 双分支 if 语句调用格式 if-else-end 语句 if 表达式 语句体 1; else 语句体 2; end 其执行过程为:当表达式的值为真时,执行语句体 1,否则执行语句体 2;语句体 1 或语句体 2 执行后,再执行 if 语句的后继语句。 (c) 多分支 if 语句调用格式 if 表达式 153 语句体 1; else if 表达式 2 语句体 2; else 语句体 3; end 其执行过程为:当表达式 1 的值为真时,执行语句体 1,然后跳出继续执行 if 语句的 后继语句;否则判断表达式 2 的值,为真则执行语句体 2 然后跳出继续执行 if 语句的后继 语句;再否则…… ②switch 分支结构语句 switch 语句调用格式为: switch 表达式 case 表达式 1 语句体 1 case 表达式 2 语句体 2 ?? case 表达式 m 语句体 m otherwise 语句体 m+1 end 其执行过程为:控制表达式的值与每一个 case 后面表达式的值比较,若与第 k(k 的 取值为 1~m)个 case 后面的表达式 k 的值相等,就执行语句体 k;若都不相同,则执行 otherwise 下的语句体 m+1。 (3)其他流程控制语句 ①continue 语句 continue 语句用于 for 循环和 while 循环中,其作用就是终止一次循环的执行;跳过循 环体中所有剩余的未被执行的语句,去执行下一次循环。 ②break 语句 break 语句也常用于 for 循环和 while 循环中,其作用就是终止当前循环的执行;跳出54 循环体,去执行循环体外的下一行语句。 ③return 语句 return 语句用于终止当前的命令序列,并返回到调用的函数或键盘,也用于终止 keyboard 方式。?1 3 0 ? ? ? 【例题 4.1】矩阵 A ? 2 6 2 ,计算矩阵第一列的和,若等于 6 则从矩阵 A 中删 ? ? ?3 6 4? ? ?除该列。 解:在命令窗口或 M 文件中输入: A=[1,3,0;2,6,2;3,6,4]; if sum(A(:,1))==6 A=A(:,2:3) end 则结果显示为:A =3 6 6 0 2 4说明:在编辑器中编写的程序是否能正确运行,这就要进行程序的调试,程序的调试 方法有: (1)直接调试法。检查所调用的函数或命令的拼写是否正确,括号是否配对,各 种流程控制语句是否匹配。 检查所调用的函数或 M 文件是否在当前目录或搜索路径中。2) ( 使用调试器法。在编辑器窗口 Dbug →save and Run 开始运行程序,当出现错误时,运行 自动停止,在命令窗口根据错误信息找到相应的程序位置。也可用鼠标点击命令窗口中出 现的带有下划线的错误信息,光标将自动找到程序中的错误行。 【例题 4.2】对例 4.1 中的 矩阵计算第二行的长度,若大于 20,则从矩阵 A 中删除该行,否则该行全为 1。 解:在命令窗口或 M 文件中输入: A=[1,3,0;2,6,2;3,6,4]; if norm(A(2,:))&=20 A=[A(1,:);A(3,:)] else A=[A(1,:);ones(1,3);A(3,:)] end 则结果显示为:A =1 1 3 1 0 155 364下面看一个复杂一些的编程例题 【例题 4.3】建立命令文件,用色彩与线型区分 100 个数据在-1 与 1 之间点的范围。 题目分析:注意到在同一程序中要作出区分数据点的范围,故可用条件语句实现。 解: (1)在 MATLAB 命令窗口的 File 菜单 → New 菜单项 → M-file 命令。 (2)在编辑器中编写程序 n=100; x=1:n; y=randn(1,n); % 产生 100 个元素服从正态分布的随机行矢量 hold on for i=1:n if y(i)&-1 plot(x(i),y(i),'*g') elseif y(i)&=-1 & y(i)&=1 plot(x(i),y(i),'ob') elseif y(i)&=1 plot(x(i),y(i),'xr') end end hold off (3)在 MATLAB 的编辑器窗口的 File 菜单 → save 菜单项→保存文件名为 “Untitled.m”。 (4) 在命令窗口输入 :Untitled 运行结果如图 4.1 所示。 % 大于 1 的点用红色的 x 标出 % 在-1 与 1 之间的点用兰色的 o 标出 % 小于-1 的点用绿色的*标出56 图 4.1三、练习和思考① 建立一个 M 文件.for i=1:3 for j=5:-1:1 a(i,j) = i+j; end end解释以上程序运行过程,若第 3 句改为 a = i+j;或 a(i) = i+j;结果又如何? ② 编制一个 fu 函数文件,函数关系为 a(m, f ) = f / m,再编制一个 M 文件,求出初 速度为 0 的直线运动,当 t = 2s,4s,9s 时的速度、加速度、路程. ③ 编制一个 ft 函数文件,统计一个字符串中的单词的个数. ④ 编制一个程序,实现公斤、克、盎司、克拉之间的换算(参考下面的长度换算程 序). 已知 1 公斤=1000 克,1 盎司=28.3495 克,1 克拉=0.2 克. 长度单位换算程序 lent.m 如下:clear all disp('长度单位换算程序') disp('长度单位代码是: ');%选择输入输出单位 disp('1.厘米,2.米,3.公里); u= 'n'; while u=='n' iu=input('请选择输入单位代码:'); ou=input('请选择输出单位代码:'); v=input('请输入变换值,v='); tm=[0.01,1.00,.0254]; %变换常数 57 fm=1./%反变换常数vm=v*tm(iu); %把输入值变为以米为单位的值 nv=vm.*fm(ou);%把米值变换为输出为单位的值 disp(['变换后的值是',num2str(nv)]);%输出变换后的值 u=input('是否退出(y/n)', 's'); end %提问是否退出(输入字符串要加’s’)第五章 函数的作图MATLAB 作为一个应用广泛的数学软件, 不单是因为它强大的数值计算功能, 还有一 个很重要的原因就是它良好的图形功能。大家都知道,面对一大堆枯燥的原始数据,人们 很难从中找到它们的规律,而数据图形恰能使视觉感官直接感受到数据的许多内在本质, 发现数据的内在联系。MATLAB 可以表达出数据的二维,三维,甚至四维的图形。通过图 形的线型,立面,色彩,光线,视角等属性的控制,可把数据的内在特征表现得淋漓尽致。实验 5.1 一元函数的作图------二维图形的绘图 5.1.1 实验目的掌握 MATLAB 软件中二维图形的绘图方法。5.1.2 实验背景知识介绍一元函数 y ? f (x) 的图形:如果函数 y ? f (x) 在数集 D 上有定义,在平面直角坐标 系 O-xy 中,凡满足函数 y ? f (x) 的全体点(x,y)构成的平面点集 {(x,y)| y ? f (x) ,x∈D}, 称为函数 y ? f (x) 在 D 上的图像,简称函数 y ? f (x) 的图像. 借助于函数的图像,就能直观地说明函数的一些性质.在解决问题过程中,函数表达 式和函数图像经常结合使用,这样使分析既直观又深入.5.1.3 实验内容matlab 的作图是通过描点、连线来实现的,故在画一个曲线图形之前,必须先取得图 形上一系列的坐标,即横坐标与纵坐标,然后将点的坐标传给作图命令(也称作图函数)58 画图。 1、平面曲线的作图----基本绘图命令 plot (1)plot(Y) 这是 plot 命令中最为简单的形式。当 Y 为向量时,以 Y 的元素为纵坐标,元素相应 的序列号为横坐标绘制出连线。若 Y 为实矩阵,则按照列绘出每列元素和其序列号的对应 关系,曲线数等于矩阵的列数。若 Y 为复矩阵,则按列以每列元素的实部为横坐标以虚部 为纵坐标,绘出曲线。曲线数等于矩阵的列数。 (2)plot(X,Y) 当 X 和 Y 为同维向量时,以 X 为横坐标,Y 为纵坐标绘制曲线;当 X 是向量,Y 是每 行元素数目和 X 维数相等的矩阵时,将绘出以 X 为横坐标,以 Y 中每行元素为纵坐标的多 条曲线,曲线数等于矩阵的行数。 (3)plot(X,Y1, X,Y2, ??,X,Yn) 这个命令能够绘制多条曲线,每条曲线分别以 X,Y 为横纵坐标。各条曲线互不影响。 采用 plot(X,Y1, X,Y2, ??,X,Yn)命令能够绘制多重曲线,而 plot(X,Y)中当 X 是向 量,Y 是矩阵时,也能够绘制多重曲线,事实上,MATLAB 还提供了命令,可以在已经绘好 的图形上加上新的图形。 当图线太多时,我们可以在命令中对线形和颜色进行设定,达到良好的区分效果。 例如 plot(X,Y)命令可以改为 plot(X,Y,S)其中 S 表示线型和颜色。 线型和颜色种类见表 5.1。表 5.1 线型和颜色种类颜色 r(red)红色 g(green)绿色 b(blue)蓝色 y(yellow)黄色 k(black)黑色 w(white)白色 c(cyan)青色 m(magenta)品红 -: -.线型 实线(默认) + 双划线 虚线 点划线 * . o x d s p h标记类型 加号 星号 实点 小圆圈(字母) 交叉号 棱形 正方形 正五角星 正六角星2、函数绘图命令:fplot(‘function’,limits)――在指定的范围 limits=[xmin, xmax]内画 出函数名为 function 的一元函数图形。59 注意 fplot 与 plot 的区别:fplot 的指令可以用来自动的画一个已定义的函数图形,而 无须产生绘图所须要的一组数据作为变数。 fplot 采用自适应步长控制来画出函数 function 的示意图,在函数的变化激烈的区间, 采用小的步长,否则采用大的步长。总之,使计算量与时间最小,图形尽可能精确。 3、符号函数的绘图命令: ezplot (?f(x)?, [xmin,xmax] )――绘出函数 f(x)从 xmin 到 xmax 区间的图形; ezplot (?f(x,y)?, [xmin,xmax,ymin,ymax] )――绘出隐函数 f(x,y)=0 在[xmin,xmax]与 [ymin,ymax]xmin 区间上的图形; ezplot ( ?x(t)?,?y(t)?, [tmin,tmax] )――在区间[tmin,tmax]上绘出参数方程 x= x(t),y=y(t) 的函数图形。 【例题 5.1】分别用不同的作图命令,画出函数 y ? x ? 3x 在[-2,2]上的图形。3解: (1)用 plot 作图命令,程序为: x=-2:0.1:2; y=x.^3-3*x; plot(x,y) grid on axis equal %加网格线 %x,y 轴单位刻度相等运行结果如图 5.1 所示。图 5.1 60 (2)用 fplot 作图命令,程序为: fplot('x^3-3*x',[-2,2]) axis equal grid on 运行结果如图 5.1 所示。 (3)用 ezplot 作图命令,程序为: ezplot('x^3-3*x',[-2,2]) axis equal grid on 运行结果如图 5.1 所示。 说明: (1) 三种方法得到相同的图形, 但不能认为三个命令的功能完全相同。 (2) plot 与 fplot 绘图可对图形的线形、颜色作出控制,ezplot 则不能。Plot 和 fplot 绘图不能 表明 title 和坐标轴,而 ezplot 可以。 【例题 5.2】绘出函数 y ? 题目分析: 函数 y ? 作图命令。 解:选用 fplot 作图命令,程序为: fplot('sin(x)./x',[-20 20 -0.5 1.5]) % 作图并显示 x 轴、y 轴的范围 grid on xlabel('x 轴'); % x 轴注解 ylabel('y 轴'); % y 轴注解 title('y=sinx/x'); % 图形标题 运行结果如图 5.2 所示。 说明:用 fplot 作图命令,可以绘出比较精确的图形,特别对那些变化比较剧烈的函 数。 (2)程序中对函数图形的属性作了一些处理,比如添加数轴名、标题等。 【例题 5.3】 分别绘出参数函数 ? %字符串 'x^3-3*x'表示函数 y ? x ? 3x3sin x , x ? [?20,20] 的函数图像。 xsin x 可考虑选用 fplot , x ? [?20,20] 是由数学表达式表示的函数, x? x ? cos 3t , t ? [0,2? ] 与隐函数 4 x 2 ? 16 y 2 ? 3 图像。 y ? sin 5t ?题目分析:对参数函数与隐函数的作图,可考虑选用 ezplot 作图命令。 解:选用 ezplot 作图命令,程序为:61 subplot(2,1,1);%窗口分割为二行一列,且在第一行显示图形ezplot('cos(3*t)','sin(5*t)',[0,2*pi]) grid on subplot(2,1,2); %在第二行显示图形 ezplot('4*x^2+16*y^2-3',[-1.5,1.5,-1,1]) grid on 运行结果如图 5.3 所示。图 5.2图 5.3说明: (1)图形窗口的分割一般用命令是 subplot(m,n,k) ,表示将窗口分割成 m*n62 块,并在第 k 块中显示当前图形。 (2)对隐函数作图要注意将二元关系式化成 F ( x, y) ? 0 的形式。 (3)ezplot 作图命令一般较适宜画不太精确的图形。 【例题 5.4】为了分析 X 射线的杀菌作用,用 200 千伏的 X 射线来照射细菌,每次照 射 6 分钟,照射次数记为 t,照射后的细菌数 y 如下表所示: t 1 y 352 2 211 3 197 4 160 5 142 6 106 7 104 8 60 9 56 10 38 11 36 12 32 13 21 14 19 15 15试在 O―ty 坐标系中绘出散点图。 题目分析:此题给出的是二维数据,因此选用 plot 作图命令即行了。 解:选用 plot 作图命令,程序为: T=[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]; Y=[ 352, 211, 197, 160, 142, 106, 104, 60, 56, 38, 36, 32, 21, 19, 15]; plot(t,y,'-o') grid on xlabel('次数 t'); ylabel('细菌数 y'); title('原始数据散点'); legend('原始数据') 运行结果如图 5.4 所示。图 5.4说明: (1)plot(t,y,'-o')对图形的线形作了控制,'-o'表示以 O 表示数据点,且点 与点之间用短线连结。 (2)legend('原始数据')是给图形增加标签注解,以便意义更直观明63 确。2.1.4 练习1.分别绘制下列函数图形,并根据图形讨论函数的一些简单几何特性。(1) y ? x 4 ? x 2 ; (3) y ? xe ? (5) y ? x ?(2) y ? ln( x ? x 2 ? 1) (4) y ? x sin (6) y ? x sin 1 x 1 x2.绘制下列参数方程表示的函数图形。? x ? cos3 t ? x ? cos t ? 5 cos 3t (1)? , t ? [0,2? ]; (2)? , t ? [0,2? ]; 3 ? y ? 6 cos t ? 5 sin 3t ? y ? sin t ? x ? sin 3 cos t (3)? , t ? [0, ? ] ? y ? sin 3t sin t3.绘制下列隐函数的图形。(1) x 3 ? y 3 ? 5xy ? 1;(2) y ? 1 ? xe y4.体重约 70kg 的某人在短时间内喝下 2 瓶啤酒后,隔一定时间测量他的血液中酒精 含量(毫克/百毫升),得到数据如下: 时间 t(小时) 0.25 0.5 0.75 1 酒精含量 y 30 68 7 35 75 8 28 82 9 25 1.5 2 82 10 18 77 11 15 2.5 3 68 12 12 68 13 10 3.5 4 58 14 7 51 15 7 4.5 5 50 16 4 41时间 t(小时) 6 酒精含量 y 38试在 O―ty 坐标系中绘出散点图。 5. 海水温度随着深度的变化而变化,海面温度较高,随着深度的增加温度越来越低, 这样也就影响了海水的对流和混合,使得深层海水中的氧气越来越少,这是潜水员必须考 虑的问题,同时根据这一规律也可对海水鱼层作一个划分.现在通过实验测得一组海水深 度 h 与温度 t 的数据如下: t h 规律。6423.5 022.9 1.520.1 2.519.1 4.615.4 8.211.5 12.59.5 16.58.2 26.5试在 O―th 坐标系中绘出散点图,并根据散点图说说海水深度 h 与温度 t 之间的变化 实验 5.2 二元函数的作图------三维图形的绘图 5.2.1 实验目的学会 MATLAB 软件中三维图形、曲面图形、等高线图、误差曲面图的绘图方法。5.2.2 实验背景知识介绍三维图形包括空间曲面、空间曲线、等高线图等图形。 空间曲面: 如果二元函数 z=f(x, y)在平面数集 D 上有定义, 在空间直角坐标系 O-xyz 中,凡满足函数 z=f(x,y)的全体点(x,y,z)构成的空间点集 {(x,y,z)|z=f(x,y),(x,y)∈D}, 称为函数 z=f(x,y)在 D 上的图像. 函数 z=f(x,y)的图像一般是一张空间曲面. 空间曲线:一般说来,参数方程组? x ? x (t ); ? ? y ? y (t );t ? T ? R ? z ? z (t ). ?的图像是空间一条曲线。 等高线图:如果二元函数 z=f(x,y)在平面数集 D 上有定义,空间曲线? z ? c (常数) ? ? f ( x, y ) ? z称为函数 z=f(x,y)的等高线。5.2.3 实验内容1.空间曲线的作图 绘制空间曲线命令:plot3(x,y,z,S)――x,y,z 是 n 维向量,分别表示曲线上点集的 横坐标、纵坐标、与竖坐标;S 是可选的字符串,用来指定颜色、标记符号和/或线形。? x ? ? 【例题 5.5】画出参数曲线 ? y ?t ? [0,10? ] 的图形。 ? z ? t. ?题目分析: 由于参数方程表示的是空间曲线, 所以可用 plot3 命令画出图形, 根据 plot3 命令格式要求,先产生参数 t 向量,再生成向量 X、Y、Z。65 解:用 plot3 作图命令,程序为: t=0:pi/50:10* plot3(sin(t),cos(t),t) title( ‘螺旋线‘ ),xlabel( ‘ sint(t) ‘ ),ylabel( ‘ cos(t) ‘ ),zlabel( ‘ t ‘ ); text(0,0,0, ‘原点‘ ) grid on 运行结果如图 5.5 所示。 %在坐标原点(0,0,0)处注解图 5.5说明: (1)从例中可明显看出,二维图形的所有基本特性在三维中仍都存在,如坐标 网格、标题等。 (2)plot3(X,Y1,S1, X,Y2,S2, ??,X,Yn,Sn)命令可将多条曲线画在一起。 【例题 5.6】 设曲面 z ? x ? y ,画出与平面 x ? 0,?0.5,?1,?1.5 相交的多条曲线。2 2题目分析:显然平面 x ? 0,?0.5,?1,?1.5 与 x 轴的交点坐标构成向量 x= (-1.5, -1.0 , -0.5, 0, 0.5, 1.0, 1.5) ,由命令 meshgrid 的用法可知,可以用该命令生成二元函数 z = f(x,y) 中 x-y 平面上的矩形定义域中数据点矩阵 X 和 Y。 解:选用 plot3 作图命令,程序为: clear x=-1.5:0.5:1.5;66 y=-2:0.5:2; [X,Y]=meshgrid(x,y); %生成数据点矩阵 X 和 Y Z=X.^2+Y.^2; plot3(X,Y,Z) title( ‘截痕线‘ ),xlabel( ‘ x ‘ ),ylabel( ‘ y ‘ ),zlabel( ‘ z ‘ ) grid on 运行结果如图 5.6 所示。图 5.6说明:从图形容易看出这些曲线是抛物线。 2.空间曲面的作图 (1)绘制空间曲面命令:surf(x,y,z) ――x,y,z 是 n 维向量,分别表示曲线上点集的 横坐标、纵坐标与竖坐标。 (2)绘制空间网格曲面命令:mesh(x,y,z) ――x,y,z 是 n 维向量,分别表示曲线上点 集的横坐标、纵坐标、与竖坐标。 【例题 5.7】 绘出旋转抛物面 z ? x ? y 的图形。2 2解法 1:选用 surf 作图命令,程序为: x=-2:0.05:2;67 y=-2:0.05:2; [X,Y]=meshgrid(x,y); %生成数据点矩阵 X 和 Y Z=X.^2+Y.^2; surf(X,Y,Z) grid on shading flat %将当前的图形变平滑运行结果如图 5.7 所示。图 5.7解法 2:选用 mesh 作图命令,程序为: x=-2:0.1:2;y=-2:0.1:2; [X,Y]=meshgrid(x,y); Z=X.^2+Y.^2; mesh(X,Y,Z) 运行结果如图 5.8 所示。 说明: (1)由于作图范围 {( x, y) | ?2 ? x ? 2,?2 ? y ? 2} 是平面上的矩形区域,因此 画出的图形位于长方体区域 {( x, y, z ) | ?2 ? x ? 2,?2 ? y ? 2, ? 8 ? z ? 8} 内。 (2)程序 中对函数图形的属性作了一些处理,比如使当前的图形变平滑等。 利用在 x-y 平面的矩形网格点上的 z 轴坐标值,MATLAB 定义了一个网格曲面。 MATLAB 通过将邻接的点用直线连接起来形成网状曲面, 其结果好象在数据点有结点的鱼 网。68 图 5.83、曲面的等高线图 等高线命令:contour(z)――把矩阵 z 中的值作为一个二元函数的值,等高曲线是一个 平面的曲线,平面的高度 v 是 Matlab 自动取的; [C,h]=contour(x,y,z, n)――(x,y)是平面 z=0 上点的坐标矩阵, 为相应点的高度值矩阵, z 有 n 条等高线。 【例题 5.8】在范围 ? 2 ? x ? 2,?2 ? y ? 3 内,绘出曲面 z 题目分析:由题目的要求,选用 contour 作图命令。 解:程序为: x=-2:0.2:2; y=-2:0.2:3; [X,Y]=meshgrid(x,y); Z=X.*exp(-X.^2-Y.^2); [C,h]=contour(X,Y,Z); clabel(C,h); %给等值线图标上高度值(见图 5.9)? xe? x2? y2的等值线。colormap cool; %图形窗口的色图 figure(2); subplot(2,1,1);69%新建图形窗口(2) ,以显示下面的所作图形。 mesh(X,Y,Z); subplot(2,1,2); surf(X,Y,Z); shading flat% 画出立体网状图% 画出立体曲面图运行结果如图 5.9、5.10 所示。图 5.9图 5.10说明: 函数 clabel 给等值线图标上高度值。 不过这样做时, 函数 clabel 需要函数 contou70 等值线矩阵的输出。 在三维作图常用到命令:meshgrid――生成二元函数 z = f(x,y)中 x-y 平面上的矩形定 义域中数据点矩阵 X 和 Y,或者是三元函数 u = f (x,y,z)中立方体定义域中的数据点矩阵 X,Y 和 Z。 [X,Y] = meshgrid(x,y) ――输入向量 x 为 x-y 平面上矩形定义域的矩形分割线在 x 轴 的值,向量 y 为 x-y 平面上矩形定义域的矩形分割线在 y 轴的值。输出向量 X 为 x-y 平面 上矩形定义域的矩形分割点的横坐标值矩阵,输出向量 Y 为 x-y 平面上矩形定义域的矩形 分割点的纵坐标值矩阵。 [X,Y,Z] = meshgrid(x,y,z)――输入向量 x 为立方体定义域的立方体分割平面在 x 轴上 的值,输入向量 y 为立方体定义域的立方体分割平面在 y 轴上的值,输入向量 z 为立方体 定义域的立方体分割平面在 z 轴上的值。 输出向量 X 为立方体定义域中分割点的 x 轴坐标 值,Y 为立方体定义域中分割点的 y 轴坐标值,Z 为立方体定义域中分割点的 z 轴坐标值。4、建模问题的作图【例题 5.9】 (1994 年全国大学生数学建模竞赛 A 题)要在一山区修建公路,首先测得 一些地点的高程,数据见表 5.2(平面区域 0≤x≤5600,0≤y≤4800;表中数据为坐标点的高 程,单位:米;y 轴正向为北)。表 5.200 00 00
0 y/x 80 50 910 880 830 740 650 510 370 0 10 90 0 880 760 620 470 400 30 70 80
550 800 50 00 20
600 40 50 00 20 850 670 0 00 00 50 870 690 0 50 00 20 850 670 0 00 0 0 780 620
00 00 700 900 800 720 580
940 80 0 500 700 650 450
780 980 10 950 850 700 300 500 400
870 840 780 500 200 300
460 750 00 900 380 750 550 300 100
370 550 50 930 780 650 480 350 150
350 500 00 950 750 550 350 320 250 5600}

我要回帖

更多关于 一支笔多重 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信