WordPress网站修改,品牌成功案例100个,8211 wordpress,网页界面设计的功能性主要体现在信息的1.简述 函数语法 x lsqnonlin(fun,x0) 函数用于#xff1a;
解决非线性最小二乘(非线性数据拟合)问题 解决非线性最小二乘曲线拟合问题的形式
变量x的约束上下限为ub和lb#xff0c;
x lsqnonlin(fun,x0)从x0点开始#xff0c;找到fun中描述的函数的最小平方和。函数fu…1.简述 函数语法 x lsqnonlin(fun,x0) 函数用于
解决非线性最小二乘(非线性数据拟合)问题 解决非线性最小二乘曲线拟合问题的形式
变量x的约束上下限为ub和lb
x lsqnonlin(fun,x0)从x0点开始找到fun中描述的函数的最小平方和。函数fun应该返回一个向量(或数组)而不是值的平方和。(该算法隐式地计算了fun(x)元素的平方和。)
2.代码 主程序 %% 用lsqnonlin求解最小二乘问题 clear all x0 [0.3 0.4]; % 初值点 [x,resnorm] lsqnonlin(f1211,x0) % 调用最优化函数求 x 和 平方和残差 子程序 function [xCurrent,Resnorm,FVAL,EXITFLAG,OUTPUT,LAMBDA,JACOB] lsqnonlin(FUN,xCurrent,LB,UB,options,varargin) %LSQNONLIN solves non-linear least squares problems. % LSQNONLIN attempts to solve problems of the form: % min sum {FUN(X).^2} where X and the values returned by FUN can be % X vectors or matrices. % % LSQNONLIN implements two different algorithms: trust region reflective % and Levenberg-Marquardt. Choose one via the option Algorithm: for % instance, to choose Levenberg-Marquardt, set % OPTIONS optimoptions(lsqnonlin, Algorithm,levenberg-marquardt), % and then pass OPTIONS to LSQNONLIN. % % X LSQNONLIN(FUN,X0) starts at the matrix X0 and finds a minimum X to % the sum of squares of the functions in FUN. FUN accepts input X % and returns a vector (or matrix) of function values F evaluated % at X. NOTE: FUN should return FUN(X) and not the sum-of-squares % sum(FUN(X).^2)). (FUN(X) is summed and squared implicitly in the % algorithm.) % % X LSQNONLIN(FUN,X0,LB,UB) defines a set of lower and upper bounds on % the design variables, X, so that the solution is in the range LB X % UB. Use empty matrices for LB and UB if no bounds exist. Set LB(i) % -Inf if X(i) is unbounded below; set UB(i) Inf if X(i) is % unbounded above. % % X LSQNONLIN(FUN,X0,LB,UB,OPTIONS) minimizes with the default % optimization parameters replaced by values in OPTIONS, an argument % created with the OPTIMOPTIONS function. See OPTIMOPTIONS for details. % Use the SpecifyObjectiveGradient option to specify that FUN also % returns a second output argument J that is the Jacobian matrix at the % point X. If FUN returns a vector F of m components when X has length n, % then J is an m-by-n matrix where J(i,j) is the partial derivative of % F(i) with respect to x(j). (Note that the Jacobian J is the transpose % of the gradient of F.) % % X LSQNONLIN(PROBLEM) solves the non-linear least squares problem % defined in PROBLEM. PROBLEM is a structure with the function FUN in % PROBLEM.objective, the start point in PROBLEM.x0, the lower bounds in % PROBLEM.lb, the upper bounds in PROBLEM.ub, the options structure in % PROBLEM.options, and solver name lsqnonlin in PROBLEM.solver. Use % this syntax to solve at the command line a problem exported from % OPTIMTOOL. % % [X,RESNORM] LSQNONLIN(FUN,X0,...) returns % the value of the squared 2-norm of the residual at X: sum(FUN(X).^2). % % [X,RESNORM,RESIDUAL] LSQNONLIN(FUN,X0,...) returns the value of the % residual at the solution X: RESIDUAL FUN(X). % % [X,RESNORM,RESIDUAL,EXITFLAG] LSQNONLIN(FUN,X0,...) returns an % EXITFLAG that describes the exit condition. Possible values of EXITFLAG % and the corresponding exit conditions are listed below. See the % documentation for a complete description. % % 1 LSQNONLIN converged to a solution. % 2 Change in X too small. % 3 Change in RESNORM too small. % 4 Computed search direction too small. % 0 Too many function evaluations or iterations. % -1 Stopped by output/plot function. % -2 Bounds are inconsistent. % % [X,RESNORM,RESIDUAL,EXITFLAG,OUTPUT] LSQNONLIN(FUN,X0,...) returns a % structure OUTPUT with the number of iterations taken in % OUTPUT.iterations, the number of function evaluations in % OUTPUT.funcCount, the algorithm used in OUTPUT.algorithm, the number % of CG iterations (if used) in OUTPUT.cgiterations, the first-order % optimality (if used) in OUTPUT.firstorderopt, and the exit message in % OUTPUT.message. % % [X,RESNORM,RESIDUAL,EXITFLAG,OUTPUT,LAMBDA] LSQNONLIN(FUN,X0,...) % returns the set of Lagrangian multipliers, LAMBDA, at the solution: % LAMBDA.lower for LB and LAMBDA.upper for UB. % % [X,RESNORM,RESIDUAL,EXITFLAG,OUTPUT,LAMBDA,JACOBIAN] LSQNONLIN(FUN, % X0,...) returns the Jacobian of FUN at X. % % Examples % FUN can be specified using : % x lsqnonlin(myfun,[2 3 4]) % % where myfun is a MATLAB function such as: % % function F myfun(x) % F sin(x); % % FUN can also be an anonymous function: % % x lsqnonlin((x) sin(3*x),[1 4]) % % If FUN is parameterized, you can use anonymous functions to capture the % problem-dependent parameters. Suppose you want to solve the non-linear % least squares problem given in the function myfun, which is % parameterized by its second argument c. Here myfun is a MATLAB file % function such as % % function F myfun(x,c) % F [ 2*x(1) - exp(c*x(1)) % -x(1) - exp(c*x(2)) % x(1) - x(2) ]; % % To solve the least squares problem for a specific value of c, first % assign the value to c. Then create a one-argument anonymous function % that captures that value of c and calls myfun with two arguments. % Finally, pass this anonymous function to LSQNONLIN: % % c -1; % define parameter first % x lsqnonlin((x) myfun(x,c),[1;1]) % % See also OPTIMOPTIONS, LSQCURVEFIT, FSOLVE, , INLINE.
% Copyright 1990-2018 The MathWorks, Inc.
% ------------Initialization---------------- defaultopt struct(... Algorithm,trust-region-reflective,... DerivativeCheck,off,... Diagnostics,off,... DiffMaxChange,Inf,... DiffMinChange,0,... Display,final,... FinDiffRelStep, [], ... FinDiffType,forward,... FunValCheck,off,... InitDamping, 0.01, ... Jacobian,off,... JacobMult,[],... JacobPattern,sparse(ones(Jrows,Jcols)),... MaxFunEvals,[],... MaxIter,400,... MaxPCGIter,max(1,floor(numberOfVariables/2)),... OutputFcn,[],... PlotFcns,[],... PrecondBandWidth,Inf,... ScaleProblem,none,... TolFun, 1e-6,... TolFunValue, 1e-6, ... TolPCG,0.1,... TolX,1e-6,... TypicalX,ones(numberOfVariables,1),... UseParallel,false );
% If just defaults passed in, return the default options in X if nargin1 nargout 1 strcmpi(FUN,defaults) xCurrent defaultopt; return end
if nargin 5 options []; if nargin 4 UB []; if nargin 3 LB []; end end end
problemInput false; if nargin 1 if isa(FUN,struct) problemInput true; [FUN,xCurrent,LB,UB,options] separateOptimStruct(FUN); else % Single input and non-structure. error(message(optim:lsqnonlin:InputArg)); end end
% No options passed. Set options directly to defaultopt after allDefaultOpts isempty(options);
% Prepare the options for the solver options prepareOptionsForSolver(options, lsqnonlin);
% Set options to default if no options were passed. if allDefaultOpts % Options are all default options defaultopt; end
if nargin 2 ~problemInput error(message(optim:lsqnonlin:NotEnoughInputs)) end
% Check for non-double inputs msg isoptimargdbl(LSQNONLIN, {X0,LB,UB}, ... xCurrent,LB, UB); if ~isempty(msg) error(optim:lsqnonlin:NonDoubleInput,msg); end
caller lsqnonlin; [funfcn,mtxmpy,flags,sizes,~,xstart,lb,ub,EXITFLAG,Resnorm,FVAL,LAMBDA, ... JACOB,OUTPUT,earlyTermination] lsqnsetup(FUN,xCurrent,LB,UB,options,defaultopt, ... allDefaultOpts,caller,nargout,length(varargin)); if earlyTermination return % premature return because of problem detected in lsqnsetup() end
xCurrent(:) xstart; % reshape back to user shape before evaluation % Catch any error in user objective during initial evaluation only switch funfcn{1} case fun try initVals.F feval(funfcn{3},xCurrent,varargin{:}); catch userFcn_ME optim_ME MException(optim:lsqnonlin:InvalidFUN, ... getString(message(optim:lsqnonlin:InvalidFUN))); userFcn_ME addCause(userFcn_ME,optim_ME); rethrow(userFcn_ME) end initVals.J []; case fungrad try [initVals.F,initVals.J] feval(funfcn{3},xCurrent,varargin{:}); catch userFcn_ME optim_ME MException(optim:lsqnonlin:InvalidFUN, ... getString(message(optim:lsqnonlin:InvalidFUN))); userFcn_ME addCause(userFcn_ME,optim_ME); rethrow(userFcn_ME) end case fun_then_grad try initVals.F feval(funfcn{3},xCurrent,varargin{:}); catch userFcn_ME optim_ME MException(optim:lsqnonlin:InvalidFUN, ... getString(message(optim:lsqnonlin:InvalidFUN))); userFcn_ME addCause(userFcn_ME,optim_ME); rethrow(userFcn_ME) end try initVals.J feval(funfcn{4},xCurrent,varargin{:}); catch userFcn_ME optim_ME MException(optim:lsqnonlin:InvalidFUN, ... getString(message(optim:lsqnonlin:InvalidJacobFun))); userFcn_ME addCause(userFcn_ME,optim_ME); rethrow(userFcn_ME) end otherwise error(message(optim:lsqnonlin:UndefCallType)) end
% Check for non-double data typed values returned by user functions if ~isempty( isoptimargdbl(LSQNONLIN, {F,J}, initVals.F, initVals.J) ) error(optim:lsqnonlin:NonDoubleFunVal,getString(message(optimlib:commonMsgs:NonDoubleFunVal,LSQNONLIN))); end
% Flag to determine whether to look up the exit msg. flags.makeExitMsg logical(flags.verbosity) || nargout 4;
[xCurrent,Resnorm,FVAL,EXITFLAG,OUTPUT,LAMBDA,JACOB] ... lsqncommon(funfcn,xCurrent,lb,ub,options,defaultopt,allDefaultOpts,caller,... initVals,sizes,flags,mtxmpy,varargin{:}); 3.运行结果