临沂高端大气网站建设穿越yin线的做网站
- 作者: 五速梦信息网
- 时间: 2026年03月21日 10:30
当前位置: 首页 > news >正文
临沂高端大气网站建设,穿越yin线的做网站,网推赚钱项目,自己做链接的网站1.简述 用于求某个给定函数的最小值点。
使用方法是#xff1a;
xfminbnd(func,x1,x2)
func是函数句柄#xff0c;然后x1和x2就是函数的区间#xff0c;得到的结果就是使func取最小值的x值
当然也可以使用[x,fv]fminbnd(func,x1,x2)的方式#xff0c;这个时候fv就是函数…1.简述 用于求某个给定函数的最小值点。
使用方法是
xfminbnd(func,x1,x2)
func是函数句柄然后x1和x2就是函数的区间得到的结果就是使func取最小值的x值
当然也可以使用[x,fv]fminbnd(func,x1,x2)的方式这个时候fv就是函数 的最小值即有fvf(x)
测试程序如下 f(x) exp(x)-4*sin(x)5; [x,fv]fminbnd(f,0,1)
x
0.9048
fv
4.3262
当然如果在某个区间上是单调的结果就有点意思了 clear f(x) x^-2x-3; [x,fv]fminbnd(f,2,3)
x
2.9999
fv
-2.6667
看样子MATLAB是使用了定长小区间的方式计算的而且结果也是错误的这不免让人对这个函数的可靠性产生怀疑……
2.代码 主程序 %% 最大容积问题 [xo,fo]fminbnd(f1216,0,2) 子程序
function [xf,fval,exitflag,output] fminbnd(funfcn,ax,bx,options,varargin) %FMINBND Single-variable bounded nonlinear function minimization. % X FMINBND(FUN,x1,x2) attempts to find a local minimizer X of the function % FUN in the interval x1 X x2. FUN is a function handle. FUN accepts % scalar input X and returns a scalar function value F evaluated at X. % % X FMINBND(FUN,x1,x2,OPTIONS) minimizes with the default optimization % parameters replaced by values in the structure OPTIONS, created with % the OPTIMSET function. See OPTIMSET for details. FMINBND uses these % options: Display, TolX, MaxFunEval, MaxIter, FunValCheck, PlotFcns, % and OutputFcn. % % X FMINBND(PROBLEM) finds the minimum for PROBLEM. PROBLEM is a % structure with the function FUN in PROBLEM.objective, the interval % in PROBLEM.x1 and PROBLEM.x2, the options structure in PROBLEM.options, % and solver name fminbnd in PROBLEM.solver. % % [X,FVAL] FMINBND(…) also returns the value of the objective function, % FVAL, computed in FUN, at X. % % [X,FVAL,EXITFLAG] FMINBND(…) also returns an EXITFLAG that % describes the exit condition. Possible values of EXITFLAG and the % corresponding exit conditions are % % 1 FMINBND converged with a solution X based on OPTIONS.TolX. % 0 Maximum number of function evaluations or iterations reached. % -1 Algorithm terminated by the output function. % -2 Bounds are inconsistent (that is, ax bx). % % [X,FVAL,EXITFLAG,OUTPUT] FMINBND(…) also returns a structure % OUTPUT with the number of iterations taken in OUTPUT.iterations, the % number of function evaluations in OUTPUT.funcCount, the algorithm name % in OUTPUT.algorithm, and the exit message in OUTPUT.message. % % Examples % FUN can be specified using : % X fminbnd(cos,3,4) % computes pi to a few decimal places and gives a message upon termination. % [X,FVAL,EXITFLAG] fminbnd(cos,3,4,optimset(TolX,1e-12,Display,off)) % computes pi to about 12 decimal places, suppresses output, returns the % function value at x, and returns an EXITFLAG of 1. % % FUN can be an anonymous function: % X fminbnd((x) sin(x)3,2,5) % % FUN can be a parameterized function. Use an anonymous function to % capture the problem-dependent parameters: % f (x,c) (x-c).^2; % The parameterized function. % c 1.5; % The parameter. % X fminbnd((x) f(x,c),0,1) % % See also OPTIMSET, FMINSEARCH, FZERO, FUNCTION_HANDLE.
% References: % Algorithms for Minimization Without Derivatives, % R. P. Brent, Prentice-Hall, 1973, Dover, 2002. % % Computer Methods for Mathematical Computations, % Forsythe, Malcolm, and Moler, Prentice-Hall, 1976.
% Original coding by Duane Hanselman, University of Maine. % Copyright 1984-2018 The MathWorks, Inc.
% Set default options defaultopt struct( … Display,notify, … FunValCheck,off, … MaxFunEvals,500, … MaxIter,500, … OutputFcn,[], … PlotFcns,[], … TolX,1e-4);
% If just defaults passed in, return the default options in X if nargin1 nargout 1 strcmpi(funfcn,defaults) xf defaultopt; return end
% initialization if nargin4 options []; end
% Detect problem structure input problemInput false; if nargin 1 if isa(funfcn,struct) problemInput true; [funfcn,ax,bx,options] separateOptimStruct(funfcn); else % Single input and non-structure. error(MATLAB:fminbnd:InputArg,… getString(message(MATLAB:optimfun:fminbnd:InputArg))); end end
if nargin 3 ~problemInput error(MATLAB:fminbnd:NotEnoughInputs,… getString(message(MATLAB:optimfun:fminbnd:NotEnoughInputs))); end
% Check for non-double inputs if ~isa(ax,double) || ~isa(bx,double) error(MATLAB:fminbnd:NonDoubleInput,… getString(message(MATLAB:optimfun:fminbnd:NonDoubleInput))); end
% Check that options is a struct if ~isempty(options) ~isa(options,struct) error(MATLAB:fminbnd:ArgNotStruct,… getString(message(MATLAB:optimfun:commonMessages:ArgNotStruct, 4))); end
printtype optimget(options,Display,defaultopt,fast); tol optimget(options,TolX,defaultopt,fast); funValCheck strcmp(optimget(options,FunValCheck,defaultopt,fast),on);
maxfun optimget(options,MaxFunEvals,defaultopt,fast); maxiter optimget(options,MaxIter,defaultopt,fast);
% Check that MaxFunEvals and MaxIter are scalar double values; % Their default values for some solvers are strings if ischar(maxfun) || isstring(maxfun) error(MATLAB:fminbnd:CharMaxFunEvals,… getString(message(MATLAB:optimfun:fminbnd:CharMaxFunEvals))); end if ischar(maxiter) || isstring(maxiter) error(MATLAB:fminbnd:CharMaxIter,… getString(message(MATLAB:optimfun:fminbnd:CharMaxIter))); end
funccount 0; iter 0; xf []; fx [];
switch printtype case {notify,notify-detailed} print 1; case {none,off} print 0; case {iter,iter-detailed} print 3; case {final,final-detailed} print 2; otherwise print 1; end % Handle the output outputfcn optimget(options,OutputFcn,defaultopt,fast); if isempty(outputfcn) haveoutputfcn false; else haveoutputfcn true; % Parse OutputFcn which is needed to support cell array syntax for OutputFcn. outputfcn createCellArrayOfFunctions(outputfcn,OutputFcn); end % Handle the plot plotfcns optimget(options,PlotFcns,defaultopt,fast); if isempty(plotfcns) haveplotfcn false; else haveplotfcn true; % Parse PlotFcns which is needed to support cell array syntax for PlotFcns. plotfcns createCellArrayOfFunctions(plotfcns,PlotFcns); end
% checkbounds if ax bx exitflag -2; xf[]; fval []; msggetString(message(MATLAB:optimfun:fminbnd:ExitingLowerBoundExceedsUpperBound)); if print 0 disp( ) disp(msg) end output.iterations 0; output.funcCount 0; output.algorithm golden section search, parabolic interpolation; output.message msg; % Have not initialized OutputFcn; do not need to call it before returning return end
% Assume well converge exitflag 1;
header Func-count x f(x) Procedure; procedure initial;
% Convert to function handle as needed. if isstring(funfcn) funfcn char(funfcn); end funfcn fcnchk(funfcn,length(varargin));
if funValCheck % Add a wrapper function, CHECKFUN, to check for NaN/complex values without % having to change the calls that look like this: % f funfcn(x,varargin{:}); % x is the first argument to CHECKFUN, then the users function, % then the elements of varargin. To accomplish this we need to add the % users function to the beginning of varargin, and change funfcn to be % CHECKFUN. varargin [{funfcn}, varargin]; funfcn checkfun; end
% Initialize the output and plot functions. if haveoutputfcn || haveplotfcn [xOutputfcn, optimValues, stop] callOutputAndPlotFcns(outputfcn,plotfcns,xf,init,funccount,iter, … fx,procedure,varargin{:}); if stop [xf,fval,exitflag,output] cleanUpInterrupt(xOutputfcn,optimValues); if print 0 disp(output.message) end return; end end
% Compute the start point seps sqrt(eps); c 0.5(3.0 - sqrt(5.0)); a ax; b bx; v a c(b-a); w v; xf v; d 0.0; e 0.0; x xf; fx funfcn(x,varargin{:}); funccount funccount 1;
% Check that the objective value is a scalar if numel(fx) ~ 1 error(MATLAB:fminbnd:NonScalarObj,… getString(message(MATLAB:optimfun:fminbnd:NonScalarObj))); end
% Display the start point if required if print 2 disp( ) disp(header) fprintf(%5.0f %12.6g %12.6g %s\n,funccount,xf,fx,procedure) end
% OutputFcn and PlotFcns call % Last x passed to outputfcn/plotfcns; has the input xs shape if haveoutputfcn || haveplotfcn [xOutputfcn, optimValues, stop] callOutputAndPlotFcns(outputfcn,plotfcns,xf,iter,funccount,iter, … fx,procedure,varargin{:}); if stop % Stop per user request. [xf,fval,exitflag,output] cleanUpInterrupt(xOutputfcn,optimValues); if print 0 disp(output.message) end return; end end
fv fx; fw fx; xm 0.5(ab); tol1 seps*abs(xf) tol/3.0; tol2 2.0tol1;
% Main loop while ( abs(xf-xm) (tol2 - 0.5(b-a)) ) gs 1; % Is a parabolic fit possible if abs(e) tol1 % Yes, so fit parabola gs 0; r (xf-w)(fx-fv); q (xf-v)(fx-fw); p (xf-v)*q-(xf-w)r; q 2.0(q-r); if q 0.0, p -p; end q abs(q); r e; e d; % Is the parabola acceptable if ( (abs(p)abs(0.5*qr)) (pq(a-xf)) (pq*(b-xf)) ) % Yes, parabolic interpolation step d p/q; x xfd; procedure parabolic; % f must not be evaluated too close to ax or bx if ((x-a) tol2) || ((b-x) tol2) si sign(xm-xf) ((xm-xf) 0); d tol1*si; end else % Not acceptable, must do a golden section step gs1; end end if gs % A golden-section step is required if xf xm e a-xf; else e b-xf; end d c*e; procedure golden; end % The function must not be evaluated too close to xf si sign(d) (d 0); x xf si * max( abs(d), tol1 ); fu funfcn(x,varargin{:}); funccount funccount 1; iter iter 1; if print 2 fprintf(%5.0f %12.6g %12.6g %s\n,funccount, x, fu, procedure); end % OutputFcn and PlotFcns call if haveoutputfcn || haveplotfcn [xOutputfcn, optimValues, stop] callOutputAndPlotFcns(outputfcn,plotfcns,x,iter,funccount,iter, … fu,procedure,varargin{:}); if stop % Stop per user request. [xf,fval,exitflag,output] cleanUpInterrupt(xOutputfcn,optimValues); if print 0 disp(output.message); end return; end end % Update a, b, v, w, x, xm, tol1, tol2 if fu fx if x xf a xf; else b xf; end v w; fv fw; w xf; fw fx; xf x; fx fu; else % fu fx if x xf a x; else b x; end if ( (fu fw) || (w xf) ) v w; fv fw; w x; fw fu; elseif ( (fu fv) || (v xf) || (v w) ) v x; fv fu; end end xm 0.5*(ab); tol1 seps*abs(xf) tol/3.0; tol2 2.0*tol1; if funccount maxfun || iter maxiter exitflag 0; output.iterations iter; output.funcCount funccount; output.algorithm golden section search, parabolic interpolation; fval fx; msg terminate(xf,exitflag,fval,funccount,maxfun,iter,maxiter,tol,print); output.message msg; % OutputFcn and PlotFcns call if haveoutputfcn || haveplotfcn callOutputAndPlotFcns(outputfcn,plotfcns,xf,done,funccount,iter,fval,procedure,varargin{:}); end return end end % while
fval fx; output.iterations iter; output.funcCount funccount; output.algorithm golden section search, parabolic interpolation; msg terminate(xf,exitflag,fval,funccount,maxfun,iter,maxiter,tol,print); output.message msg; % OutputFcn and PlotFcns call if haveoutputfcn || haveplotfcn callOutputAndPlotFcns(outputfcn,plotfcns,xf,done,funccount,iter,fval,procedure,varargin{:}); end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function msg terminate(,exitflag,finalf,funccount,maxfun,,~,tol,print)
switch exitflag case 1 msg … getString(message(MATLAB:optimfun:fminbnd:OptimizationTerminatedXSatisfiesCriteria, sprintf(%e,tol))); if print 1 % only print msg if not off or notify disp( ) disp(msg) end case 0 if funccount maxfun msg getString(message(MATLAB:optimfun:fminbnd:ExitingMaxFunctionEvals, sprintf(%f,finalf))); if print 0 disp( ) disp(msg) end else msg getString(message(MATLAB:optimfun:fminbnd:ExitingMaxIterations, sprintf(%f,finalf))); if print 0 disp( ) disp(msg) end end end
%————————————————————————– function [xOutputfcn, optimValues, stop] callOutputAndPlotFcns(outputfcn,plotfcns,x,state,funccount,iter, … f,procedure,varargin) % CALLOUTPUTANDPLOTFCNS assigns values to the struct OptimValues and then calls the % outputfcn/plotfcns. outputfcn and plotfcns are assumed to not be string % objects but can be strings or handles. % % state - can have the values init,iter, or done.
% For the done state we do not check the value of stop because the % optimization is already done. optimValues.funccount funccount; optimValues.iteration iter; optimValues.fval f; optimValues.procedure procedure;
xOutputfcn x; % Set xOutputfcn to be x stop false; state char(state); % in case string objects are ever passed in the future % Call output functions if ~isempty(outputfcn) switch state case {iter,init} stop callAllOptimOutputFcns(outputfcn,xOutputfcn,optimValues,state,varargin{:}) || stop; case done callAllOptimOutputFcns(outputfcn,xOutputfcn,optimValues,state,varargin{:}); end end % Call plot functions if ~isempty(plotfcns) switch state case {iter,init} stop callAllOptimPlotFcns(plotfcns,xOutputfcn,optimValues,state,varargin{:}) || stop; case done callAllOptimPlotFcns(plotfcns,xOutputfcn,optimValues,state,varargin{:}); end end
%————————————————————————– function [x,FVAL,EXITFLAG,OUTPUT] cleanUpInterrupt(xOutputfcn,optimValues) % CLEANUPINTERRUPT updates or sets all the output arguments of FMINBND when the optimization % is interrupted.
% Call plot function driver to finalize the plot function figure window. If % no plot functions have been specified or the plot function figure no % longer exists, this call just returns. callAllOptimPlotFcns(cleanuponstopsignal);
x xOutputfcn; FVAL optimValues.fval; EXITFLAG -1; OUTPUT.iterations optimValues.iteration; OUTPUT.funcCount optimValues.funccount; OUTPUT.algorithm golden section search, parabolic interpolation; OUTPUT.message getString(message(MATLAB:optimfun:fminbnd:OptimizationTerminatedPrematurelyByUser));
%————————————————————————– function f checkfun(x,userfcn,varargin) % CHECKFUN checks for complex or NaN results from userfcn.
f userfcn(x,varargin{:}); % Note: we do not check for Inf as FMINBND handles it naturally. if isnan(f) error(MATLAB:fminbnd:checkfun:NaNFval,… getString(message(MATLAB:optimfun:fminbnd:checkfun:NaNFval, localChar( userfcn ), sprintf( %g, x )))); elseif ~isreal(f) error(MATLAB:fminbnd:checkfun:ComplexFval,… getString(message(MATLAB:optimfun:fminbnd:checkfun:ComplexFval, localChar( userfcn ), sprintf( %g, x )))); end %————————————————————————– function strfcn localChar(fcn) % Convert the fcn to a character array for printing
if ischar(fcn) strfcn fcn; elseif isstring(fcn) || isa(fcn,inline) strfcn char(fcn); elseif isa(fcn,function_handle) strfcn func2str(fcn); else try strfcn char(fcn); catch strfcn getString(message(MATLAB:optimfun:fminbnd:NameNotPrintable)); end end 3.运行结果
相关文章
-
临沂房产和房建设局网站双和网页设计html代码可以查重吗
临沂房产和房建设局网站双和网页设计html代码可以查重吗
- 技术栈
- 2026年03月21日
-
临沂城市建设网站企业建网站需要准备哪些资料呢
临沂城市建设网站企业建网站需要准备哪些资料呢
- 技术栈
- 2026年03月21日
-
临沂阿里巴巴网站建设淘宝网页设计报告
临沂阿里巴巴网站建设淘宝网页设计报告
- 技术栈
- 2026年03月21日
-
临沂建设局网站农民工保证金wordpress做社交网站吗
临沂建设局网站农民工保证金wordpress做社交网站吗
- 技术栈
- 2026年03月21日
-
临沂建设网站河南网站建设多少钱
临沂建设网站河南网站建设多少钱
- 技术栈
- 2026年03月21日
-
临沂兰山建设局网站贵阳开发网站
临沂兰山建设局网站贵阳开发网站
- 技术栈
- 2026年03月21日
