0
我想用Matlab解決下面的優化問題:當t >= 0
時最小化f(t)
。特殊種類的1d約束優化用Matlab
有fseminf
功能,但我不明白如何將它應用到我的情況。對於這樣一個看似簡單的問題,使用這樣一個強大的工具似乎有點矯枉過正。對於如何在此處應用fseminf
的任何提示以及任何可以解決的問題,我將不勝感激。
我想用Matlab解決下面的優化問題:當t >= 0
時最小化f(t)
。特殊種類的1d約束優化用Matlab
有fseminf
功能,但我不明白如何將它應用到我的情況。對於這樣一個看似簡單的問題,使用這樣一個強大的工具似乎有點矯枉過正。對於如何在此處應用fseminf
的任何提示以及任何可以解決的問題,我將不勝感激。
Matlab是一個數值軟件,所以解決這個問題的一個「簡單」方法是計算的的值f(t)
,然後找到最小值。取決於功能,您要評估的t
的數量可能會更小或更大。
一個可能的解決方案是:
t = 0:0.001:10; % create values from 0 to 10 in steps of 0.001
f = t.^3+5; % evaluate the function for each value of 't'
[minF, locT] = min(f);
minF % this is the smallest value of the function
t(locT) % the minimum value occurred at this 't'
應該定義t
是在你所期望的最小的區域,如果你把它定義錯了,這將只能找到當地最低。如果單獨的't'之間的間隔太大,最小值也可能會落在它們之間,這就是爲什麼我選擇'0.001'的相對小的步驟。
我會推薦'fmincon',這個函數可以讓你指定優化約束,算法並且有很好的文檔。 – lucianopaz