2013-08-04 80 views
0

我正在Matlab中编写程序,并且我有一个用这种方式定义的函数。使用fminsearch和参数化函数进行Matlab最小化

sum (i=1...100) (a*x(i) + b*y(i) + c) 

xy是已知的,而a,b和c是未:我需要找到他们的值,使得所述函数的合计值最小。这个问题没有额外的限制。

我想用fminsearch来解决这个最小化问题,但从Mathworks公司我得到的功能,这是fminsearch适合输入这样的(例子)定义:

square = @(x) x.^2 

所以在我的情况下,我能使用矢量p=[a, b, c]作为最小值,但是我不知道如何定义函数的其余部分。正如你所看到的,索引i的可能值的数量是巨大的,所以我不能简单地将所有内容总结在一起,但我需要以某种方式表示总和。如果我在其他地方写函数,那么我不得不对a,b和c使用符号演算(用syms声明它们),我不确定fminsearch会接受这个函数。

我该怎么办?当然,如果fminsearch证明我的情况是不可行的,我接受使用别的链接。

+0

你希望尽量减少纯总和,不受任何限制?没有最低限度。我的猜测是你有一个不同的问题。那么为什么不告诉我们多一点,而不是让我们感到困惑? – 2013-08-05 00:54:28

+0

a = b = c = -inf。完成。 – 2013-08-05 01:36:18

回答

1

最普遍的解决方案是使用xy在目标函数的定义:

>> objfun = @(p) sum(p(1).*x + p(2).*y + p(3)); 
>> optp = fminsearch(objfun, po, ...); 
+0

太好了,所以你可以直接使用sum()。非常感谢 :) – user2321018