资源描述:
《MATLAB函数句柄和M文件.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第6章M文件和函数句柄6.1Matlab控制流6.2脚本文件和函数文件6.3Matlab的函数类别6.4函数句柄6.1MATLAB控制流6.1.1if-else-end条件控制6.1.2swith-case控制语句6.1.3for循环和while循环6.1.4控制程序流和的其他常用指令6.1.1if-else-end条件控制【例6.1-1】已知,在17区间,求函数的最小值。回顾与复习:[x,fval,exitflag,output]=fminbnd(fun,x1,x2,options)求一元函数在区间(x1,x2)中极小值在第四章中采用的方法(
2、1)采用优化算法求极小值x1=-50;x2=5;%yx=@(x)(sin(x)^2*exp(-0.1*x)-0.5*sin(x)*(x+0.1));[xc0,fc0,exitflag,output]=fminbnd(yx,x1,x2)%<9>%(2)据图形观察,重设fminbnd的搜索区间xx=[-23,-20,-18];%fc=fc0;xc=xc0;%fork=1:2[xw,fw]=fminbnd(yx,xx(k),xx(k+1));%<16>iffw3、6.5f处',fc,xc)函数最小值-3.34765发生在x=-19.60721处171)function[xmin,fmin,n]=exm060101(fx,a,b,Nt)%exm060101.m%fx%a、b%Nt%xmin、ymin%n[~,f0]=fminbnd(fx,a,b);%n=1;%jj=1;%while1n=2*n;%d=(b-a)/n;%x=a:d:b;%ii=0;xc=zeros(1,n);fc=xc;%fork=1:n%[w,f,eflag]=fminbnd(fx,x(k),x(k+1));%ifeflag>0%ii=i
4、i+1;xc(ii)=w;fc(ii)=f;endend[fmin,kk]=min(fc);%xmin=xc(kk);%ifabs(f0-fmin)<1e-6%jj=jj+1;%ifjj>Nt%break%endelseiff0-fmin>1e-6%f0=fmin;%jj=1;%endend2)clearfx=@(x)(sin(x)^2*exp(-0.1*x)-0.5*sin(x)*(x+0.1));17a=-50;b=5;[xmin,fmin,n]=exm060101(fx,a,b,3);fprintf('在x=%6.5f处,函数到达最小值%
5、6.5f',xmin,fmin)fprintf('最终子区间分割数为%d',n)在x=-19.60721处,函数到达最小值-3.34765最终子区间分割数为1286.1.1switch-case控制结构【例6.1-2】已知学生姓名和百分制分数,用“满分”,优秀、良好、及格和不及格表示学生成绩clear;%fork=1:10a(k)={89+k};b(k)={79+k};c(k)={69+k};d(k)={59+k};end;c=[d,c];%A=cell(3,5);%A(1,:)={'Jack','Marry','Peter','Ros
6、e','Tom'};%<7>A(2,:)={72,83,56,94,100};%<8>17%fork=1:5switchA{2,k}%case100%r='满分';casea%r='优秀';caseb%r='良好';casec%r='及格';otherwise%r='不及格';endA(3,k)={r};endAA='Jack''Marry''Peter''Rose''Tom'[72][83][56][94][100]'及格''良好''不及格''优秀''满分'6.1.1for循环和while循环表6.1-3循环结构的使用方式for循环while
7、循环forix=array(commands)endWHILEEXPRESSION(commands)end【例6.1-3】请分别写出用for和while循环语句计算的程序。此外,还请写出避免循环的数值、符号计算程序。(1)for循环方法tics1=0;17fork=0:1e6s1=s1+0.2^(k);end;s1toc(2)while循环方法tics2=1;k=1;whilek<1e6+1%注意:上限与for循环不同s2=s2+0.2^k;k=k+1;ends2toc(3)数值求和指令tics3=sum(0.2.^(0:1e6))toc(4
8、)符号求和指令ticsymsk;s4=vpa(symsum(0.2^k,0,1e6))toc【例6.1-4】编写计算,其中,是预先给定的控制精度。(1