matlab实验报告Word下载.docx

上传人:b****0 文档编号:13241433 上传时间:2022-10-08 格式:DOCX 页数:19 大小:132.26KB
下载 相关 举报
matlab实验报告Word下载.docx_第1页
第1页 / 共19页
matlab实验报告Word下载.docx_第2页
第2页 / 共19页
matlab实验报告Word下载.docx_第3页
第3页 / 共19页
matlab实验报告Word下载.docx_第4页
第4页 / 共19页
matlab实验报告Word下载.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

matlab实验报告Word下载.docx

《matlab实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《matlab实验报告Word下载.docx(19页珍藏版)》请在冰豆网上搜索。

matlab实验报告Word下载.docx

1.使用程序流程控制

Fibonacci数列的各元素为:

1、1、2、3、5、8、...满足一下关系

F1=1F2=1Fn=Fn-1+Fn-2

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

(1)按M函数文件格式创立文件开头。

functionf=shiyan0501(n)

%SHIYAN0501

%Fibonacci数列

%n元素个数

%f构成Fibonacci数列向量

%

%copyright2015-11-25

(2)用while循环实现程序功能

f

(1)=1;

f

(2)=1;

i=2;

whilei<

=n

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

i=i+1;

End

运行后,输入参数10,运行结果如下所示:

(3)使用for循环实验

fori=2:

n

end

运行结果如下所示:

(4)当某个元素大于50时,退出循环构造,程序修改如下:

iff(i)>

10

break

else

当某个元素大于50,程序便退出循环构造

当n=10,最后一个元素刚好是大于50的,正好退出循环构造

当n=12时,第十个元素对应的f(i)大于50,于是退出循环构造,不再运行f(11),f(12)了。

(5)将该.m文件生成P码文件

>

pcodeshiyan0501

将shiyan0501.m删除,重新运行该文件夹,结果如下所示:

练习:

将该M文件函数改为M脚本文件,将数列元素个数通过键盘输入,程序应该如何修改?

①将M文件函数另存为M脚本文件;

②在函数前加

n=input('

pleaseinputanum:

'

便可通过键盘键入文件

12

n=

12

ans=

1123581321345589

2.使用函数调用

计算arcsin(x),

(1)子函数factorial计算n!

子函数factorial计算n!

输入参数为n,使用for循环实现的阶乘,输出参数为阶乘。

在matlab界面中选择“file->

new->

function〞命令,创立一个新的函数文件,修改输入输出参数和函数名。

functionf=factorial(n)%[output_args]=Untitled7(input_args)

%UNTITLED7此处显示有关此函数的摘要

%此处显示详细说明

f=1;

form=1:

f=m*f;

(2)子函数cal.子函数cal是计算系数

functionk=cal(n1)

%计算系数

n1

k=factorial(2*n1)/(2^(2*n1)*(factorial(n1))^2*(2*n1+1));

输入参数n=5

运行结果如下列图所示:

cal(5)

0.0224

本函数中调用了求阶乘的子函数factorial

(3)主程序shiyan0502.求主函数计算arcsinx,输入参数为x,输出参数为arcsinx的计算结果。

程序如下所示:

functiony=shiyan0502(x)

%shiyan0502arcsinx

n=1;

ifabs(x)<

1

y=x;

whilecal(n)>

0.0001

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

n=n+1;

disp('

输入错误'

);

y=0;

return

运行结果:

y=shiyan0502(0.7)

y=

0.7754

当输入参数不满足条件是退出程序:

y1=shiyan0502

(2)

输入错误

y1=

0

如果不使用子函数factorial,而直接在cal函数中计算阶乘,应如何修改程序。

修改cal函数如下所示:

f1=1;

2*n1

f1=m*f1;

f=m*f;

k=f1/(2^(2*n1)*f^2*(2*n1+1));

调用程序shiyan0502,运行结果如下所示:

运行结果与使用子函数factorial的运行结果一致。

(4)使用程序性能剖析。

选择菜单‘view’->

‘profile’命令;

或使用在命令窗口输入‘profileviewer’命令都可以翻开程序性能剖析窗口。

在程序性能剖析窗口的‘命令输入栏’中输入需要剖析的命令,‘y=shiyan0502(0.7)’,然后单击‘startprofiling’按钮,

查看剖析报告。

(5)程序的调试。

当有多个函数调用时,由于函数变量的工作空间是独立的,被调用的函数执行完毕后变量消失,因此调试时要使用matlab调试器查看运行过程中的变量值。

①设置断点。

在需要查看的程序的地方设置断点,

shiyan0502(0.7)

K>

y

0.7000

x=0.5

x=

0.5000

在K>

输入x=0.5即可将x的值从0.7修改为0.5.

去除断点,查看结果:

0.7236

结果与x值为0.7时不一致,当x=0.7时,y=0.7754,由此可知,x的值已被修改。

②单步运行

9n=n+1;

按单步运行键:

可看到箭头不断的移动:

〔6〕使用函数句柄。

在命令窗口使用函数句柄调用函数。

h_shiyan0502=shiyan0502

h_shiyan0502=

shiyan0502

y=feval(h_shiyan0502,0.5)

0.5236

(7)使用全局变量。

Matlabe的编程不提倡使用全局变量,本例中的程序主要是为了查看全局变量的概念。

将n作为全局变量,子函数factorial不修改,子函数cal程序和主函数shiyan0502修改如下:

globaln;

globaln

k=factorial(2*n)/(2^(2*n)*(factorial(n))^2*(2*2*n+1));

global为设置的全局变量,子函数没有输入变量,而用全局变量n传递。

在全局变量前设置断点,然后运行程序,当程序运行到断点处停顿,接着不断使用单步运行调试,结果如下所示:

|

使用单步运行调试,查看全局变量n的变化,并在工作空间查看n;

3、利用泛函命令实现数值分析

①创立函数shiyan0503实现上述表达式关系。

functiony=shiyan0503(t)

%shiyan0503y=(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);

②查看该函数的输出波形,如下列图所示:

③利用函数名求零点,在上图中可以看相互在0的附近有2个过零点

x1=fzero('

shiyan0503'

0.5)

x2=fzero('

-0.5)

shiyan0503_1

x1=

0.5198

x2=

-0.5993

④利用函数句柄求过零点

x1=fzero(shiyan0503,0.5)

x2=fzero(shiyan0503,-0.5)

⑤利用函数句柄求极小值,由②图可知,极小值有多个,查看其中2个

x1=fminbnd(shiyan0503,0.1,0.7)

0.2511

x2=fminbnd(shiyan0503,2,5)

3.3233

利用函数句柄求[-1,1]的面积。

x=-1:

0.1:

1;

y=shiyan0503(x);

area=trapz(x,y)%用梯形计算积分

area=

0.0485

area1=quad(shiyan0503,-1,1)%用quad计算积分

area1=

0.0469

(2)使用内联函数

①创立内联函数f

a=0.1;

b=0.5;

f=inline('

(sin(t)).^2.*exp(.1*t)-0.5*abs(t)'

'

t'

f=

内联函数:

f(t)=(sin(t)).^2.*exp(.1*t)-0.5*abs(t)

②绘制曲线图

t=-10:

10;

y=feval(f,t);

plot(t,y)

③求过零点

x1=fzero(f,0.5)

0.5198

④求极小值

x2=fminbnd(f,0.1,0.7)

0.2511

利用内联函数求8附近的极小值

x=fminbnd(f,7.9,8.1)

8.0999

x2=fminbnd(f,7.99,8.01)

8.0099

(3)使用字符串

①创立字符串

g='

(sin(x)).^2.*exp(.1*x)-.5*abs(x)'

g=

(sin(x)).^2.*exp(.1*x)-.5*abs(x)

x=-10:

y=eval(g,x);

plot(x,y)

运行程序得到下列图:

③求零点

x1=fzero(g,0.5)

自我练习:

(1)编写函数计算输入参数r为圆半径的圆面积和周长。

g='

pi*r^2'

k='

2*pi*r'

r=input('

请输入圆的半径r:

disp('

圆的面积:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1