2011-11-19 51 views
3

滿意。例如,我有一個表達式爲整數的(任意)函數n找出最大整數,這個代數約束是數學

f[n_]:=10^n*(n^2+4*n) 

我想找到的最大整數n這樣f[n]<=m換另一個號碼m

我可以把它作爲一個整數編程/優化問題。但是這使事情變得複雜。我也可以嘗試從1開始,並繼續測試約束是否被違反。有沒有更高效或優雅的方式來做到這一點?請注意,約束條件可能允許Infinity的值爲n,我理想地想要檢測這種情況。

+1

如果x是真實的,可以在一個假設F [X]是連續函數? –

+1

是的,你可以假設f [x]是連續的。 –

回答

5

取決於。如果您可以使用數字方法來解決啓發式結果,那麼假設整數max是實際最大值的底線,則可以按照以下方式進行操作。

f[n_] := 10^n*(n^2 + 4*n) 

In[32]:= Floor[First[NMaximize[{n, f[n] <= 10^8}, n]]] 
Out[32]= 6 

丹尼爾Lichtblau