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

使用scipy.optimize.fsolve求解数组缩放因子遇问题求指导

问题分析与解决办法

你的需求本质是求解线性方程,用fsolve不是最优选择,甚至会因为函数的线性特性导致迭代逻辑不触发,直接返回初始值。

直接解法(最优)

既然目标是找到x满足sum(array * x) = Target_value,变形后可得:
x = Target_value / sum(array)
直接计算即可,不需要用数值优化方法,代码如下:

Target_value = 1169308000
# 替换为你的实际数组
array = [...]
scaling_factor = Target_value / sum(array)

若一定要用fsolve的修正方案

如果坚持用scipy.optimize.fsolve,需要适配函数的输入输出格式,避免迭代提前终止。修正后的代码:

from scipy.optimize import fsolve

Target_value = 1169308000
array = [...]  # 替换为你的实际数组

def func(x):
    # 将返回值转为数组形式,适配fsolve的参数要求
    return [sum(array * x) - Target_value]

# 可尝试调整初始值或增加迭代次数
scaling_factor = fsolve(func, 0.1, maxfev=1000)

不过这种方式完全没必要,直接计算是更高效准确的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 14:14:32