找到最大整数,以便在Mathematica中满足此代数约束

Qia*_* Li 3 wolfram-mathematica constraints equation-solving

例如,我有一个表达式作为整数的(任意)函数 n

f[n_]:=10^n*(n^2+4*n)
Run Code Online (Sandbox Code Playgroud)

我想找到的最大整数n,从而f[n]<=m为另一个号码m.

我可以将其表述为整数编程/优化问题.但这使事情复杂化.我也可以尝试从1开始并继续测试约束是否被违反.有没有更有效或更优雅的方式这样做?请注意,约束可能允许Infinity值,n我理想地想要检测这种情况.

Dan*_*lau 5

要看.如果你可以使用数值方法来解决启发式结果,那么假设整数最大值是实际最大值的最小值,那么可以如下所示.

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

In[32]:= Floor[First[NMaximize[{n, f[n] <= 10^8}, n]]]
Out[32]= 6
Run Code Online (Sandbox Code Playgroud)

Daniel Lichtblau