matlab fmincon的非线性约束的最小值问题。

目标函数为:f=a*x.^2+b*x*y+c*y.^2+d*x+e*y+f(目的是求使f取得最小值时的a b c d e f)
s.t. 4ac-b.^2-1=0
2*a*e-b*d+k2*b*e-2*k2*c*d+m2=0 ,k2 m2 为之前主程序计算得到的两个特定值
代码部分:function f=fun(p)
global variable x
f = p(1)*x(:, 1).^2+p(2)*x(:, 1).*x(:, 2) + p(3)*x(:, 2).^2+p(4)*x(:, 1)+p(5)*x(:, 2)+p(6); %x为收集的坐标是一个N行2列矩阵,x(:, 1) 表示x中代表横坐标的第一列的所有数据。
end
function [c,ceq]= mycon(p)
global variable k2
global variable m2
c=0;
ceq=[4*p(1)*p(3)-p(2).^2-1;
2*p(1)*p(5)-p(2)*p(4)+k2*p(2)*p(5)-2*k2*p(3)*p(4)+m2];
end
[p,fval] = fmincon('fun',ones(6,1),[],[],[],[],[],[],'mycon')
错误:Error using fmincon (line 607)
User supplied objective function must return a scalar value.
Error in mid (line 69)
[p,fval]= fmincon('fun',ones(6,1),[],[],[],[],[],[],'mycon')
调试了半天没调好,有没有大佬帮帮忙:'(

Antworten (0)

Kategorien

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!