matlab最优化问题:先建立fun.m文件 function f=fun(x) f=x(1)^3+x(2)^3+x(3)^3+x(4)^3; 再写主程序:

>> A=[];b=[]; >> Aeq=[1 1 1 1];beq=[213]; >> lb=[0;0;0;0];vb=[93;100;254;452]; >> x0=[0;0;0;0]; >> [x,fval]=fmincon('fun',x0,A,b,Aeq,beq,lb,vb) 出现错误: ??? Error using ==> feval Undefined function or method 'fun' for input arguments of type 'double'. Error in ==> fmincon at 574 initVals.f = feval(funfcn{3},X,varargin{:}); Caused by: Failure in initial user-supplied objective functio 谢谢!

第1个回答  2015-01-03
你把function f=fun(x) 改为 function f=myfun(x),然后另存为myfun。m;再把[x,fval]=fmincon('fun',x0,A,b,Aeq,beq,lb,vb) 改为 [x,fval]=fmincon('myfun',x0,A,b,Aeq,beq,lb,vb) 就可以了。
但是运行结果好像有问题,请检查A,b,Aeq,beq,lb,vb是否合理。
第2个回答  推荐于2016-01-19

我运行了下,没错误

fun.m

function f=fun(x)
f=x(1)^3+x(2)^3+x(3)^3+x(4)^3;

运行

A=[];
b=[]; 
Aeq=[1 1 1 1];
beq=213; 
lb=[0;0;0;0];
vb=[93;100;254;452]; 
x0=[0;0;0;0];
[x,fval,ef]=fmincon('myfun',x0,A,b,Aeq,beq,lb,vb)

结果

x =

   53.2500
   53.2500
   53.2500
   53.2500


fval =

   6.0397e+05


ef =

     1

追问

您好,谢谢您的回答,可是我运行总是出现:
??? Error using ==> feval
Undefined function or method 'myfun' for input arguments of type 'double'.
Error in ==> fmincon at 574

initVals.f = feval(funfcn{3},X,varargin{:});

追答

请重新建个M文件,单独运行一下我的代码,不要参杂其他代码

本回答被提问者采纳