练习3 MATLAB程序设计

更新时间:2024-05-03 21:14:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

MATLAB语言上机练习 上机者班级学号: 上级者姓名:

练习4 MATLAB程序设计

一、目的和要求

(1)掌握MAM的程序流程控制结构。 (2)掌握M文件的结构。 (3)掌握函数调用和参数传递。 (4)了解程序性能剖析窗口。

(5)掌握利用函数句柄进行数值分析。 二、内容和步骤

MATLAB的语法规则简洁,编程效率高,作为一个完整的程序语言,MATLAB也有其各种程序流程控制、文件格式和函数调用的规则,通过函数的调用就能够组成庞大的程序,完成复杂的功能。 1.使用程序流程控制

Fibonacci数列的各元素为:1,1,2,3,5,8,?,满足以下关系:

F1?1F2?1Fn?Fn?1?Fn?2

用M函数文件实现,数列的元素个数为输入变量。

(l)按M函数文件格式创建文件开头。 function f=shiyan0501(n) %SHIYAN0501 Fibonacci % Fibonacci 数列 % n 元素个数

% f 构成Fibonacci 数列向量 (2)用While循环实现程序功能。

f(1)=1;f(2)=1;i=2; while i<=n end

在命令窗口输入调用命令调用函数,元素个数n=10, 结果:(

(3)使用for循环实现,重新编制上述函数。 结果:(

15

f(i+1)=f(i-1)+f(i); i =i+1;

MATLAB语言上机练习 上机者班级学号: 上级者姓名:

(4)当Fibonacci 数列中某个元素大于50时,用“break”命令退出循环结构,修改程序如下: 结果:(

(5)将该.m文件生成P码文件: >>pcode shiyan0501

将 shiyan0501.m删除,重新调用函数文件,执行结果如下: 结果:(

2.使用函数调用

计算

arcsinx?x?2x24?3?4?3?2?x16?4?55???(2n)!x22n22n?1(n!)(2n?1),其中x?1。

x为输人参数,当x不满足条件时就不计算,并显示提示;当x2n?1前的系数<0.00001时,则循环结束。

使用主函数和子函数调用来实现各项系数的运算,主函数计算各项和;子函数cal计算系数

(2n)!22n12(n!)(2n?1);子函数 factorial求阶乘n!。主函数调用子函数cal,子函数cal再调用子函数

factorial,本程序是函数的嵌套调用。

(1)子函数 factorial计算n!,输入参数为 n,使用 for循环实现阶乘,输出参数为阶乘。 (2)子函数cal计算系数function f=cal(n)

f=factorial(2*n)/(2^(2*n)*(factorial(n))^2*(2*n+1)); 本函数中调用了求阶乘的子函数factorial。 练习:用for、while分别编写factorial子函数。 结果:(

16

(2n)!22n12(n!)(2n?1),输入参数是n,输出参数是计算结果。

MATLAB语言上机练习 上机者班级学号: 上级者姓名:

(3)主函数shiyan0502。主函数计算arcsin x,输入参数是x,输出参数是计算结果。 Function y=shiyan0502(n) % shiyan0502 arcsin x n=1; if abs(x)<1

y=x;

while cal(n)>0.00001 end

y=y+cal(n)*x^(2*n+1); n=n+1;

else end

当输入参数不满足条件时,退出程序。 结果:(

(4)程序的调试。当有多个函数调用时,由于函数变量的工作空间是独立的,被调用的函数执行结束后变量就消失,因此调试时要使用MATLAB调试器来查看运行过程中的变量值。

①设置断点。在需要查看程序的地方设置断点,使用选单“Breakpoints”→“Set/Clear Breakpoints”,或单击F12快捷键,或者单击工具栏的按钮实现,则在设置断点的程序行前出现大红圆点;然后选择“Run”选单,程序就会执行到设置断点的位置,暂住执行;这时将光标移到需要查看的变量上停留片刻,就可以看到该变量的当前值。在MATLAB命令窗口中显示提示符“k >>”,可以输入命令查看或修改变量。

②单步运行。调试中的单步运行很有用,当需要查看像循环过程中变量的变化时,可以使用单步运行来实现。单步运行使用选单“Debug”→“Step”,或单台F10快捷键,或者单击工具栏的按钮实现;

17

disp(‘输入出错’) y=0; return

MATLAB语言上机练习 上机者班级学号: 上级者姓名:

如果需要单步进入子函数,则可以使用“Step In”命令,或单击Fll快捷键,或单击工具栏的按钮。例如主函数shiyan0502可以单步运行,进入子函数cal。同样,在单步运行程序暂停时,将光标移到需要查看的变量上停留片刻,就可以看到该变量的当前值。 (5)使用函数句柄。在命令窗口使用函数句柄来调用函数: >>h_shiyan0502=@shiyan0502 >>y=feval(@shiyan0502,0.5) 结果:(

3.利用泛函命令实现数值分析 已知f(t)?(sin2t)eat?bt,a?0.1,b?0.5,利用范函命令求其过零点和极小值。(1) 创建函数shiyan0503实现上述表达式关系。

function y=shiyan0503(t)

% shiyan0503 y=(sin(t)).^2.*exp(a*t)-b*abs(t) a=0.1;b=0.5;

y=(sin(t)).^2.*exp(a*t)-b*abs(t); (2) 查看该函数的输出波形。

>>x=-10:0.1:10; 图形:( >>plot(x, shiyan0503(x)) >>set(gca,’ygrid’,’on’) (3) 利用函数名求过零点。

>>x1=fzero(‘shiyan0503’,0.5) %求在0.5附近处的过零点 结果:( )

>>x2=fzero(‘shiyan0503’,-0.5) %求在-0.5附近处的过零点 结果:( ) (4) 利用函数句柄求过零点。

>>x1=fzero(@shiyan0503,0.5)

结果:( )

>>x2=fzero(@shiyan0503,-0.5)

结果:( ) (5) 利用函数句柄求极小值。

>>x1=fminbnd(@shiyan0503,0.1,0.7) %求在0.1~0.7间的极小值 结果:( )

>>x2=fminbnd(@shiyan0503,2,5) %求在2~5间的极小值 结果:( )

18

本文来源:https://www.bwwdw.com/article/vnig.html

Top