对于使用fmincon的非线性约束优化,首先需要定义一个确定fmincon的函数(即,预测z和x的结果:]y
请注意,所有乘法和幂都是元素级的(function z = poly_model(x, y, p)
% extract parameters
p00 = p(1);
p10 = p(2);
p01 = p(3);
p20 = p(4);
p11 = p(5);
p02 = p(6);
p21 = p(7);
p12 = p(8);
p03 = p(9);
% poly23 model
z = p00 + p10 .* x + p01 .* y + p20 .* x.^2 + p11 .* x .* y + ...
p02 .* y.^2 + p21 .* x.^2 .* y + p12 .* x .* y.^2 + p03 .* y.^3;
end和.*)。这允许评估.^和x的矩阵输入函数,这是计算要在实验数据范围内施加的约束所必需的。
约束已在单独的函数中定义。从文档:非线性约束,指定为函数句柄或函数名称。 nonlcon是一个接受向量x或数组x并返回两个数组c(x)和ceq(x)的函数。c(x)是x处的非线性不等式约束的数组。 fmincon试图满足
c(x)<= 0对于c的所有条目。
ceq(x)是x处的非线性等式约束的数组。 fmincon试图满足
ceq(x)= 0对于ceq的所有条目。因此,在您的情况下,约束函数可以定义为:y