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

如何使用Python求解指定x取值范围内方程Fp的最大值

Python计算指定区间内方程最大值的实现方法

问题排查

你原有代码报错的核心原因是max()函数要求传入可迭代对象(如列表、元组等)才能计算最大值,而你在循环内部每次仅生成单个Fp数值,直接对单个数值调用max()不符合函数参数要求。

正确实现方式

方法1:全量存储后计算最大值

先把所有x取值对应的Fp、Td值存入列表,再统一求最大值,逻辑直观易理解:

L = range(1, 11)
fp_list = []
td_list = []

for x in L:
    Fp = 1000 + 9*(x**2) - 183*x
    Td = 20 - 0.12*(x**2) + 4.2*x
    fp_list.append(Fp)
    td_list.append(Td)
    print(f"x={x}  Fp={Fp}  Td={Td}")

max_fp = max(fp_list)
match_index = fp_list.index(max_fp)
match_x = L[match_index]
match_td = td_list[match_index]
print(f"\nFp最大值:{max_fp},对应x取值:{match_x},对应Td值:{match_td}")

方法2:动态更新最大值

循环过程中直接记录当前最大值,不需要额外存储全量数据,适合取值范围大的场景:

L = range(1, 11)
max_fp = float('-inf')
match_x = None
match_td = None

for x in L:
    Fp = 1000 + 9*(x**2) - 183*x
    Td = 20 - 0.12*(x**2) + 4.2*x
    print(f"x={x}  Fp={Fp}  Td={Td}")
    if Fp > max_fp:
        max_fp = Fp
        match_x = x
        match_td = Td

print(f"\nFp最大值:{max_fp},对应x取值:{match_x},对应Td值:{match_td}")

结果说明

目标方程是开口向上的二次函数,对称轴为x=183/(2*9)≈10.17,在1~10的取值区间内函数单调递减,因此最大值出现在x=1时,数值为826。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 21:45:02