0

我正在用 Matlab 编写一个程序,并且我有一个以这种方式定义的函数。

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

x并且y是已知的,而 a、b 和 c 不是:我需要为它们找到值,以使函数的总值最小化。该问题没有额外的约束。

我想过使用 fminsearch 来解决这个最小化问题,但是从 Mathworks 我得到了适合 fminsearch 输入的函数是这样定义的(一个例子):

square = @(x) x.^2

所以在我的例子中,我可以使用一个向量p=[a, b, c]作为最小化的值,但是我不知道如何定义函数的剩余部分。如您所见,索引 i 的可能值的数量很大,因此我不能简单地将所有内容明确地相加,但我需要以某种方式表示总和。如果我在其他地方编写函数,那么我将被迫对 a、b 和 c 使用符号演算(用 syms 声明它们),我不确定 fminsearch 会接受这一点。

我能做些什么?当然,如果 fminsearch 对我的情况不可行,我接受链接以使用其他东西。

4

1 回答 1

1

最通用的解决方案是在目标函数的定义中使用x和:y

>> objfun = @(p) sum( p(1).*x + p(2).*y + p(3) );
>> optp = fminsearch( objfun, po, ... );
于 2013-08-04T19:11:31.113 回答