- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
                        查看更多
                        
                    
                M文件和函数句柄
6.1 Matlab控制流
6.2 脚本文件和函数文件
6.3 Matlab的函数类别
6.4 函数句柄
 MATLAB控制流
6.1.1 if-else-end 条件控制
6.1.2 swith-case 控制语句
6.1.3 for循环和while循环
6.1.4 控制程序流和的其他常用指令
if-else-end条件控制
【例6.1-1】已知,在区间,求函数的最小值。
回顾与复习:
[x,fval,exitflag,output]=fminbnd(fun,x1,x2,options)
									求一元函数在区间(x1, x2)中极小值		
在第四章中采用的方法
(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;			%
for k=1:2
	[xw,fw]=fminbnd(yx,xx(k),xx(k+1));							%	16
	if fwfc
		xc=xw;
		fc=fw;
	end
end	 
fprintf(函数最小值%6.5f发生在x=%6.5f处,fc,xc)  
函数最小值-3.34765发生在x=-19.60721处  
1)
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;							%
while 1
n=2*n;					%
d=(b-a)/n;				%
    x=a:d:b;					%
ii=0;
xc=zeros(1,n);fc=xc;	%
    for k=1:n					%
        [w,f,eflag]=fminbnd(fx,x(k),x(k+1));	%
        if eflag0			%
            ii=ii+1;
            xc(ii)=w;
            fc(ii)=f;
        end 
    end
    [fmin,kk]=min(fc);		%
    xmin=xc(kk);				%
    if abs(f0-fmin)1e-6	%
        jj=jj+1;				%
        if jjNt				%
break			%
        end
    elseif f0-fmin1e-6		%
        f0=fmin;				%
        jj=1;					%
    end
end
2)
	
clear
fx=@(x)(sin(x)^2*exp(-0.1*x)-0.5*sin(x)*(x+0.1));
a=-50;b=5;
[xmin,fmin,n]=exm060101(fx,a,b,3);
fprintf(在x=%6.5f处,函数到达最小值%6.5f\n,xmin,fmin)
fprintf(最终子区间分割数为 %d\n,n)  
在x=-19.60721处,函数到达最小值-3.34765
最终子区间分割数为 128  
 
switch-case控制结构
【例6.1-2】已知学生姓名和百分制分数,用“满分”,优秀、良好、及格和不及格表示学生成绩
clear;
% 
for k=1:10
	a(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,Rose,Tom};% 7
A(2,:)={72,83,56,94,100};	%                    8
% 
for k=1:5
   switch A{2,k}				%
   case 100 					%
      r=满分;		
   case a     					% 
      r=优秀;  	
   case b    					% 
      r=良好;  	
   case c     					% 
      r=及格;   	
   otherwise  					%
   
                 原创力文档
原创力文档 
                        

文档评论(0)