本文整理汇总了Python中scipy.special.wofz方法的典型用法代码示例。如果您正苦于以下问题:Python special.wofz方法的具体用法?Python special.wofz怎么用?Python special.wofz使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类scipy.special
的用法示例。
在下文中一共展示了special.wofz方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: BB
# 需要导入模块: from scipy import special [as 别名]
# 或者: from scipy.special import wofz [as 别名]
def BB(ω): #ω: eV
ε = 1-Ωp**2/(ω*(ω+1j*Γ0))
α = (ω**2+1j*ω*Γ1)**.5
za = (α-ω1)/(2**.5*σ1)
zb = (α+ω1)/(2**.5*σ1)
ε += 1j*π**.5*f1*ωp**2 / (2**1.5*α*σ1) * (w(za)+w(zb)) #χ1
α = (ω**2+1j*ω*Γ2)**.5
za = (α-ω2)/(2**.5*σ2)
zb = (α+ω2)/(2**.5*σ2)
ε += 1j*π**.5*f2*ωp**2 / (2**1.5*α*σ2) * (w(za)+w(zb)) #χ2
α = (ω**2+1j*ω*Γ3)**.5
za = (α-ω3)/(2**.5*σ3)
zb = (α+ω3)/(2**.5*σ3)
ε += 1j*π**.5*f3*ωp**2 / (2**1.5*α*σ3) * (w(za)+w(zb)) #χ3
α = (ω**2+1j*ω*Γ4)**.5
za = (α-ω4)/(2**.5*σ4)
zb = (α+ω4)/(2**.5*σ4)
ε += 1j*π**.5*f4*ωp**2 / (2**1.5*α*σ4) * (w(za)+w(zb)) #χ4
return ε
示例2: BB
# 需要导入模块: from scipy import special [as 别名]
# 或者: from scipy.special import wofz [as 别名]
def BB(ω): #ω: eV
ε = 1-Ωp**2/(ω*(ω+1j*Γ0))
α = (ω**2+1j*ω*Γ1)**.5
za = (α-ω1)/(2**.5*σ1)
zb = (α+ω1)/(2**.5*σ1)
ε += 1j*π**.5*f1*ωp**2 / (2**1.5*α*σ1) * (w(za)+w(zb)) #χ1
α = (ω**2+1j*ω*Γ2)**.5
za = (α-ω2)/(2**.5*σ2)
zb = (α+ω2)/(2**.5*σ2)
ε += 1j*π**.5*f2*ωp**2 / (2**1.5*α*σ2) * (w(za)+w(zb)) #χ2
α = (ω**2+1j*ω*Γ3)**.5
za = (α-ω3)/(2**.5*σ3)
zb = (α+ω3)/(2**.5*σ3)
ε += 1j*π**.5*f3*ωp**2 / (2**1.5*α*σ3) * (w(za)+w(zb)) #χ3
α = (ω**2+1j*ω*Γ4)**.5
za = (α-ω4)/(2**.5*σ4)
zb = (α+ω4)/(2**.5*σ4)
ε += 1j*π**.5*f4*ωp**2 / (2**1.5*α*σ4) * (w(za)+w(zb)) #χ4
α = (ω**2+1j*ω*Γ5)**.5
za = (α-ω5)/(2**.5*σ5)
zb = (α+ω5)/(2**.5*σ5)
ε += 1j*π**.5*f5*ωp**2 / (2**1.5*α*σ5) * (w(za)+w(zb)) #χ5
return ε
示例3: DopplerWind
# 需要导入模块: from scipy import special [as 别名]
# 或者: from scipy.special import wofz [as 别名]
def DopplerWind(Temp, FreqGrid, Para, wind_v, shift_direction='red'):
u"""#doppler width
#Para[transient Freq[Hz], relative molecular mass[g/mol]]"""
# step1 = Para[0]/c*(2.*R*gct/(Para[1]*1.e-3))**0.5
# outy = np.exp(-(Freq-Para[0])**2/step1**2) / (step1*(np.pi**0.5))
#wind_v = speed[:,10]
#Temp=temp[10]
#FreqGrid = Fre_range_i[0]
wind = wind_v.reshape(wind_v.size, 1)
FreqGrid = FreqGrid.reshape(1, FreqGrid.size)
deltav = Para[0]*wind/c
if shift_direction.lower() == 'red':
D_effect = (deltav)
elif shift_direction.lower() == 'blue':
D_effect = (-deltav)
else:
raise ValueError('Set shift direction to "red" or "blue".')
# step1 = Para[0]/c*(2.*R*Temp*np.log(2.)/(Para[1]*1.e-3))**0.5 # HWHM
# outy = np.exp(-np.log(2.)*(FreqGrid-Para[0])**2/step1**2) *\
# (np.log(2.)/np.pi)**0.5/step1
# outy_d = np.exp(-np.log(2.)*(FreqGrid+D_effect-Para[0])**2/step1**2) *\
# (np.log(2.)/np.pi)**0.5/step1
GD = np.sqrt(2*k*ac/Para[1]*Temp)/c*Para[0]
step1 = GD
outy_d = wofz((FreqGrid+D_effect-Para[0])/GD).real / np.sqrt(np.pi) / GD
#plot(FreqGrid, outy)
#plot(FreqGrid, outy_d[:,0])
return outy_d
示例4: test_wofz_nan_inf
# 需要导入模块: from scipy import special [as 别名]
# 或者: from scipy.special import wofz [as 别名]
def test_wofz_nan_inf(self):
vals = [np.nan, -np.inf, np.inf]
expected = [np.nan + np.nan * 1.j, 0.-0.j, 0.+0.j]
assert_allclose(special.wofz(vals), expected, rtol=1e-15)
示例5: test_w_f_approx
# 需要导入模块: from scipy import special [as 别名]
# 或者: from scipy.special import wofz [as 别名]
def test_w_f_approx(self):
"""
Test the `w_f_approx()` method with values computed using
`scipy.special.wofz()`.
:return:
:rtype:
"""
x = np.logspace(-3., 3., 100)
y = np.logspace(-3., 3., 100)
X, Y = np.meshgrid(x, y)
w_f_app = self.gaussian_kappa_ellipse.w_f_approx(X+1j*Y)
w_f_scipy = wofz(X+1j*Y)
npt.assert_allclose(w_f_app.real, w_f_scipy.real, rtol=4e-5, atol=0)
npt.assert_allclose(w_f_app.imag, w_f_scipy.imag, rtol=4e-5, atol=0)
# check `derivatives()` method with and without `scipy.special.wofz()`
x = 1.
y = 1.
e1, e2 = 5e-5, 0
sigma = 1.
amp = 2.
# with `scipy.special.wofz()`
gauss_scipy = GaussianEllipseKappa(use_scipy_wofz=True)
f_x_sp, f_y_sp = gauss_scipy.derivatives(x, y, amp, sigma, e1, e2)
# with `GaussEllipseKappa.w_f_approx()`
gauss_approx = GaussianEllipseKappa(use_scipy_wofz=False)
f_x_ap, f_y_ap = gauss_approx.derivatives(x, y, amp, sigma, e1, e2)
npt.assert_almost_equal(f_x_sp, f_x_ap, decimal=4)
npt.assert_almost_equal(f_y_sp, f_y_ap, decimal=4)
示例6: test_wofz
# 需要导入模块: from scipy import special [as 别名]
# 或者: from scipy.special import wofz [as 别名]
def test_wofz(self):
z = [complex(624.2,-0.26123), complex(-0.4,3.), complex(0.6,2.),
complex(-1.,1.), complex(-1.,-9.), complex(-1.,9.),
complex(-0.0000000234545,1.1234), complex(-3.,5.1),
complex(-53,30.1), complex(0.0,0.12345),
complex(11,1), complex(-22,-2), complex(9,-28),
complex(21,-33), complex(1e5,1e5), complex(1e14,1e14)
]
w = [
complex(-3.78270245518980507452677445620103199303131110e-7,
0.000903861276433172057331093754199933411710053155),
complex(0.1764906227004816847297495349730234591778719532788,
-0.02146550539468457616788719893991501311573031095617),
complex(0.2410250715772692146133539023007113781272362309451,
0.06087579663428089745895459735240964093522265589350),
complex(0.30474420525691259245713884106959496013413834051768,
-0.20821893820283162728743734725471561394145872072738),
complex(7.317131068972378096865595229600561710140617977e34,
8.321873499714402777186848353320412813066170427e34),
complex(0.0615698507236323685519612934241429530190806818395,
-0.00676005783716575013073036218018565206070072304635),
complex(0.3960793007699874918961319170187598400134746631,
-5.593152259116644920546186222529802777409274656e-9),
complex(0.08217199226739447943295069917990417630675021771804,
-0.04701291087643609891018366143118110965272615832184),
complex(0.00457246000350281640952328010227885008541748668738,
-0.00804900791411691821818731763401840373998654987934),
complex(0.8746342859608052666092782112565360755791467973338452,
0.),
complex(0.00468190164965444174367477874864366058339647648741,
0.0510735563901306197993676329845149741675029197050),
complex(-0.0023193175200187620902125853834909543869428763219,
-0.025460054739731556004902057663500272721780776336),
complex(9.11463368405637174660562096516414499772662584e304,
3.97101807145263333769664875189354358563218932e305),
complex(-4.4927207857715598976165541011143706155432296e281,
-2.8019591213423077494444700357168707775769028e281),
complex(2.820947917809305132678577516325951485807107151e-6,
2.820947917668257736791638444590253942253354058e-6),
complex(2.82094791773878143474039725787438662716372268e-15,
2.82094791773878143474039725773333923127678361e-15)
]
assert_func_equal(cephes.wofz, w, z, rtol=1e-13)
示例7: add_voigt
# 需要导入模块: from scipy import special [as 别名]
# 或者: from scipy.special import wofz [as 别名]
def add_voigt(d,DoppTemp,atomMass,wavenumber,gamma,voigtwidth,
ltransno,lenergy,lstrength,
rtransno,renergy,rstrength,
ztransno,zenergy,zstrength):
xpts = len(d)
npts = 2*voigtwidth+1
detune = 2.0*pi*1.0e6*(arange(npts)-voigtwidth) # Angular detuning (2pi Hz)
wavenumber = wavenumber + detune/c # Allow the wavenumber to change (large detuning)
u = sqrt(2.0*kB*DoppTemp/atomMass)
ku = wavenumber*u
# Fadeeva function:
a = gamma/ku
b = detune/ku
y = 1.0j*(0.5*sqrt(pi)/ku)*wofz(b+0.5j*a)
ab = y.imag
disp = y.real
#interpolate lineshape functions
f_ab = interp1d(detune,ab)
f_disp = interp1d(detune,disp)
#Add contributions from all transitions to user defined detuning axis
lab = zeros(xpts)
ldisp = zeros(xpts)
for line in range(ltransno+1):
xc = lenergy[line]
lab += lstrength[line]*f_ab(2.0*pi*(d-xc)*1.0e6)
ldisp += lstrength[line]*f_disp(2.0*pi*(d-xc)*1.0e6)
rab = zeros(xpts)
rdisp = zeros(xpts)
for line in range(rtransno+1):
xc = renergy[line]
rab += rstrength[line]*f_ab(2.0*pi*(d-xc)*1.0e6)
rdisp += rstrength[line]*f_disp(2.0*pi*(d-xc)*1.0e6)
zab = zeros(xpts)
zdisp = zeros(xpts)
for line in range(ztransno+1):
xc = zenergy[line]
zab += zstrength[line]*f_ab(2.0*pi*(d-xc)*1.0e6)
zdisp += zstrength[line]*f_disp(2.0*pi*(d-xc)*1.0e6)
return lab, ldisp, rab, rdisp, zab, zdisp