Найти максимальное целое число такое, что это алгебраическое ограничение выполняется в Mathematica - PullRequest
3 голосов
/ 19 ноября 2011

Например, у меня есть выражение в виде (произвольной) функции целого числа n

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

Я хочу найти максимальное целое число n, такое, что f[n]<=m для другого числа m.

Я мог бы сформулировать это как целочисленную задачу программирования / оптимизации.Но это усложняет вещи.Я мог бы также попробовать начать с 1 и продолжить тестировать, нарушено ли ограничение.Есть ли более эффективный или элегантный способ сделать это?Также обратите внимание, что ограничение может разрешить значение Infinity, равное n, и я в идеале хочу обнаружить эту ситуацию.

1 Ответ

5 голосов
/ 19 ноября 2011

Зависит.Если вы можете согласиться на эвристический результат, используя числовые методы, которые делают предположение, что целое число max - это пол реального максимума, то можете сделать это следующим образом.

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

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

Daniel Lichtblau

...