2013-08-04 119 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