You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用微积分方法编写Python最小化函数使calc返回0?

解决方法

首先化简calc函数的返回表达式,直接通过代数求解找到让结果为0的x值即可,完全不需要数值优化算法:

  1. 先整理calc中的计算逻辑:
    已知z = b + c + d,把calc的返回值y合并同类项后可以得到:
    y = x*a - z - x*a*0.015
    y = x*a*(1 - 0.015) - z
    y = x*a*0.985 - z
    
  2. 令y=0,解这个一元一次方程求x:
    x*a*0.985 = z
    x = z / (a * 0.985)
    

把这个求解逻辑直接写入minimize函数就行。

完整代码

def calc(x, a, b, c, d):
    z = b + c + d
    y = x * a - z - x * a * 0.015
    return y


def minimize(a, b, c, d):
    z = b + c + d
    return z / (a * 0.985)


A = 100
B = 90
C = 5
D = 1

print(calc(minimize(A, B, C, D), A, B, C, D))  # 输出接近0的浮点数(受浮点运算精度影响)

补充说明

  • 这种代数求解的方式比数值优化更高效,结果也更精确,唯一的误差来自Python的浮点运算精度。
  • 不管z和a的大小关系如何,这个公式都能让calc的返回值趋近于0,不需要额外处理边界情况。

内容的提问来源于stack exchange,提问作者Herberts

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 06:53:24