このページは、nAGライブラリのJupyterノートブックExampleの日本語翻訳版です。オリジナルのノートブックはインタラクティブに操作することができます。
Mathieu関数の特性値の精度
Mathieu関数を正確に計算することは難しく、この主題に関する多くの論文があります。ここでは、StackOverflowの質問から取り上げた例を示し、SciPyの実装が時折苦戦することを示します。nAGの実装は、右側のプロットに示されているように正しい結果を計算します。
%matplotlib inline
import numpy as np
import scipy as sp
import scipy.special as spfun
from naginterfaces.library import specfun
from matplotlib import pyplot as plt
= 150 #E_rec
uplim = 4000
Npts = 10
Nstates = np.linspace(0, uplim/4.0, Npts)
q = np.zeros([Npts,Nstates])
EA = np.zeros([Npts,Nstates])
EB = 4*q
U
=(15,8))
plt.figure(figsize1,2,1)
plt.subplot('Using SciPy')
plt.title(
for i in range(Nstates):
= spfun.mathieu_a(i,q)
a = spfun.mathieu_b(i+1,q)
b = a + 2*q
EA[:,i] = b + 2*q
EB[:,i]
plt.fill_between(U, EA[:,i], EB[:,i])
1,2,2)
plt.subplot('Using nAG')
plt.title(
for i in range(Nstates):
= [specfun.mathieu_ang_periodic_real(ordval=i, q=qi, parity=0, mode=3).a for qi in q]
a = [specfun.mathieu_ang_periodic_real(ordval=i+1, q=qi, parity=1, mode=3).a for qi in q]
b = a + 2*q
EA[:,i] = b + 2*q
EB[:,i]
plt.fill_between(U, EA[:,i], EB[:,i])
plt.show()

バージョン情報
sp.__version__
'1.8.0'
import naginterfaces as ni
ni.__version__
'28.3.0.1'