matlab实验报告.docx
- 文档编号:28696050
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:33
- 大小:166.87KB
matlab实验报告.docx
《matlab实验报告.docx》由会员分享,可在线阅读,更多相关《matlab实验报告.docx(33页珍藏版)》请在冰豆网上搜索。
matlab实验报告
matlab实验报告
实验报告
2.TheBranchingstatements一、实验目的:
1.Tograsptheuseofthebranchingstatements;
-downprogramdesigntechnique.2.Tograspthetop
二、实验内容及要求:
1(实验内容:
1).编写MATLAB语句计算y(t)的值
(WritetheMATLABprogramrequiredtocalculatey(t)fromthe
equation)
2,,3,5,0tt(),yt,23t,5t,0,
已知t从-5到5每隔0.5取一次值。
运用循环和选择语句进行计算。
(forvaluesoftbetween-5and5instepsof0.5.Useloopsand
branchestoperformthiscalculation.)
2).用向量算法解决练习1,比较这两个方案的耗时。
(tic,toc的命令可以帮助你完成的时间计算,请使用'help'函数)。
Rewritetheprogram1usingvectorizationandcomparetheconsuming
timeofthesetwoprograms.
(tic,toccommandscanhelpyoutofinishthetimecalculation,please
usethe„help?
function).
2.实验要求:
在报告中要体现top-downdesigntechnique,对于3要写出完整的设计过程。
三、设计思路:
1(用循环和选择语句进行计算:
1).定义自变量t:
t=-5:
0.5:
5;
2).用循环语句实现对自变量的遍历。
3).用选择语句实现对自变量的判断,选择。
4).将选择语句置入循环语句中,则实现在遍历中对数据的选择,从而实现程序的功能。
2.用向量法实现:
1).定义自变量t:
t=-5:
0.5:
5;
2).用b=t>=0语句,将t>=0得数据选择出,再通过向量运算y(b)=-3*t(b).^2+5;得出结果。
3).用取反运算,选择出剩下的数据,在进行向量运算,得出结果。
四、实验程序和结果
1.实验程序
实验程序:
创建m文件:
y_t.m
1
%Scriptfile:
y_t.m
%
%Purpose:
%calculatey(t)fromtheequation
%_
%|-3t^2+5x>=0
%y(t)=|
%|3t^2+5x<0
%|_
%
%forvaluesoftbetween-5and5instepsof0.5.Useloopsand
branches%to
%performthiscalculation.
%
%
%Recordofrevisions:
%DateProgrammerDescriptionofchange%======================================%10/09/10MaQichongOriginalcode%
clear
%clc
tic;%Startastopwatchtimer.t=-5:
0.5:
5;
forii=1:
size(t,2)%SIZE(X,1)returnsthenumber
%ofrows;SIZE(X,2)returnsthenumberof
columns.
if(t(ii)<0)
y(ii)=3*t(ii)^2+5;
else
y(ii)=-3*t(ii)^2+5;
end
end
figure
(1);
plot(t,y);
title('Plotofy(t)anditsderivative----
(1)');xlabel('x');
ylabel('y');
gridon;
toc;%Readthestopwatchtimer,
%printsthenumberofsecondsrequiredfortheoperation.
clear
%clc
2
tic;
t=[-5:
0.5:
5];
b=t>=0;
y(b)=-3*t(b).^2+5;
%b=t<0;
y(~b)=3*t(~b).^2+5;
figure
(2);
plot(t,y);
title('Plotofy(t)anditsderivative----
(2)');
xlabel('x');
ylabel('y');
gridon;
toc;
2.实验结果:
>>clear
>>y_t
Elapsedtimeis0.998095seconds.
Elapsedtimeis0.338708seconds.
>>
3
五、实验总结:
本次实验主要练习了:
循环、分支语句的使用和自上而下的程序设计技术。
其中,循环、分支语句语句的作用是允许我们来控制语句的执行顺序:
选择结构,用选择执行特定的语句;循环结构,用于重复执行特定部分的代码。
选择结构的其本类型是if结构。
这个结构非常的灵活。
如果这个结构需要的话,它可以跟任意多个elseif语句,if结构可以进行嵌套组成更复杂的结构。
第二种选择结构是switch结构,它提供多项选择。
第三种选择结构是try/catch结构。
它用于跳过错误以保证程序的继续进行。
循环结构有两种基本形式:
while循环和for循环。
两者之间的最大不同在于代码的重复是如何控制的。
在while循环中,代码的重复的次数是不能确定的,只要满足用户定义的条件,重复就进行下去。
相对地,在for循环中,代码的重复次数是确定的,在循环开始之前,我们就知道代码重复的次数了。
自上而下的编程方法是我们正规编程设计的基础。
你真正解决一个问题时,把这个问题分解成许多小的问题,更加易于管理的小块,然后逐一解决某一个小块,最后完成问题的解决。
步骤如下:
1.清晰地陈述你所要解决的问题
2.定义程序所需的输入量和程序所产生的输出量
3.设计你的程序得以实现的算法
4.把算法转化为代码
5检测产生的MATLAB程序
4
实验报告
3.Loopsconstructs一、实验目的:
1.TograsptheuseoftheLoopsconstructs;
2.Tograspthetop-downprogramdesigntechnique.
二、实验内容:
1.Writeaprogramcalculatethesumofoddnumberswithinagiven
number.
2.FibnacciNumbers.ThenthFibnaccinumberisdefinedbythe
followingrecursiveequations:
f
(1),1
f
(2),2
f(3),f(n,1),f(n,2)
…
WriteanM-filetocalculateandwriteoutthenthFibnaccinumber
forn>2,wherenisinputbytheuser.Useawhilelooptoperform
thecalculation.
三、设计思路:
1.实验一:
编写一个程序计算出在给定数量的奇数之和。
1).用mod(x,2)判断用户输入的是奇数还偶数,mod(x,2)表示,x除以2的余数。
2).当mod(x,2)~=0时,表示该数是奇数,相加。
3).当mod(x,2)==0时,表示该数是偶数,应舍弃。
2.实验二:
计算斐波那契数列的第n个斐波那契数
1)根据Fibnacci数列的定义,该数列可以分成3种情况,应用分支语句,根据情况作出选择。
2)根据Fibnacci数列的定义,当n>3时,f(n)=f(n-1)+f(n-2)是一个递归调用,可以用递归调用实现。
四、实验程序和结果
1.实验一:
编写一个程序计算出在给定数量的奇数之和。
实验程序:
创建m文件:
odd.m
%函数功能:
计算用户输入奇数的和
%作者:
马启冲
%文件名:
odd.m
%时间:
2010/9/12
disp('函数功能:
计算用户输入奇数的和');
sum=0;
x=input('请输入一个奇数(输入0表示输入结束)');
5
whilex~=0
ifmod(x,2)~=0%取余,是奇数,则相加
sum=sum+x;
end
ifmod(x,2)==0%排除偶数
disp('该数不是奇数');
end
x=input('请输入一个奇数(输入0表示输入结束)');
end
fprintf('所有奇数的和为%f',sum);
实验结果:
>>clear
>>odd
函数功能:
计算用户输入奇数的和
请输入一个奇数(输入0表示输入结束)1请输入一个奇数(输入0表示输入结束)3请输入一个奇数(输入0表示输入结束)5请输入一个奇数(输入0表示输入结束)7请输入一个奇数(输入0表示输入结束)9请输入一个奇数(输入0表示输入结束)4该数不是奇数
请输入一个奇数(输入0表示输入结束)6该数不是奇数
请输入一个奇数(输入0表示输入结束)0所有奇数的和为25.000000>>
2.实验二:
计算斐波那契数列的第n个斐波那契数
方法一:
实验程序:
创建m文件:
Fib.m
%函数功能:
计算斐波那契数列的第n个斐波那契数
%作者:
马启冲
%文件名:
Fib.m
%时间:
2010/9/12
%含有n个数的斐波那契数列的定义如下:
%f
(1)=1
%f
(2)=2
%f(n)=f(n-1)+f(n-2)
functiony=Fib(n);
6
switch(n)
case{1},
y=1;
case{2},
y=2;
otherwise,
y=Fib(n-1)+Fib(n-2);end
实验结果:
>>clear
>>Fib(5)
ans=
8
>>
方法二:
实验程序:
创建m文件:
Fib2.m
functiony=Fib2(n);a
(1)=1;a
(2)=1;i=2;whilei<=n
a(i+1)=a(i-1)+a(i);
i=i+1;
end;
y=a(i);
实验结果:
>>Fib2(5)
ans=
8
>>
五、实验总结:
程序设计的基本步骤如下:
1.清晰地陈述出你要解决的问题。
2.确定程序所需地输入量和程序所产生的输出量。
3.为你的程序设计算法
7
4.将算法转化为MATLAB语句
5.调试MATLAB程序
以实验二为例:
1.问题:
写一个M文件计算并写出第nFibnacci,对n>2,其中n是由用户输
入的号码。
使用while循环来执行计算。
2.程序所需地输入量:
n是由用户输入的号码;
程序所产生的输出量:
第nFibnacci。
3.算法:
1)根据Fibnacci数列的定义,该数列可以分成3种情况,应用分支语句,根
据情况作出选择。
2)根据Fibnacci数列的定义,当n>3时,f(n)=f(n-1)+f(n-2)是一个递归
调用,可以用递归调用实现。
4.将算法转化为MATLAB语句为:
functiony=Fib2(n);
a
(1)=1;a
(2)=1;i=2;
whilei<=n
a(i+1)=a(i-1)+a(i);
i=i+1;
end;
y=a(i);
5.调试MATLAB程序。
通过程序运行的结果和计算的结果的比较,判断程序是否正确。
实验报告
8
4.Theuser-definedfunctions
一、实验目的:
(1)Tograspthefunctionfileconstructs.
(2)Tograspthepass-by-valuescheme.
(3)Tograsptheschemeofthevaryingnumbersofinputandoutputarguments.
二、实验内容:
(1)WritethreeMATLABfunctionstocalculatethehyperbolicsine,cosine,andtangentfunctions.
x,xx,xx,xe,ee,ee,esinh()cosh()tanh(x),x,,x,,x,x22e,e
Useyourfunctionstoplottheshapesine,cosine,andtangentfunctions.
(2)Minimaandmaximaofafunction.Writeafunctionthatattemptstolocatethemaximumandminimumvaluesofarbitraryfunctionf(x)overacertainrange.Thefunctionbeingevaluatedshouldbepassedtothefunctionasacallingargument.Thefunctionshouldhavethefollowinginputarguments.
first_value---Thefirstvalueofxtosearch
last_value---Thelastvalueofxtosearch
num_steps---Thenumberofstepstoincludeinthesearch
func---Thenameofthefunctiontosearch
Thefunctionshouldhavethefollowingoutputarguments.
xmin---Thevalueofxatthewhichminimumwasfound
min_value---Theminimumvalueoff(x)found
xmax---Thevalueofxatthewhichmaximumwasfound
max_value---Themaximumvalueoff(x)found
BesuretocheckthatthereareavalidnumberofinputargumentsandthattheMATLABhelpandlookforcommandsareproperlysupported.
三、设计思路:
1.实验一:
计算数x的双曲正弦,双曲余弦和双曲正切,并画出它们所对应的
图象。
1).定义向量x=-pi:
pi/200:
pi;
2).x的双曲正弦,双曲余弦和双曲正切的表达式:
sinh=(exp(x)-exp(-x))/2;
cosh=(exp(x)+exp(-x))/2;
tanh=(exp(x)-exp(-x))/(exp(x)+exp(-x));
3).用plot函数将图像输出。
2.实验二:
计算函数的最大值和最小值
1).需要用户输入的数据:
first_value--x的第一个值
last_value--x的最后一个值
num_steps--x取值的步长
9
func--所要求的值的函数名
2).可以得到自变量的向量为ss=first:
numstep:
last;
由tt=feval(func,ss);得到函数值的向量。
3).调用min,max函数,可以得到函数的最小值和最大值。
4).通过循环,分支语句,找到当函数取得最小值和最大值时的自变量的值。
四、实验程序和结果
1.实验一:
计算数x的双曲正弦,双曲余弦和双曲正切,并画出它们所对应的
图象。
1).实验程序:
创建m文件:
hyp.m
%函数功能:
计算数x的双曲正弦,双曲余弦和双曲正切,并画出它们所对应的图象。
%
%文件名:
hyp.m
%作者:
马启冲
%时间:
2010/9/12
functiony=hyp()
clear
clc
x=-pi:
pi/200:
pi;
x=-pi:
pi/200:
pi;
sinh=(exp(x)-exp(-x))/2;
cosh=(exp(x)+exp(-x))/2;
tanh=(exp(x)-exp(-x))/(exp(x)+exp(-x));
figure
(1);
%subplot(3,1,1)
plot(x,sinh);
xlabel('\bfx');
ylabel('\bfy');
title('双曲正弦的函数图像');
legend('sinh');
figure
(2);
%subplot(3,1,2)
plot(x,cosh);
xlabel('\bfx');
ylabel('\bfy');
title('双曲余弦的函数图像');
legend('cosh');
10
figure(3);
%subplot(3,1,3)
plot(x,tanh);
xlabel('\bfx');
ylabel('\bfy');
title('双曲正切的函数图像');
legend('tanh');
figure(4);
plot(x,sinh,'r',x,cosh,'k',x,tanh,'b');xlabel('\bfx');
ylabel('\bfy');
title('双曲正弦,余弦和正切函数的图像');legend('sinh','cosh','tanh');
2).实验结果
11
12
2.实验二:
计算函数的最大值和最小值1).实验程序:
创建m文件:
maxminfun.m%函数功能:
计算函数的最大值和最小值%作者:
马启冲
%文件名:
maxminfun.m
%时间:
2010/9/12
Function[xmin,minvalue,xmax,maxvalue]=
maxminfun(first,numstep,last,func)ss=first:
numstep:
last;
tt=feval(func,ss);
xmin=ss
(1);%求最小值
xmax=ss
(1);%求最大值
minvalue=tt
(1);
maxvalue=tt
(1);
forii=1:
size(tt,2)
if(tt(ii)>maxvalue)
xmax=ss(ii);
maxvalue=tt(ii);
13
end
if(tt(ii) xmin=ss(ii); minvalue=tt(ii); end end 创建调试函数: func.m functionyy=func(xx) yy=xx.^3+2; 2).实验结果: >>[xmin,minvalue,xmax,maxvalue]=maxminfun(-1,0.1,6,'func') xmin= -1 minvalue= 1 xmax= 6 maxvalue= 218 >> 五、实验总结: 自定义函数是一种特殊形式的M文件,它运行在独立的工作区。 它通过输 入参数列表接受输入数据,它通过输出参数列表返回结果给输出参数列表。 MATLAB函数的基本形式如下: function[outarg1,outarg2,...]=fname(inarg1,inarg2,...) %H1commentline%Othercommentlines 14 ... (Executablecode) ... (return) function语句标志着这个函数的开始。 它指定了函数的名称和输入输出列表。 输入函数列表显示在函数名后面的括号中。 输出函数列表显示在等号左边的中括号中。 输入参数列表是名字的列表,这些名字代表从调用者到函数的值。 这些名字被称作形参。 当函数被调用时,它们只是从调用者得来实际变量的占位符而已。 相似地,输出参数列表也形参组成,当函数结束运行时,这些形参是返回到调用者的值的占位符。 在一个表达式中,调用一个函数需要用到实参列表。 在命令窗口直接另一个函数中)键入函数的名字就可以调用这个函数了。 当调用一个函数时,第一个实参的值用在第一个形参的位置,而且其余的形参和实参都一一对应。 函数的执行从函数的顶部开始,结束于return语句或函数的终点。 因为在函数执行到结尾就会结束,所以return语句在大部分的程序中没有必要使用。 在输出参数列表中每一个项目都必须出现在function语句中的左边。 当函数返回时,存储于输出函数列表的值就会返回给调用者,用于下一步的运算。 把大的程序分解成函数,有很多的好处,例如,程序部分的独立检测,代码的可复用性,避免意想不到的错误。 函数的函数(functionfunctions)是指函数的输入参数中含有其他的函数,传递给函数的函数的变量名一般情况应用于这个函数执行的过程中。 在本次实验中,主要调用了feval函数。 函数feval用一个特定的输入值对命名的函数进行求值,要求有指定的输入值。 函数feaval的基本形式如下 feval(fun,value). 15 实验报告 5plotting一、实验目的: 1.Tograspplotting.2.Tolearnaboutthemesh,surface,contourcommands.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 实验 报告