我想使用这种数学模型。如何找到 Python 在这种情况下使用的
cdf(x)
的精确积分形式?
def model(x, x0, s, A, c):
law = stats.norm(loc=x0, scale=s)
return A * law.cdf(x) + c
不太清楚你的问题在问什么,但对于正态分布,累积分布函数可以在数学上用误差函数来写(https://en.wikipedia.org/wiki/Error_function)
import math
from scipy import stats
def model(x, x0, s, A, c):
law = stats.norm( loc=x0, scale=s )
return A * law.cdf( x ) + c
def normal_CDF( x, x0, s ):
return 0.5 * ( 1 + math.erf( (x-x0)/s/math.sqrt(2) ) )
def alt_model( x, x0, s, A, c ):
return A * normal_CDF( x, x0, s ) + c
x, x0, s, A, c = 5.92, 2.0, 2.0, 10.0, 5.0
print( model( x, x0, s, A, c ) )
print( alt_model( x, x0, s, A, c ) )
输出:
14.750021048517794
14.750021048517796