可以用matlab优化工具箱里的函数 fmincon 解决这一类非线性有约束的优化问题
你这个问题有2个非线性的不等式约束,对于这种问题内点法比较有效
matlab m-file
function myOPT
%optvar=[a b c x]'
%min F(X)
%subject to: A*X <= B, Aeq*X = Beq (linear constraints)
% C(X) <= 0, Ceq(X) = 0 (nonlinear constraints)
% LB <= X <= UB (bounds)
%
%Problem formulation
A=[];
B=[];
Aeq=[];
Beq=[];
xm=[-inf;-inf;-inf; 1];
xM=[inf;inf;inf;5];
%Alogorithm
options=optimset('Algorithm','interior-point'); % run interior-point algorithm
%initial value
optvar0=[0 0 0 0]';
[optvar_value,optfun_value,flag,info]=fmincon(@(optvar) costfunc(optvar),optvar0,A,B,Aeq,Beq,xm,xM,@(optvar) constfunc(optvar),options)
function costfun=costfunc(optvar)
costfun=abs(optvar(2)-optvar(3))/sqrt(optvar(1)^2+1);
function [c,ceq]=constfunc(optvar)
c=[optvar(1)*optvar(4)+optvar(2)-6*optvar(4)+optvar(4)^2;
6*optvar(4)-optvar(4)^2-optvar(1)*optvar(4)-optvar(3); ]
ceq=[];
缺点是对非线性问题,内点法会有local optimum,可以尝试不同的初始值
拜托了大家~ (1) 2X^2-6X=A(X-1)^2-B(X-1)-C 2X^2-6X=(2) 由右边X^4-5X^2+4=0 可得X^2=1,X^2=4 左边 (X-D)(X+