我要求解的函数f(x)=求和(x(1)*a(i)+1/2*x(2)*a(i)^2-b(i)/1000)^2, i=1到n,其中a和b是n维向量,已知,但对于具体某次运算各不相同,所以我需要在函数fun中将这两个变量代入,我是这样编的:
function f=fun(x)
n=length(a);
c=cell(1,n);
for i=1:n
s=['(x(1)*',num2str(a(i)),'+x(2)*(',num2str(a(i)*a(i)),')/2-',num2str(b(i)),'/1000)'];
c{i}=[s,'*',s];
end
f='';
for i=1:n-1
f=[f,c{i},'+'];
end
f=[f,c{n}];
可是只要我运行 [x,fval,exitflag,output]=fminunc(@fun,x0),就会出现以下出错提示:
??? Input argument 'a' is undefined.
Error in ==> myfun.m
On line 5 ==> n=length(a);
Error in ==> D:\matlab6.5\toolbox\optim\fminunc.m
On line 149 ==> f = feval(funfcn{3},x,varargin{:});
以上就是问题所在了,因为我对matlab所知很少,没有办法,只好到这里求助了,希望各位大侠帮我分析一下,谢谢哈:@) |