我正在用 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 对我的情况不可行,我接受链接以使用其他东西。