MATLAB函数句柄和M文件

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 的程序。此外,还请写出

相关文档
最新文档