我似乎已经能够愚弄
lsqnonlin
做我想要通过使用附加classdef。但是,我仍然想知道,紧张,为什么优化工具箱试图阻止我这样做。
一个=兰德(3);(:,结束)= 1;
选择= optimoptions (“lsqnonlin”,“算法”,“trust-region-reflective”,…
“OptimalityTol”1 e-20“FunctionTol”1 e-30“StepTol”1 e-20…
“SpecifyObjective”,真的,“JacobianMultiplyFcn”,@jmfunc);
[x, res] = lsqnonlin (@ (x) resFcn (x),兰德(3,1),[],[],选择)
局部最小值。lsqnonlin停止是因为最后的平方和的变化相对于其初始值小于公差的值函数。
x =
3×1
-0.0000 0.0000 4.0000
res = 1.5777 e-30
函数[r,动力系统]= resFcn (x))
r = [* x, x (:)。^ 2/2] - [4、4、4、0 0; 8];
s.a. =一个;
s.x = x;
动力系统= JMInfo(年代);
结束
函数W = jmfunc(动力系统,Y,标志)
一个= Jinfo.s.A;
x = Jinfo.s.x;
开关号(国旗)
情况下0
W =“* (* Y) + Y * x ^ 2;
情况下1
W = [* Y; x。* Y];
情况下1
P = Y(1:结束/ 2);
Q = Y(端/ 2 + 1:端);
W =。”* P + x。*;
结束
结束