ch4 MATLAB程序设计2010.ppt

  1. 1、本文档共55页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3.1 M文件 3.2 数据的输入输出 3.3 选择结构 3.4 循环结构 3.5 函数文件 3.6 主函数与子函数 3.7 全局变量和局部变量 例3.1 计算半径为r 10圆的面积与周长,然后运行该命令文件。 首先建立命令文件并以文件名cmz.m存盘: clear; r 10; A ‘pi*r*r’; B ‘2*pi*r’; area eval A cl eval B 然后在MATLAB的命令窗口中输入cmz,将会执行该命令文件。 例3.2 计算半径为r 10圆的面积与周长,然后在命令窗口调用该函数文件。 首先建立函数文件fcmz.m: function [a,l] fcmz r a pi*r.*r; l 2*pi*r; 然后在MATLAB的命令窗口调用该函数文件: clear; r 1:10; [A,R] fcmz r 3.2 数据的输入输出 a input a ? ; b input b ? ; c input c ? ; d b*b-4*a*c; x [ -b+sqrt d / 2*a ,... -b-sqrt d / 2*a ]; fprintf x1 %f\nx2 %f\n,x 1 ,x 2 2.双分支if语句 语句格式为: if 条件 语句组1 else 语句组2 end 当条件成立时,执行语句组1,否则执行语句组2,语句组1或语句组2执行后,再执行if语句的后继语句。 例3.7 矩阵乘法运算要求两矩阵的维数相容,否则会出错。先求两矩阵的乘积,若出错,则自动转去求两矩阵的点乘。 程序如下: 例3.9 求定积分。 程序如下: a 0;b 3*pi;n 1000; h b-a /n; x a:h:b;   f exp -0.5*x .*sin x+pi/6 ; for i 1:n s i f i +f i+1 *h/2; end s sum s 事实上,MATLAB提供了有关数值积分的标准函数,实际应用中可直接调用这些函数求数值积分。 与循环结构相关的还有一个break语句,当在循环体内执行到该语句时,程序将跳出循环。该语句一般与if语句配合使用。 例3.13 用while语句实现例3.8 程序如下: y 0; i 1; while 1 f 1/i/i; y y+f; if i 100 break; end i i+1; end y 3.4.3 循环的嵌套 如果一个循环结构的循环体又包括一个循环结构,就称为循环的嵌套,或称为多重循环结构。可以按照嵌套层数,分别叫做二重循环、三重循环等。处于内部的循环叫作内循环,处于外部的循环叫作外循环。 在设计多重循环时,要特别注意内、外循环之间的关系,以及各语句放置的位置,不要搞错。 h zeros 6 ; for i 1:6 for j 1:6 h i,j 1/ i+j-1 ; end end 例3.15:生成6?6阶Hilbert矩阵 例3.16 用筛选法求某自然数范围内的全部素数。 程序如下: m input m ; p 2:m; for i 2:sqrt m n find rem p,i 0p~ i ; p n []; end p for m 1:500 s 0; for k 1:m/2 if rem m,k 0 s s+k; end end if m s disp m ; end end 例3-17 若一个数等于它的各个真因子之和,则称该数为完数,如6 1+2+3,所以6是完数。求[1,500]之间的全部完数 3.4.4 break语句和continue语句 与循环结构相关的语句还有break语句和continue语句。它们一般与if语句配合使用。 continue语句控制跳过循环体中的某些语句。当在循环体内执行到该语句时,程序将跳过循环体中所有剩下的语句,继续下一次循环。 break语句用于终止循环的执行。当在循环体内执行到该语句时,程序将跳出循环,继续执行循环语句的下一语句。 for i 1:1000 if prod 1:i 1e100 fprintf %g! %e 1e100\n,i,prod 1:i ; break; % 跳出 for 循环 end end 例3.17:找出滿足 n! 10100最小的n值。 break的例子 x [1 -2 3 -4 5]; posTotal 0; for i 1:length x if x i 0,continue;end % 若x i 小于零,跳到此循环的下一轮 posTotal posTotal+x i ; end posTotal % 显示p

文档评论(0)

考试教学资料 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档