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

咨询:将指定数学公式转换为JavaScript代码的问题排查

排查你的对数正态分布PDF代码错误

首先,先明确一下:你写的公式看起来是对数正态分布的概率密度函数(PDF),但原公式的括号位置可能有点歧义,正确的数学表达式应该是:

F(x) = \frac{1}{x \cdot \sigma \cdot \sqrt{2\pi}} \cdot e^{-\frac{(\ln(x) - \mu)2}{2\sigma2}}

你的JavaScript代码核心错误是把指数项放到了分母里,而实际上它应该是和前面的分式相乘的关系。我们来一步步拆解问题:

你的代码问题点

  • 公式结构错误:原公式中,e^-(ln(x)-µ)²/(2σ²)是整个表达式的乘数,但你的代码把它写在了分母的除法运算中,导致整个计算结果变成了正确值的倒数。
  • 冗余的负号平方:Math.pow(-(Math.log(x)-0.1136),2)里的负号完全没必要,因为平方运算会消除正负差异,不过这不会导致错误,只是多余代码。

修正后的代码

// 定义参数:σ=0.24,μ=0.1136
const sigma = 0.24;
const mu = 0.1136;
// 计算对数正态分布PDF
const fx = (1 / (x * sigma * Math.sqrt(2 * Math.PI))) * Math.pow(Math.E, -Math.pow(Math.log(x) - mu, 2) / (2 * Math.pow(sigma, 2)));

或者用更简洁的写法(利用Math.exp替代Math.pow(Math.E, ...),效率更高):

const sigma = 0.24;
const mu = 0.1136;
const fx = (1 / (x * sigma * Math.sqrt(2 * Math.PI))) * Math.exp(-Math.pow(Math.log(x) - mu, 2) / (2 * sigma * sigma));

逻辑对应说明

  • 1 / (x * sigma * Math.sqrt(2 * Math.PI)) 对应公式中的 \frac{1}{x \cdot \sigma \cdot \sqrt{2\pi}}
  • Math.exp(-Math.pow(Math.log(x) - mu, 2) / (2 * sigma²)) 对应公式中的 e^{-\frac{(\ln(x) - \mu)^2}{2\sigma^2}}

这样修正后,代码就完全匹配对数正态分布的PDF公式了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:00:48