有关最优化函数fminunc的一个问题,请教高手
函数的格式是=fminunc(@myfun,x0);如果在函数myfun中我需要代入已知的向量变量a和b,那么编程的时候应该注意什么呢?
不知道为什么运行的时候总是出错,说a是没有定义的变量
如果哪位前辈比较精通最优化函数的应用,请帮帮忙,谢谢! 给出你的详细数据,详细问题先 我要求解的函数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}=;
end
f='';
for i=1:n-1
f=;
end
f=;
可是只要我运行 =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所知很少,没有办法,只好到这里求助了,希望各位大侠帮我分析一下,谢谢哈:@) 从你定义的函数fun 来看,是符号运算,
但从你想要的结果来看,又是数值计算,
搞不清楚你到底想得到符号解,还是数值解。
另:你在定义fun时,
在n=length(a);之前应该为变量a和b赋值,
在=fminunc(@fun,x0), 之前应为x0赋值。
回复
我开始也认为是"笑石头"想的那样,其实不然.(a,b赋值后仍会出现??? Input argument 'a' is undefined).我想了一下,问题是出在变量定义上.
另注意:由于最后定义的是一个string函数,@应当不写.
[ 本帖最后由 xjzuo 于 2006-11-15 18:51 编辑 ] 谢谢笑石头和xjzuo关注我的帖子:handshake
首先,我的程序因为要在式子中代入变量a和b,所以把它写成了string的形式,否则我不知道该怎么实现;
另外,关于a,b和x0,在当前工作空间都是有值的,还需要在程序中再定义么?
对于xjzuo的建议,我试过了,还是出错,只不过错误少了一条:
??? Input argument 'a' is undefined.
Error in ==> myfun.m
On line 5==> n=length(a);
不加@,使用单引号也试过,也不行。我:'( 原帖由 bobohyb 于 2006-11-15 10:13 发表
谢谢笑石头和xjzuo关注我的帖子:handshake
首先,我的程序因为要在式子中代入变量a和b,所以把它写成了string的形式,否则我不知道该怎么实现;
另外,关于a,b和x0,在当前工作空间都是有值的,还需要在程 ...
你总得告诉matlab,a是什么东西啊!建议楼主先补补编程的基础,与所使用的语言即matlab是否熟悉无关。 原帖由 bobohyb 于 2006-11-15 10:13 发表
谢谢笑石头和xjzuo关注我的帖子:handshake
首先,我的程序因为要在式子中代入变量a和b,所以把它写成了string的形式,否则我不知道该怎么实现;
另外,关于a,b和x0,在当前工作空间都是有值的,还需要在程 ...
把 function f=fun(x) 改为 function f=fun(x,a,b)
页:
[1]