数学软件实验报告实验八Word格式.docx
- 文档编号:19689391
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:16
- 大小:30.58KB
数学软件实验报告实验八Word格式.docx
《数学软件实验报告实验八Word格式.docx》由会员分享,可在线阅读,更多相关《数学软件实验报告实验八Word格式.docx(16页珍藏版)》请在冰豆网上搜索。
%Incidengtally,thenameFibonaccicomesfrom
%FiliusBonassi,or"
sonofBonassus"
%fibfun.m
ifn>
2
f=fibfun(n-1)+fibfun(n-2);
else
f=1
end
>
fibfun(17)
f=1
此处有很多1,只粘贴了一个
ans=
1597
查询fibfun
helpfibfun
FIBFUNFORcaculatingFibonaccinumbers.
Incidengtally,thenameFibonaccicomesfrom
FiliusBonassi,or"
fibfun.m
查找fibfun
lookforfib
fibfun-FORcaculatingFibonaccinumbers.
fibodemo-UsedbySINGLEMATHdemo.
fibinscaling-FiBinaryPointScalingDemo
5.2控制语句
5.2.1循环语句
利用for循环生成范德蒙德矩阵
t=[-10135]'
t=
-1
0
1
3
5
a=
1-11-11
00001
11111
8127931
6251252551
while循环
a=[23;
34]
a=
23
34
expm(a)
162.7871224.6754
224.6754312.5707
e=zeros(size(a))
e=
00
00(这是自己做出的结果)
e=
224.6754312.5707(这是正确的结果)
5.2.2选择语句
B样条函数的判断函数
functionf=pdbsline(x)
ifx<
f=0
elseifx<
1
f=x
elseifx<
f=2-x
pdbsline(-1)
f=
pdbsline(1.36)
0.6400
pdbsline(2.5)
5.2.4人机交互语句
input命令
>
Howmanyapples2
R=
2
Whatisyourname?
Wngmoran
Wnagmoran
中断命令break
程序设计为i=1
while1
ifrem(100-i*2,4)==0&
(i+(100-i*2)/4)==36
break
end
i=i+1
a1=i
a2=(100-2*i)/4
运行结果是a1=
22
a2=
14
5.3函数变量及变量作用域
1.调试过程中只提供一个输入变量,要求输入模,若是两个变量,要求输入变量
例:
建立function文件
functionc=test531(a,b)
if(nargin==1)
c=det(a)
elseif(nargin==2)
c=a+b
调用margin文件
nargin('
test531'
绘制函数,函数名为test532,要求实现使用函数varargin,用户可以输入任意多个学生的数学、英语、语文成绩,然后求个科目的平均值
function[mathavg,englishavg,chineseavg]=test532(varargin)
I=length(varargin)
mathsum=0
englishsum=0
chinesesum=0
fori=1:
mathsum=mathsum+varargini{i}
(1)
englishsum=englishsum+varargin{i}
(2)
chinesesum=chinsessum+varagin{i}(3)
mathavg=mathsum/1
englishavg=englishsum/1
chineseavg=chinesesum/1
绘制一个函数,函数名为test533,综合应运nargin、nargout、varargin、varargout等,目的是要求学生的个人成绩以及指定科目的平均成绩
function[vararout]=test533(lessons,varargin)
inputnum=nargin
lessonsum=length(lessons)
outputnum=nargout
lessonnum
switchlesson(i)
case'
math'
vararout{1}=sum(varargin{1:
inputnum}
(1))
cash'
english'
vararout{2}=sum(varargin{1:
inputnum}
(2))
chinese'
vararout{3}=sum(varargin{1:
inputnum}(3))
inputnum
varargout{i+3}=sum(varargin{i}(:
))
全局变量示例
function[num1,num2,num3]=test534(varargin)
globalfirstlevelsecondlevel
num1=0
num2=0
num3=0
list=zeros(nargin)
nargin
list{i}=sum(varargin{i}(:
list{i}=list{i}/length()varargin(i)
iflist(i)>
firstlevel
mum1=num1+1
elseiflist(i)=>
seconglevel
num2=num2+1
else
num3=num3+1
globalfirstlevelsecondlevel
firstlevel=85
firstlevel=
85
secondlevel=75
secondlevel=
75
[num1,num2,num3]=test534([90,89,60],[79,89,60],[99,98,100])
num1=
num2=
num3=
在工作空间中存储的全局变量将以global标出
whos
NameSizeBytesClassAttributes
ans1x18double
firstlevel1x18doubleglobal
secondlevel1x18doubleglobal
toolbox_version1x510char
5.4子函数和局部函数
子函数示例
functionc=test(a,b)%主函数
c=test1(a,b)*test2(a,b)
functionc=test1(a,b)%子函数1,这里为c为形式参数,不影响主函数中c的作用
c=a+b
functionc=test2(a,b)%子函数2
c=a-b
5.5程序设计的辅助函数
1、执行函数
函数feval用于调用M文件,其调用格式:
●[y1,y2,…,yn]=feval[function,x1,x2,…,xn]
●evalin(workspacename,'
expression'
2、容错函数
例1
testerror('
i'
i)
flag=
?
Errorusing==>
testerrorat6
Inputmustbeastring!
!
3、时间控制函数
d1=datenum('
04-18-2012'
d1=
734977
d2=datestr(d1+30)
d2=
18-May-2012
dv1=datevec(d1)
dv1=
2012418000
dv2=datevec(d2)
dv2=
2012518000
函数cputime调用
t=cputime
90.1530
t=cputime-t
0.2652
5.6程序设计优化
1、以矩阵为操作主体
functiony=test1(x)
x=1
1000
y(i)=sin(x)
x=x+0.1*pi
functiontest2
x=1:
0.1*pi:
1000*pi
y=sin(x)
test1=cputime
test1=
124.9412
t=cputime-test1
0.4680
test2=cputime
test2=
125.7680
t=cputime-test2
0.2496
2、数据的预定义
119.9024
120.0896
0.3432
0.8112
5.7程序调试
M文件错误的种类
A=[1,2;
3,4]
A=
12
B=[1,2,3;
4,5,6;
7,8,9]
B=
123
456
789
A*B
mtimes
Innermatrixdimensionsmustagree.
A=NaN
NaN
isnan(A)
A=Inf
Inf
isinf(A)
A=[]
[]
isempty(A)
调试过程
dbtypedb_test.m
1functionC=db_test(A,B)
2[num11,num12]=size(A)
3[num21,num22]=size(B)
4if(num12==num21)
5C=A*B
6else
7if(num11==num22)
8C=B*A
9else
10error('
inputerror!
'
11end
12end
13return
14end
15
dbstopindb_test.mat5
A=[1,2;
4,5,6]
db_test(A,B)
num11=
num12=
num21=
num22=
K>
dbstatus
Breakpointfordb_testisonline5.
dbstack
Indb_testat5
whos
A2x232double
B2x348double
num111x18double
num121x18double
num211x18double
num221x18double
dbup
Inbaseworkspace.
dbquit
5.8M文件的调用记录
loadwest0479
A=west0479;
profileon-detailbuiltin-history
eigs(A)
1.0e+003*
0.0000+1.7007i
0.0000-1.7007i
-0.1009+0.0666i
-0.1009-0.0666i
0.1081+0.0541i
0.1081-0.0541i
profilereporttest_eig
Warning:
UnknownargumentforPROFILE.SeeHELPPROFILE.
Inprofileat236
profileplot
s=profile('
status'
s=
ProfilerStatus:
'
on'
DetailLevel:
builtin'
Timer:
cpu'
HistoryTracking:
HistorySize:
1000000
profileresume
a=profile('
a=
profileoff
5.9函数句柄
函数句柄的创建和显示
fun_handle=@load
fun_handle=
@load
functions(fun_handle)
ans=
function:
load'
type:
simple'
file:
MATLABbuilt-infunction'
函数句柄的调用和操作
fun_handle=@test23
@test23
feval(fun_handle,3,4)
feval('
test23'
3,4)
fun_handle=str2func('
eig'
@eig
func2str(fun_handle)
eig
isa(fun_handle,'
function_handle'
isequal(fun_handle,@eig)
四、实验总结
这次实习做的是程序设计。
第一是M文件,了解了M文件的特点与形式,区分了命令式文件与函数式文件,对M文件有了一定的了解。
第二是控制语句,包括循环语句for,选择语句if,分支语句switch,人机交互语句echo和input、keyboard、pause、breek。
第三是函数变量及变量作用域,应用了varargin函数。
第四是子函数与局部函数。
第五是程序设计的辅助函数,如feval,error、warning,cputime。
第六是程序设计的优化,,第七是程序调试,对比了M文件的错误种类,运用keyboard函数进行错误识别,模拟了调试过程。
第八是M文件的调用记录,用了profile函数进行查看调用状态。
最后是函数句柄的创建、显示、调用和操作。
这次实习总的来说就是把程序设计的过程做了一遍。
通过实习了解了程序设计的流程和程序设计中所应用到的一些函数。
课本上讲的比较基础,按照步骤基本能做出来,对程序设计有了一定的了解。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数学 软件 实验 报告