matlab fmincon的非线性约束的最小值问题。
Show older comments
目标函数为: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')
调试了半天没调好,有没有大佬帮帮忙:'(
Answers (0)
Categories
Find more on 非线性方程组 in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!