48 lines
1.3 KiB
Java
48 lines
1.3 KiB
Java
|
|
package com.gunshi.project.hsz.util;
|
||
|
|
|
||
|
|
import org.apache.commons.math3.distribution.GammaDistribution;
|
||
|
|
|
||
|
|
import java.math.BigDecimal;
|
||
|
|
import java.math.MathContext;
|
||
|
|
import java.math.RoundingMode;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @author cxw
|
||
|
|
* @description
|
||
|
|
* @classname BigdecimalUtil.java
|
||
|
|
* @create 2024-11-06, 星期三, 10:33:41
|
||
|
|
*/
|
||
|
|
public class BigdecimalUtil {
|
||
|
|
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @description: 小数指数计算
|
||
|
|
* @param base 底数
|
||
|
|
* @param exponent 指数
|
||
|
|
* @return: java.math.BigDecimal
|
||
|
|
* @auther: cxw
|
||
|
|
* @date: 2024-11-06, 周三, 10:34:47
|
||
|
|
*/
|
||
|
|
public static BigDecimal bigDecimalExponentiation(BigDecimal base, double exponent) {
|
||
|
|
BigDecimal result = BigDecimal.valueOf(Math.pow(base.doubleValue(), exponent)).round(new MathContext(10, RoundingMode.HALF_UP));
|
||
|
|
return result;
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @description: 计算x的伽马函数
|
||
|
|
* @param x
|
||
|
|
* @return: java.math.BigDecimal
|
||
|
|
* @auther: cxw
|
||
|
|
* @date: 2024-11-06, 周三, 11:31:24
|
||
|
|
*/
|
||
|
|
public static double gammaDist(double x, double alpha, double beta, boolean cumulative) {
|
||
|
|
GammaDistribution gammaDist = new GammaDistribution(alpha, 1/beta);
|
||
|
|
if (cumulative) {
|
||
|
|
return gammaDist.cumulativeProbability(x);
|
||
|
|
} else {
|
||
|
|
return gammaDist.density(x);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|