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

Python Numpy计算特定数学公式结果与预期不符问题排查

排查高斯分布相关公式的Python实现错误

需要计算的数学公式为:

b + a × exp(-(ln t - m)²/(2s²)) / (t × s × √(2π))

已知参数:

t=14.4022468115
a=2255.5422194535317
b=8.75408541256545
m=2.853672849711247
s=0.4316116619435228

使用口袋计算器、Desmos等工具计算得到预期结果:140.636091727

但以下Python Numpy实现的函数:

import numpy as np

def func(t, a, b, m, s): 
    return b + a*(np.exp((-1)*((np.log(t)-m)**2)/(2*s**2))) / (t)*(s)*np.sqrt(2*np.pi)

调用 func(t,a,b,m,s) 得到结果:163.1201224885765,与预期不符。

问题原因

Python中乘法和除法为同级运算,执行顺序从左到右。原函数的表达式中,/(t)*(s)*np.sqrt(2*np.pi) 会被解析为 (a*exp(...)/t) * s * sqrt(...),而不是公式要求的 a*exp(...) / (t*s*sqrt(...)),导致分母计算错误。

修正后的函数

给整个分母添加括号,确保运算顺序正确:

import numpy as np

def func(t, a, b, m, s): 
    return b + a * np.exp(-((np.log(t)-m)**2)/(2*s**2)) / (t * s * np.sqrt(2*np.pi))

修正后调用函数,结果与预期一致:140.636091727

内容的提问来源于stack exchange,提问作者温泽海

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 13:27:19