Python 返回递增函数的最小整数

Python 返回递增函数的最小整数,python,function,math,equation,minimize,Python,Function,Math,Equation,Minimize,编写一个函数lower\u integer(),它接受两个输入参数: 函数f表示递增函数您可以这样做: def lowest_integer(f, fmin): nmin=1 while f(nmin)<=fmin : nmin += 1 return nmin def最小_整数(f,fmin): nmin=1 当f(nmin)时,可以循环遍历从1开始的整数,直到找到满足条件的整数,在这种情况下,返回它: def lowest_integer(

编写一个函数
lower\u integer()
,它接受两个输入参数:


  • 函数
    f
    表示递增函数您可以这样做:

    def lowest_integer(f, fmin):
        nmin=1
        while f(nmin)<=fmin :
            nmin += 1
        return nmin 
    
    def最小_整数(f,fmin):
    nmin=1
    
    当f(nmin)时,可以循环遍历从
    1开始的整数,直到找到满足条件的整数,在这种情况下,返回它:

    def lowest_integer(f, fmin):
        nmin = 1
        while True:
            if f(nmin) > fmin:
                return nmin
            nmin += 1
    
    def f(n):
        return 2*n
    print(lowest_integer(f, 10))
    
    def f(n):
        return n**2 + 6*n - 3
    print(lowest_integer(f, 500))
    
    输出:

    6
    20
    
    当然,这种方法很幼稚,如果函数
    f
    很慢,并且
    fmin
    很大,那么这种方法会很慢,但总体上是好的


    更快的方法是使用类似于
    sympy
    的库或类似的库,这些库的函数使用更复杂的方法和技术,适用于此类问题。

    您不需要在
    最小整数中定义
    f
    ,您需要调用它。非常感谢!当我尝试第二个代码示例(即
    f(n)=n**2+6*n-3
    时,我得到的是
    21
    而不是
    20
    ,你知道这可能是什么原因吗?@codemachine98,请不要盲目使用代码,花一分钟时间自己解决这个问题。问问自己:
    f(nmin)
    真的与
    f相反吗(nmin)>fmin
    ?谢谢你的评论。我编辑了我的答案来纠正这个事实。当我为fmin输入一个浮点数,例如
    fmin=1.5
    时,我似乎收到了消息
    TypeError:“float”对象不能解释为整数。我尝试设置
    范围(int(fmin))
    ,但没有得到正确的输出
    6
    20