bobohyb 发表于 2006-11-14 17:20

有关最优化函数fminunc的一个问题,请教高手

函数的格式是=fminunc(@myfun,x0);
如果在函数myfun中我需要代入已知的向量变量a和b,那么编程的时候应该注意什么呢?
不知道为什么运行的时候总是出错,说a是没有定义的变量
如果哪位前辈比较精通最优化函数的应用,请帮帮忙,谢谢!

笑石头 发表于 2006-11-14 17:54

给出你的详细数据,详细问题先

bobohyb 发表于 2006-11-14 19:40

我要求解的函数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所知很少,没有办法,只好到这里求助了,希望各位大侠帮我分析一下,谢谢哈:@)

笑石头 发表于 2006-11-14 21:32

从你定义的函数fun 来看,是符号运算,
但从你想要的结果来看,又是数值计算,
搞不清楚你到底想得到符号解,还是数值解。

另:你在定义fun时,
在n=length(a);之前应该为变量a和b赋值,

在=fminunc(@fun,x0), 之前应为x0赋值。

xjzuo 发表于 2006-11-15 08:33

回复

我开始也认为是"笑石头"想的那样,其实不然.(a,b赋值后仍会出现??? Input argument 'a' is undefined).
我想了一下,问题是出在变量定义上.
另注意:由于最后定义的是一个string函数,@应当不写.

[ 本帖最后由 xjzuo 于 2006-11-15 18:51 编辑 ]

bobohyb 发表于 2006-11-15 10:13

谢谢笑石头和xjzuo关注我的帖子:handshake

首先,我的程序因为要在式子中代入变量a和b,所以把它写成了string的形式,否则我不知道该怎么实现;

另外,关于a,b和x0,在当前工作空间都是有值的,还需要在程序中再定义么?

对于xjzuo的建议,我试过了,还是出错,只不过错误少了一条:

??? Input argument 'a' is undefined.

Error in ==> myfun.m
On line 5==> n=length(a);   

不加@,使用单引号也试过,也不行。我:'(

eight 发表于 2006-11-15 10:27

原帖由 bobohyb 于 2006-11-15 10:13 发表
谢谢笑石头和xjzuo关注我的帖子:handshake

首先,我的程序因为要在式子中代入变量a和b,所以把它写成了string的形式,否则我不知道该怎么实现;

另外,关于a,b和x0,在当前工作空间都是有值的,还需要在程 ...


你总得告诉matlab,a是什么东西啊!建议楼主先补补编程的基础,与所使用的语言即matlab是否熟悉无关。

eight 发表于 2006-11-15 11:13

原帖由 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]
查看完整版本: 有关最优化函数fminunc的一个问题,请教高手