matlab函数求极值.ppt_第1页
matlab函数求极值.ppt_第2页
matlab函数求极值.ppt_第3页
matlab函数求极值.ppt_第4页
matlab函数求极值.ppt_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

函数的极值,1、一元函数的极值,函数命令:fminbnd,调用格式:x,feval,exitflag,output=fminbnd(fun,x1,x2,options),%求fun在区间(x1,x2)上的极值. 返回值: x:函数fun在(x1,x2)内的极值点 feval:求得函数的极值 exitflag: exitflag0,函数收敛于解x处 exitflag=0,已达最大迭代次数 exiflag0,函数在计算区间内不收敛.,例1:求函数,在,上的极小值.,fun=inline(x+pi)*exp(abs(sin(x+pi),x,feval,exitflag,output=fminbnd(fun,-pi/2,pi/2),fun = Inline function: fun(x) = (x+pi)*exp(abs(sin(x+pi) x = -1.2999e-005 feval = 3.1416 exitflag = 1 output = iterations: 21 funcCount: 22 algorithm: golden section search, parabolic interpolation message: 1x112 char,xx=-pi/2:pi/200:pi/2; yxx=(xx+pi).*exp(abs(sin(xx+pi); plot(xx,yxx) xlabel(x),grid on % 可以用命令xx,yy=ginput(1) 从局部图上取出极值点及相应函数值,例2:求解函数humps的极小值.,type humps %humps 是一个Matlab提供的M函数文件,function out1,out2 = humps(x) %HUMPS A function used by QUADDEMO, ZERODEMO and FPLOTDEMO. % Y = HUMPS(X) is a function with strong maxima near x = .3 % and x = .9. % % X,Y = HUMPS(X) also returns X. With no input arguments, % HUMPS uses X = 0:.05:1. % % Example: % plot(humps) % % See QUADDEMO, ZERODEMO and FPLOTDEMO. % Copyright 1984-2002 The MathWorks, Inc. % $Revision: 5.8 $ $Date: 2002/04/15 03:34:07 $ if nargin=0, x = 0:.05:1; end,y = 1 ./ (x-.3).2 + .01) + 1 ./ (x-.9).2 + .04) - 6; if nargout=2, out1 = x; out2 = y; else out1 = y; end,x,y=fminbnd(humps,0.5,0.8) x = 0.6370 y = 11.2528 xx=0:0.001:2; yy=humps(xx); plot(xx,yy),例3:求,在(0,1)内的极小值.,type myfunmin1 %显示M文件内容 function f=myfunmin1(x) f=x.x; x,y=fminbnd(myfunmin1,0,1) x = 0.3679 y = 0.6922 xx=0:0.001:1; yy=myfunmin1(xx); plot(xx,yy),x,y=fminbnd(x.x,0,1) x = 0.3679 y = 0.6922,2、 多元函数的极值,函数命令:fminsearch 调用格式:x,feval,exitflag,output=fminsearch(fun,x0,optipons) % 求在x0附近的极值,例4:求,的极小值.,type myfunmin2,function f=myfunmin2(v) x=v(1); y=v(2); f=100*(y-x.2).2+(1-x).2;,sx,sfeval=fminsearch(myfunmin2,1 1),sx = 1 1 sfeval = 0 x0=-5,-2,2,5;-5,-2,2,5 sx,sfeval=fminsearch(myfunmin2,x0),x0 = -5 -2 2 5 -5 -2 2 5 sx = 1.0000 -0.6897 0.4151 8.0886 1.0000 -1.9168 4.9643 7.8004 sfeval = 2.4112e-010 disp(myfunmin2(sx(:,1),myfunmin2(sx(:,2),myfunmin2(sx(:,3), myfunmin2(sx(:,4) 1.0e+005 * 0.0000 0.0058 0.0230 3.3211,3、函数零点,函数命令:fzero 求一元函数的零点 调用格式:x,feval,exitflag,output=fzero(fun,x0,options),例5:求,的零点。,(1)采用符号计算 S=solve(sin(t)2*exp(-0.1*t)-0.5*abs(t),t) S = 0.,y=inline(sin(t).2.*exp(-0.1*t)-0.5*abs(t),t); t=-10:0.01:10; Y=y(t); plot(t,Y,r); % r 用红色作图 hold on %在原来基础上作图 plot(t,zeros(size(t),k); %y横为0,黑色 xlabel(t);ylabel(y(t) hold off,(2)数值法求解,zoom on %获局部放大图 tt,yy=ginput(5);zoom off %用鼠标获5个零点燃猜测值 tt yy,tt = -2.0046 -0.5300 -0.1152 0.6221 1.6820 yy = -0.0088 -0.0088 -0.0088 -0.0088 -0.0088 t1,y1=fzero(y,-0.1) -0.1附近找 t1 = -0.5198 y1 = 0 t2,y2=fzero(y,2) t2 = 1.6738 y2 = 2.2204e-016,非线性方程组的求解:fsolve solve 代数方程解 语法:x,fval=fsolve(fun,x0),例6:求解非线性方程组:,function f=myfunsolve1(v) %v是一个数组 x=v(1); y=v(2); z=v(3); f(1)=sin(x)+y+z2.*exp(x)-4; f(2)=x+y*z; f(3)=x*y*z; f=fsolve(myfunsolve1,1,1,1),Optimization terminated: relative function value changing by less than max(options.TolFun2,eps) and sum-of-squares of function values is less than sqrt(options.TolFun). f = 0.0005 -0.0002 1.9995 yy=myfunsolve1(f) yy = 1.0e-006 * -0.2636 0.1200 -0.2131,例7:求一个3阶方阵A,使A3=1 2 3;4 5 6;7 8 9,function F=myfsolve2(A) F=A3-1 2 3;4 5 6;7 8 9; A=fsolve(myfsolve2,ones(3) % ones(3)初始矩阵,直全为1 myfsolve2(A),4、数值积分,函数命令:quad quadl odbquad 调用格式: q1=quad(fun,a,b,tol) %采用自适应Simpson算法计算积分 q1=quadl(fun,a,b,tol) %采用自适应Lobatto算法计算积分 q2=dblquad(fun,xmin,xmax,ymin,ymax,tol) %二重积分 q3=triplequad(fun,xmin,xmax,ymin,ymax,zmin,zmax,tol) %三重积分,例1:求I=,.,(1)利用quad,quadl计算 format long I=quad(exp(-x.2),0,1,1e-8) Il=quadl(exp(-x.2),0,1,1e-8) I = 0.74682413285445 Il = 0.74682413398845,(2) 采用编程计算:,function I=myquad1(a,b,n) x=linspace(a,b,n); %把ab区间平均分成n等份 y=exp(-x.2)*(b-a)/n; %高底=每个取边梯形的面积 I=sum(y); I1=myquad1(0,1,10000) I2=myquad1(0,1,100000) I1 = 0.74681784375801 I2 = 0.74682350396218,例2:计算,利用dblquad s1=dblquad(x.y,0,1,1,2) , %被积函数写成数组的形式 db_(double) 二重积分,即两次积分 s1 = 0.40546626724351 s2=dblquad(x,y)x.y,0,1,1,2) %采用匿名函数表示被积函数 x y的区间 s2 = 0.40546626724351 s3=dblquad(inline(x.y),0,1,1,2) s3 = 0.40546626724351,求s1=,s2=,s3=,例3:,syms x x符号变量 f1=1/(1+x2); f2=1/(x2+2*x+3); f3=1/(x2+2*x-3); s1=int(f1,1,inf) 1到正无穷 s2=int(f2,-inf,inf) int符号积分 s3=int(f3,-inf,inf) s1 = 1/4*pi s2 = 1/2*pi*2(1/2) s3 = NaN 不确定的结果,s4=qu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论