MATLAB函数句柄和M文件
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MATLAB函数句柄和M文件
第 6 章M文件和函数句柄
6.1 Matlab控制流
6.2 脚本文件和函数文件
6.3 Matlab的函数类别
6.4 函数句柄
6.1MATLAB控制流
6.1.1 if-else-end 条件控制
6.1.2 swith-case 控制语句
6.1.3 for循环和while循环
6.1.4 控制程序流和的其他常用指令6.1.1if-else-end条件控制
【例 6.1-1】已知
x
x
x
e
y x sin
)1.0
(5.0
sin2
1.0+
-
=-,在
505
x
-≤≤区间,求函数的最小值。
-50
-45
-40
-35
-30
-25
-20
-15
-10
-5
5
0102030405060
70x sin(x)2/exp(x/10) - (sin(x) (x + 1/10))/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; % for k=1:2
[xw,fw]=fminbnd(yx,xx(k),xx(k+1)); %
<16>
if fw 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 eflag>0 % 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 jj>Nt % break % end elseif f0-fmin>1e-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 6.1.2switch-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 % r='不及格'; end A(3,k)={r}; end A A = 'Jack' 'Marry' 'Peter' 'Rose' 'Tom' [ 72] [ 83] [ 56] [ 94] [100] '及格' '良好' '不及格' '优秀' '满分' 6.1.3 for 循环和while 循环 表 6.1-3 循环结构的使用方式 【例 6.1-3】请分别写出用for 和while 循环语句计算 100000021000000 2.02.02.012.0+++== ∑=Λi i K 的程序。此外,还请写出