已知某正态分布μ=550, 落在 518~560 区间的累计概率为 80%, 求σ
有没有大神给出求解公式?
或使用Java
求解
1
Ultraman 2021-02-21 15:45:23 +08:00
|
4
ipwx 2021-02-21 17:12:54 +08:00
给楼主一个思路:用 Erf 写出你的方程,然后用牛顿迭代法解。
|
5
ipwx 2021-02-21 17:13:29 +08:00
|
6
ipwx 2021-02-21 17:15:02 +08:00 1
顺便多说一嘴:如果是单边或者对称的就容易多了。因为单边的话,把 erf 函数放到一边,然后直接用 erf 反函数就行了。C 语言和 numpy 都有 erf 和 erf 反函数的数值实现的。。。可惜你是双边不对称
|
8
lcdtyph 2021-02-21 17:27:21 +08:00 2
能调 mathematica 的话可以直接直接
G[x_] := CDF[NormalDistribution[550, sigma], x]; FindRoot[G[560] - G[518] == 0.8 , {sigma, 1}] 解出来 sigma=11.7233 |
12
SharkU 2021-02-21 21:56:40 +08:00 1
自己写的 Matlab 代码
% main script tolerance = 1e-8; residual = Inf; sigma = 15; h = 1e-6; while residual > tolerance der = (cdfeq(sigma+h) - cdfeq(sigma-h))/h; sigma = sigma -cdfeq(sigma)/der residual = abs(cdfeq(sigma)); end % cdfeq function function output = cdfeq( sigma) % 方程: f(sigma) - 0.8 = 0 output = normcdf(560, 550, sigma) - normcdf(518, 550, sigma) - 0.8; end |