本文整理汇总了Python中scipy.special.exp1方法的典型用法代码示例。如果您正苦于以下问题:Python special.exp1方法的具体用法?Python special.exp1怎么用?Python special.exp1使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类scipy.special
的用法示例。
在下文中一共展示了special.exp1方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: imp_lsc
# 需要导入模块: from scipy import special [as 别名]
# 或者: from scipy.special import exp1 [as 别名]
def imp_lsc(self, gamma, sigma, w, dz):
"""
gamma - energy
sigma - transverse RMS size of the beam
w - omega = 2*pi*f
"""
eps = 1e-16
ass = 40.0
alpha = w * sigma / (gamma * speed_of_light)
alpha2 = alpha * alpha
inda = np.where(alpha2 > ass)[0]
ind = np.where((alpha2 <= ass) & (alpha2 >= eps))[0]
T = np.zeros(w.shape)
T[ind] = np.exp(alpha2[ind]) *exp1(alpha2[ind])
x= alpha2[inda]
k = 0
for i in range(10):
k += (-1) ** i * factorial(i) / (x ** (i + 1))
T[inda] = k
Z = 1j * Z0 / (4 * pi * speed_of_light*gamma**2) * w * T * dz
return Z # --> Omm/m
示例2: test_e1_complex
# 需要导入模块: from scipy import special [as 别名]
# 或者: from scipy.special import exp1 [as 别名]
def test_e1_complex(self):
# E_1 oscillates as Im[z] -> +- inf, so limit range
assert_mpmath_equal(sc.exp1,
mpmath.e1,
[ComplexArg(complex(-np.inf, -1e8), complex(np.inf, 1e8))],
rtol=1e-11)
# Check cross-over reqion
assert_mpmath_equal(sc.exp1,
mpmath.e1,
(np.linspace(-50, 50, 171)[:,None]
+ np.r_[0, np.logspace(-3, 2, 61),
-np.logspace(-3, 2, 11)]*1j
).ravel(),
rtol=1e-11)
assert_mpmath_equal(sc.exp1,
mpmath.e1,
(np.linspace(-50, -35, 10000) + 0j),
rtol=1e-11)
示例3: test_e1_complex
# 需要导入模块: from scipy import special [as 别名]
# 或者: from scipy.special import exp1 [as 别名]
def test_e1_complex(self):
# E_1 oscillates as Im[z] -> +- inf, so limit range
assert_mpmath_equal(sc.exp1,
mpmath.e1,
[ComplexArg(complex(-np.inf, -1e8), complex(np.inf, 1e8))],
rtol=1e-11)
# Check cross-over region
assert_mpmath_equal(sc.exp1,
mpmath.e1,
(np.linspace(-50, 50, 171)[:, None] +
np.r_[0, np.logspace(-3, 2, 61),
-np.logspace(-3, 2, 11)]*1j).ravel(),
rtol=1e-11)
assert_mpmath_equal(sc.exp1,
mpmath.e1,
(np.linspace(-50, -35, 10000) + 0j),
rtol=1e-11)
示例4: inc_gamma
# 需要导入模块: from scipy import special [as 别名]
# 或者: from scipy.special import exp1 [as 别名]
def inc_gamma(s, x):
r"""The (upper) incomplete gamma function.
Given by: :math:`\Gamma(s,x) = \int_x^{\infty} t^{s-1}\,e^{-t}\,{\rm d}t`
Parameters
----------
s : :class:`float`
exponent in the integral
x : :class:`numpy.ndarray`
input values
"""
if np.isclose(s, 0):
return sps.exp1(x)
if np.isclose(s, np.around(s)) and s < -0.5:
return x ** (s - 1) * sps.expn(int(1 - np.around(s)), x)
if s < 0:
return (inc_gamma(s + 1, x) - x ** s * np.exp(-x)) / s
return sps.gamma(s) * sps.gammaincc(s, x)
示例5: complete_gamma
# 需要导入模块: from scipy import special [as 别名]
# 或者: from scipy.special import exp1 [as 别名]
def complete_gamma(a, z):
"""
return 'complete' gamma function
"""
return exp1(z) if a == 0 else gamma(a)*gammaincc(a, z)
示例6: test_e1
# 需要导入模块: from scipy import special [as 别名]
# 或者: from scipy.special import exp1 [as 别名]
def test_e1(self):
assert_mpmath_equal(sc.exp1,
mpmath.e1,
[Arg()])
示例7: mmse_lsa
# 需要导入模块: from scipy import special [as 别名]
# 或者: from scipy.special import exp1 [as 别名]
def mmse_lsa(xi, gamma):
"""
Computes the MMSE-LSA gain function.
Argument/s:
xi - a priori SNR.
gamma - a posteriori SNR.
Returns:
MMSE-LSA gain function.
"""
nu = np.multiply(np.divide(xi, np.add(1, xi)), gamma)
return np.multiply(np.divide(xi, np.add(1, xi)), np.exp(np.multiply(0.5, exp1(nu)))) # MMSE-LSA gain function.
示例8: test_e1
# 需要导入模块: from scipy import special [as 别名]
# 或者: from scipy.special import exp1 [as 别名]
def test_e1(self):
assert_mpmath_equal(sc.exp1,
mpmath.e1,
[Arg()], rtol=1e-14)
示例9: exp_int
# 需要导入模块: from scipy import special [as 别名]
# 或者: from scipy.special import exp1 [as 别名]
def exp_int(s, x):
r"""The exponential integral :math:`E_s(x)`.
Given by: :math:`E_s(x) = \int_1^\infty \frac{e^{-xt}}{t^s}\,\mathrm dt`
Parameters
----------
s : :class:`float`
exponent in the integral (should be > -100)
x : :class:`numpy.ndarray`
input values
"""
if np.isclose(s, 1):
return sps.exp1(x)
if np.isclose(s, np.around(s)) and s > -0.5:
return sps.expn(int(np.around(s)), x)
x = np.array(x, dtype=np.double)
x_neg = x < 0
x = np.abs(x)
x_compare = x ** min((10, max(((1 - s), 1))))
res = np.empty_like(x)
# use asymptotic behavior for zeros
x_zero = np.isclose(x_compare, 0, atol=1e-20)
x_inf = x > max(30, -s / 2) # function is like exp(-x)*(1/x + s/x^2)
x_fin = np.logical_not(np.logical_or(x_zero, x_inf))
x_fin_pos = np.logical_and(x_fin, np.logical_not(x_neg))
if s > 1.0: # limit at x=+0
res[x_zero] = 1.0 / (s - 1.0)
else:
res[x_zero] = np.inf
res[x_inf] = np.exp(-x[x_inf]) * (x[x_inf] ** -1 - s * x[x_inf] ** -2)
res[x_fin_pos] = inc_gamma(1 - s, x[x_fin_pos]) * x[x_fin_pos] ** (s - 1)
res[x_neg] = np.nan # nan for x < 0
return res
示例10: test_exponential_integral
# 需要导入模块: from scipy import special [as 别名]
# 或者: from scipy.special import exp1 [as 别名]
def test_exponential_integral(x, y):
z = x + 1j*y
# Compare with Scipy implementation
assert np.isclose(E1(z), exp1(z), rtol=1e-3)
# Test property (A3.5) of the function according to [Del, p.367].
if y != 0.0:
assert np.isclose(E1(np.conjugate(z)), np.conjugate(E1(z)), rtol=1e-3)
# BROKEN...
# def derivative_of_complex_function(f, z, **kwargs):
# direction = 1
# return derivative(lambda eps: f(z + eps*direction), 0.0, **kwargs)
# if abs(x) > 1 and abs(y) > 1:
# assert np.isclose(
# derivative_of_complex_function(Delhommeau_f90.initialize_green_wave.gg, z),
# Delhommeau_f90.initialize_green_wave.gg(z) - 1.0/z,
# atol=1e-2)
# CHECK OF THE THEORY, NOT THE CODE ITSELF
# Not necessary to run every time...
#
# @given(r=floats(min_value=0, max_value=1e2),
# z=floats(min_value=-16, max_value=-1),
# k=floats(min_value=0.1, max_value=10)
# )
# def test_zeta(r, z, k):
# """Check expression k/π ∫ 1/ζ(θ) dθ = - 1/r """
# def one_over_zeta(theta):
# return np.real(1/(k*(z + 1j*r*np.cos(theta))))
# int_one_over_zeta, *_ = quad(one_over_zeta, -pi/2, pi/2)
# assert np.isclose(k/pi * int_one_over_zeta,
# -1/(np.sqrt(r**2 + z**2)),
# rtol=1e-4)