Skip to main content
 首页 » 编程设计

python之python中的负函数

2025年05月04日18duanxz

我定义了一个函数,用于计算 x^2 等函数的最小值。我想定义一个函数,该函数通过乘以负数计算相似函数的最小值来计算函数的最大值。

def myf(g): 
        return -(g+1.3)**2+5 
def maximize(f,low,high,tol): 
        return minimize(-1*f,low,high,tol) 

有没有办法做到这一点?当我尝试我所拥有的时,出现以下错误:

TypeError: unsupported operand type(s) for *: 'int' and 'function' 

最小化定义如下:

def minimize(f,low,high, tol): 
    if low>high: 
        c=low; a=high 
        a=float(a); c=float(c); 
    else: 
        a=float(low); c=float(high); 
    b=a+(c-a)*.618033 
    fa=f(a); fc=f(c) 
    fb=f(b); 
    if fb>fa or fb>fc: return maximize(f,low,high,tol) 
    while abs(a-c)>tol: 
        d=a+(c-b); 
        fd=f(d); 
        if d<b: 
            if fb<fd: 
                a=d; fa=fd; 
            else: 
                c=b; b=d 
                fc=fb; fb=fd 
        else:            
            if fd<fb: 
                a=b; fa=fb;  
                b=d; fb=fd 
            else: 
                c=d; fc=fd 
    return (a+c)/2. 

寻找仅 python 代码的解决方案。

请您参考如下方法:

您不能将函数与数字相乘。相反,构建一个使用旧函数并将结果(而不是函数本身)与数字相乘的新函数:

def maximize(f,low,high,tol): 
    return minimize(lambda x: -f(x),low,high,tol)