feat: normal distribution
This commit is contained in:
@@ -30,16 +30,17 @@ public class NormalDistribution {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static BigDecimal nd(BigDecimal mu, BigDecimal sigma, BigDecimal x) {
|
public static BigDecimal nd(BigDecimal mu, BigDecimal sigma, BigDecimal x) {
|
||||||
// \frac{1}{\sigma \times \sqrt{2\times \pi}}
|
// p_a=\frac{1}{\sigma \times \sqrt{2\times \pi}}
|
||||||
BigDecimal pa = BigDecimal.ONE.divide(
|
BigDecimal pa = BigDecimal.ONE.divide(
|
||||||
sigma.multiply(MathUtil.sqrt(BigDecimal.valueOf(2).multiply(MathUtil.PI), 100))
|
sigma.multiply(MathUtil.sqrt(BigDecimal.valueOf(2).multiply(MathUtil.PI), 100))
|
||||||
, 100, RoundingMode.HALF_UP
|
, 100, RoundingMode.HALF_UP
|
||||||
);
|
);
|
||||||
// \frac{(x-\mu)^2}{2\times \sigma^2}
|
// p_b=\frac{(x-\mu)^2}{2\times \sigma^2}
|
||||||
BigDecimal pb = x.subtract(mu).pow(2).divide(
|
BigDecimal pb = x.subtract(mu).pow(2).divide(
|
||||||
BigDecimal.valueOf(2).multiply(sigma.pow(2))
|
BigDecimal.valueOf(2).multiply(sigma.pow(2))
|
||||||
, 100, RoundingMode.HALF_UP
|
, 100, RoundingMode.HALF_UP
|
||||||
);
|
);
|
||||||
|
// f(x)=p_a\times e^{-p_b}
|
||||||
return pa.multiply(MathUtil.pow(MathUtil.E, BigDecimal.ZERO.subtract(pb)))
|
return pa.multiply(MathUtil.pow(MathUtil.E, BigDecimal.ZERO.subtract(pb)))
|
||||||
.setScale(100, RoundingMode.HALF_UP);
|
.setScale(100, RoundingMode.HALF_UP);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user