matlab调用的程序出错,求各位大侠帮忙

来源:百度知道 编辑:UC知道 时间:2024/05/18 10:03:40
程序如下
>> ops=optimset ('Display','iter');
>> x0=[220 100];
>> objf=inline('(6.1*(x(2)*sin(x(2))*(-0.866)/(sin(x(2)/2)*0.966)-0.7*x(1)^2/(57800*(x(2)-sin(x(2))*(-0.866))*(1-170*cos(x(1)/2)*(-0.259)/x(1))^2');
>> [x,feval,exitflag,output]=fminunc(objf,x0,[],[],[],[],[],[],'conf',ops);
??? Error using ==> inline.feval
Too many inputs to inline function.

Error in ==> fminunc at 182
f = feval(funfcn{3},x,varargin{:});

M 文件

fuction [c,ceq]=conf(x)
c=[200-x(1);x(1)-250;100-x(2);x(2)-180]
ceq=[]

用fmincon,你检查一下括弧,少了半个,我加了一个,不知地方对不对。

function zfmin
clc;clear;
ops=optimset ('Display','iter');
x0=[1 1];
[x,feval,exitflag,output]=fmincon(@objf,x0,[],[],[],[],[],[],@conf,ops)
function y=objf(x)
y=6.1*(x(2)*sin(x(2))*(-0.866)/(sin(x(2)/2)*0.966)-0.7*x(1)^2)/(57800*(x(2)-sin(x(2))*(-0.866))*(1-170*cos(x(1)/2)*(-0.259)/x(1))^2);
function [c,ceq]=conf(x)
c=[200-x(1);x(1)-250;100-x(2);x(2)-180];
ceq=[];

结果:

max Line search Directional First-order
Iter F-count f(x) constraint steplength derivative optimality Procedure
0 3 -8.83287e-008 199 Infeasible start point
1 6 -0.0210944 0 1 0.38 199
2 9 -0.0210944 0 1 0 0
Optimization terminated: first-or