ベッセル関数¶
In [1]:
import numpy as np
from scipy.special import jv, yv # ベッセル関数
import matplotlib.pyplot as plt
from scipy.signal import find_peaks # ピーク値を探す
import pandas as pd
In [2]:
import scienceplots
plt.style.use(['science', 'notebook'])
In [3]:
#plt.rcParams['font.family'] = 'Times New Roman' # font familyの設定
plt.rcParams['font.family'] = 'serif' # font familyの設定
plt.rcParams['mathtext.fontset'] = 'cm' # math fontの設定
In [4]:
# x: 変数
# n: ベッセル関数の次数
# m: 展開項数
def my_besselj(x, n): # 第1種ベッセル関数の級数展開
eps= 1.0e-12# 収束判定条件
a = 1.0
z = x/2.0
for i in range(n):
a = a*z/(i+1)
y = a
i = 0
while np.abs(a)>=eps:
i = i+1
a = -a*z*z/i/(i+n)
y = y+a
m = i
return y, m
In [5]:
# x: 変数
# n: ベッセル関数の次数
# m: 展開項数
def besselj(x, n): # 第1種ベッセル関数の級数展開と漸近展開
eps=1.0e-12# 収束判定条件
a = 1.0
if np.abs(x)<14.0: # 級数展開
z = x/2.0
for i in range(n):
a = a*z/(i+1)
y = a
i = 0
while np.abs(a)>=eps:
i = i+1
a = -a*z*z/i/(i+n)
y = y+a
m = i
else: # 漸近展開
za = 1.0
zb = (4.0*n*n-1.0)/8.0/x
an = za
bn = zb
i = 0
i2 = 1
while np.abs(zb)>=eps:
i = i+1
i1 = i2+1
i2 = i1+1
za = -zb*(4.0*n*n-(2.0*i1-1.0)*(2.0*i1-1.0))/i1/8.0/x
zb = za*(4.0*n*n-(2.0*i2-1.0)*(2.0*i2-1.0))/i2/8.0/x
an = an+za
bn = bn+zb
m = i
th = x-(2.0*n+1.0)*np.pi/4.0
y = np.sqrt(2.0/np.pi/x)*(an*np.cos(th)-bn*np.sin(th))
return y, m
In [6]:
x0, xmax, nx = 0.0, 30, 151
xx = np.linspace(x0, xmax, nx)
yy1 = np.empty(0)
yy2 = np.empty(0)
yy3 = np.empty(0)
print(f"{'x':>8s} {'m1':>3s} {'my_besselj':>10s}"\
f" {'m2':>3s} {'besselj':>10s} {'scipy.special.jv':>15s}")
for i in range(nx):
y1, m1 = my_besselj(xx[i], 0)
y2, m2 = besselj(xx[i], 0)
y3 = jv(0,xx[i]) # 第1種ベッセル関数
print(f"{xx[i]:8.2f} {m1:3d} {y1:10.7f} {m2:3d}"\
f" {y2:10.7f} {y3:15.11f}")
yy1 = np.append(yy1, y1)
yy2 = np.append(yy2, y2)
yy3 = np.append(yy3, y3)
print("")
x m1 my_besselj m2 besselj scipy.special.jv
0.00 1 1.0000000 1 1.0000000 1.00000000000
0.20 5 0.9900250 5 0.9900250 0.99002497224
0.40 6 0.9603982 6 0.9603982 0.96039822666
0.60 7 0.9120049 7 0.9120049 0.91200486350
0.80 7 0.8462874 7 0.8462874 0.84628735275
1.00 8 0.7651977 8 0.7651977 0.76519768656
1.20 8 0.6711327 8 0.6711327 0.67113274426
1.40 9 0.5668551 9 0.5668551 0.56685512037
1.60 9 0.4554022 9 0.4554022 0.45540216764
1.80 10 0.3399864 10 0.3399864 0.33998641104
2.00 10 0.2238908 10 0.2238908 0.22389077914
2.20 10 0.1103623 10 0.1103623 0.11036226692
2.40 11 0.0025077 11 0.0025077 0.00250768330
2.60 11 -0.0968050 11 -0.0968050 -0.09680495440
2.80 12 -0.1850360 12 -0.1850360 -0.18503603336
3.00 12 -0.2600520 12 -0.2600520 -0.26005195490
3.20 12 -0.3201882 12 -0.3201882 -0.32018816966
3.40 13 -0.3642956 13 -0.3642956 -0.36429559676
3.60 13 -0.3917690 13 -0.3917690 -0.39176898370
3.80 13 -0.4025564 13 -0.4025564 -0.40255641018
4.00 14 -0.3971498 14 -0.3971498 -0.39714980986
4.20 14 -0.3765571 14 -0.3765571 -0.37655705437
4.40 14 -0.3422568 14 -0.3422568 -0.34225679000
4.60 15 -0.2961378 15 -0.2961378 -0.29613781657
4.80 15 -0.2404253 15 -0.2404253 -0.24042532729
5.00 15 -0.1775968 15 -0.1775968 -0.17759677131
5.20 16 -0.1102904 16 -0.1102904 -0.11029043979
5.40 16 -0.0412101 16 -0.0412101 -0.04121010124
5.60 16 0.0269709 16 0.0269709 0.02697088469
5.80 17 0.0917026 17 0.0917026 0.09170256757
6.00 17 0.1506453 17 0.1506453 0.15064525725
6.20 17 0.2017472 17 0.2017472 0.20174722295
6.40 18 0.2433106 18 0.2433106 0.24331060482
6.60 18 0.2740434 18 0.2740434 0.27404336062
6.80 18 0.2930956 18 0.2930956 0.29309560310
7.00 18 0.3000793 18 0.3000793 0.30007927052
7.20 19 0.2950707 19 0.2950707 0.29507069140
7.40 19 0.2785962 19 0.2785962 0.27859623266
7.60 19 0.2516018 19 0.2516018 0.25160183385
7.80 20 0.2154078 20 0.2154078 0.21540780775
8.00 20 0.1716508 20 0.1716508 0.17165080714
8.20 20 0.1222153 20 0.1222153 0.12221530178
8.40 21 0.0691573 21 0.0691573 0.06915726166
8.60 21 0.0146230 21 0.0146230 0.01462299128
8.80 21 -0.0392338 21 -0.0392338 -0.03923380318
9.00 22 -0.0903336 22 -0.0903336 -0.09033361118
9.20 22 -0.1367484 22 -0.1367484 -0.13674837076
9.40 22 -0.1767716 22 -0.1767716 -0.17677157275
9.60 22 -0.2089787 22 -0.2089787 -0.20897871837
9.80 23 -0.2322760 23 -0.2322760 -0.23227602758
10.00 23 -0.2459358 23 -0.2459358 -0.24593576445
10.20 23 -0.2496171 23 -0.2496171 -0.24961706985
10.40 24 -0.2433718 24 -0.2433718 -0.24337175071
10.60 24 -0.2276350 24 -0.2276350 -0.22763504762
10.80 24 -0.2032020 24 -0.2032020 -0.20320196711
11.00 24 -0.1711903 24 -0.1711903 -0.17119030041
11.20 25 -0.1329919 25 -0.1329919 -0.13299193686
11.40 25 -0.0902145 25 -0.0902145 -0.09021450025
11.60 25 -0.0446157 25 -0.0446157 -0.04461567409
11.80 26 0.0019672 26 0.0019672 0.00196717331
12.00 26 0.0476893 26 0.0476893 0.04768931080
12.20 26 0.0907701 26 0.0907701 0.09077012317
12.40 26 0.1295610 26 0.1295610 0.12956102652
12.60 27 0.1626073 27 0.1626073 0.16260727175
12.80 27 0.1887014 27 0.1887014 0.18870135478
13.00 27 0.2069261 27 0.2069261 0.20692610238
13.20 28 0.2166859 28 0.2166859 0.21668592226
13.40 28 0.2177252 28 0.2177252 0.21772517873
13.60 28 0.2101332 28 0.2101332 0.21013316137
13.80 29 0.1943356 29 0.1943356 0.19433563522
14.00 29 0.1710735 9 0.1710735 0.17107347611
14.20 29 0.1413694 9 0.1413694 0.14136938466
14.40 29 0.1064841 9 0.1064841 0.10648411849
14.60 30 0.0678641 8 0.0678641 0.06786406832
14.80 30 0.0270823 8 0.0270823 0.02708231459
15.00 30 -0.0142245 8 -0.0142245 -0.01422447283
15.20 31 -0.0544208 8 -0.0544208 -0.05442079684
15.40 31 -0.0919362 8 -0.0919362 -0.09193622786
15.60 31 -0.1253260 8 -0.1253260 -0.12532596402
15.80 31 -0.1533257 7 -0.1533257 -0.15332574776
16.00 32 -0.1748991 7 -0.1748991 -0.17489907398
16.20 32 -0.1892749 7 -0.1892749 -0.18927494698
16.40 32 -0.1959748 7 -0.1959748 -0.19597482879
16.60 32 -0.1948279 7 -0.1948279 -0.19482785581
16.80 33 -0.1859739 7 -0.1859739 -0.18597386535
17.00 33 -0.1698543 7 -0.1698543 -0.16985425215
17.20 33 -0.1471911 7 -0.1471911 -0.14719114677
17.40 34 -0.1189559 7 -0.1189559 -0.11895585634
17.60 34 -0.0863279 7 -0.0863279 -0.08632791550
17.80 34 -0.0506464 7 -0.0506464 -0.05064644607
18.00 34 -0.0133558 6 -0.0133558 -0.01335580572
18.20 35 0.0240523 6 0.0240523 0.02405229241
18.40 35 0.0600979 6 0.0600979 0.06009789204
18.60 35 0.0933708 6 0.0933708 0.09337081628
18.80 36 0.1225853 6 0.1225853 0.12258534436
19.00 36 0.1466294 6 0.1466294 0.14662943966
19.20 36 0.1646067 6 0.1646067 0.16460665908
19.40 36 0.1758692 6 0.1758692 0.17586917809
19.60 37 0.1800407 6 0.1800407 0.18004072743
19.80 37 0.1770286 6 0.1770286 0.17702864315
20.00 37 0.1670247 6 0.1670247 0.16702466434
20.20 38 0.1504946 6 0.1504946 0.15049455643
20.40 38 0.1281571 6 0.1281571 0.12815707345
20.60 38 0.1009532 6 0.1009532 0.10095318521
20.80 38 0.0700069 6 0.0700069 0.07000686745
21.00 39 0.0365791 6 0.0365791 0.03657907100
21.20 39 0.0020167 6 0.0020167 0.00201673882
21.40 39 -0.0323011 6 -0.0323011 -0.03230108377
21.60 39 -0.0650179 6 -0.0650179 -0.06501790416
21.80 40 -0.0948531 6 -0.0948531 -0.09485305082
22.00 40 -0.1206515 5 -0.1206515 -0.12065147570
22.20 40 -0.1414282 5 -0.1414282 -0.14142816591
22.40 41 -0.1564055 5 -0.1564055 -0.15640546714
22.60 41 -0.1650419 5 -0.1650419 -0.16504191464
22.80 41 -0.1670515 5 -0.1670515 -0.16705151191
23.00 41 -0.1624128 5 -0.1624128 -0.16241278131
23.20 42 -0.1513673 5 -0.1513673 -0.15136731788
23.40 42 -0.1344080 5 -0.1344080 -0.13440799160
23.60 42 -0.1122573 5 -0.1122573 -0.11225734890
23.80 43 -0.0858372 5 -0.0858371 -0.08583714431
24.00 43 -0.0562302 5 -0.0562303 -0.05623027417
24.20 43 -0.0246366 5 -0.0246367 -0.02463667239
24.40 43 0.0076751 5 0.0076750 0.00767504678
24.60 44 0.0394182 5 0.0394183 0.03941826119
24.80 44 0.0693393 5 0.0693393 0.06933931475
25.00 44 0.0962666 5 0.0962668 0.09626678328
25.20 44 0.1191571 5 0.1191571 0.11915710520
25.40 45 0.1371349 5 0.1371348 0.13713480805
25.60 45 0.1495256 5 0.1495258 0.14952578764
25.80 45 0.1558825 5 0.1558824 0.15588238219
26.00 46 0.1559994 5 0.1559993 0.15599931552
26.20 46 0.1499201 5 0.1499200 0.14991995044
26.40 46 0.1379328 5 0.1379327 0.13793267833
26.60 46 0.1205578 5 0.1205577 0.12055766118
26.80 47 0.0985246 5 0.0985245 0.09852452025
27.00 47 0.0727417 5 0.0727419 0.07274191801
27.20 47 0.0442604 5 0.0442603 0.04426029224
27.40 48 0.0142286 5 0.0142293 0.01422926235
27.60 48 -0.0161459 5 -0.0161486 -0.01614857358
27.80 48 -0.0456662 5 -0.0456656 -0.04566560175
28.00 48 -0.0731571 5 -0.0731570 -0.07315701055
28.20 49 -0.0975453 5 -0.0975466 -0.09754657704
28.40 49 -0.1178900 5 -0.1178886 -0.11788862895
28.60 49 -0.1334015 5 -0.1334046 -0.13340455231
28.80 49 -0.1435125 5 -0.1435124 -0.14351244102
29.00 50 -0.1478412 5 -0.1478488 -0.14784876468
29.20 50 -0.1462826 5 -0.1462813 -0.14628125361
29.40 50 -0.1389054 5 -0.1389126 -0.13891255151
29.60 51 -0.1260630 5 -0.1260746 -0.12607455379
29.80 51 -0.1083183 5 -0.1083137 -0.10831371758
30.00 51 -0.0863625 5 -0.0863680 -0.08636798358
In [7]:
df = pd.DataFrame({
'$x$':xx,
'my_besselj':yy1,
'besselj':yy2,
'scipy.special.jv':yy3,
})
df.style.format({"$x$":"{:.3f}"})
Out[7]:
| $x$ | my_besselj | besselj | scipy.special.jv | |
|---|---|---|---|---|
| 0 | 0.000 | 1.000000 | 1.000000 | 1.000000 |
| 1 | 0.200 | 0.990025 | 0.990025 | 0.990025 |
| 2 | 0.400 | 0.960398 | 0.960398 | 0.960398 |
| 3 | 0.600 | 0.912005 | 0.912005 | 0.912005 |
| 4 | 0.800 | 0.846287 | 0.846287 | 0.846287 |
| 5 | 1.000 | 0.765198 | 0.765198 | 0.765198 |
| 6 | 1.200 | 0.671133 | 0.671133 | 0.671133 |
| 7 | 1.400 | 0.566855 | 0.566855 | 0.566855 |
| 8 | 1.600 | 0.455402 | 0.455402 | 0.455402 |
| 9 | 1.800 | 0.339986 | 0.339986 | 0.339986 |
| 10 | 2.000 | 0.223891 | 0.223891 | 0.223891 |
| 11 | 2.200 | 0.110362 | 0.110362 | 0.110362 |
| 12 | 2.400 | 0.002508 | 0.002508 | 0.002508 |
| 13 | 2.600 | -0.096805 | -0.096805 | -0.096805 |
| 14 | 2.800 | -0.185036 | -0.185036 | -0.185036 |
| 15 | 3.000 | -0.260052 | -0.260052 | -0.260052 |
| 16 | 3.200 | -0.320188 | -0.320188 | -0.320188 |
| 17 | 3.400 | -0.364296 | -0.364296 | -0.364296 |
| 18 | 3.600 | -0.391769 | -0.391769 | -0.391769 |
| 19 | 3.800 | -0.402556 | -0.402556 | -0.402556 |
| 20 | 4.000 | -0.397150 | -0.397150 | -0.397150 |
| 21 | 4.200 | -0.376557 | -0.376557 | -0.376557 |
| 22 | 4.400 | -0.342257 | -0.342257 | -0.342257 |
| 23 | 4.600 | -0.296138 | -0.296138 | -0.296138 |
| 24 | 4.800 | -0.240425 | -0.240425 | -0.240425 |
| 25 | 5.000 | -0.177597 | -0.177597 | -0.177597 |
| 26 | 5.200 | -0.110290 | -0.110290 | -0.110290 |
| 27 | 5.400 | -0.041210 | -0.041210 | -0.041210 |
| 28 | 5.600 | 0.026971 | 0.026971 | 0.026971 |
| 29 | 5.800 | 0.091703 | 0.091703 | 0.091703 |
| 30 | 6.000 | 0.150645 | 0.150645 | 0.150645 |
| 31 | 6.200 | 0.201747 | 0.201747 | 0.201747 |
| 32 | 6.400 | 0.243311 | 0.243311 | 0.243311 |
| 33 | 6.600 | 0.274043 | 0.274043 | 0.274043 |
| 34 | 6.800 | 0.293096 | 0.293096 | 0.293096 |
| 35 | 7.000 | 0.300079 | 0.300079 | 0.300079 |
| 36 | 7.200 | 0.295071 | 0.295071 | 0.295071 |
| 37 | 7.400 | 0.278596 | 0.278596 | 0.278596 |
| 38 | 7.600 | 0.251602 | 0.251602 | 0.251602 |
| 39 | 7.800 | 0.215408 | 0.215408 | 0.215408 |
| 40 | 8.000 | 0.171651 | 0.171651 | 0.171651 |
| 41 | 8.200 | 0.122215 | 0.122215 | 0.122215 |
| 42 | 8.400 | 0.069157 | 0.069157 | 0.069157 |
| 43 | 8.600 | 0.014623 | 0.014623 | 0.014623 |
| 44 | 8.800 | -0.039234 | -0.039234 | -0.039234 |
| 45 | 9.000 | -0.090334 | -0.090334 | -0.090334 |
| 46 | 9.200 | -0.136748 | -0.136748 | -0.136748 |
| 47 | 9.400 | -0.176772 | -0.176772 | -0.176772 |
| 48 | 9.600 | -0.208979 | -0.208979 | -0.208979 |
| 49 | 9.800 | -0.232276 | -0.232276 | -0.232276 |
| 50 | 10.000 | -0.245936 | -0.245936 | -0.245936 |
| 51 | 10.200 | -0.249617 | -0.249617 | -0.249617 |
| 52 | 10.400 | -0.243372 | -0.243372 | -0.243372 |
| 53 | 10.600 | -0.227635 | -0.227635 | -0.227635 |
| 54 | 10.800 | -0.203202 | -0.203202 | -0.203202 |
| 55 | 11.000 | -0.171190 | -0.171190 | -0.171190 |
| 56 | 11.200 | -0.132992 | -0.132992 | -0.132992 |
| 57 | 11.400 | -0.090215 | -0.090215 | -0.090215 |
| 58 | 11.600 | -0.044616 | -0.044616 | -0.044616 |
| 59 | 11.800 | 0.001967 | 0.001967 | 0.001967 |
| 60 | 12.000 | 0.047689 | 0.047689 | 0.047689 |
| 61 | 12.200 | 0.090770 | 0.090770 | 0.090770 |
| 62 | 12.400 | 0.129561 | 0.129561 | 0.129561 |
| 63 | 12.600 | 0.162607 | 0.162607 | 0.162607 |
| 64 | 12.800 | 0.188701 | 0.188701 | 0.188701 |
| 65 | 13.000 | 0.206926 | 0.206926 | 0.206926 |
| 66 | 13.200 | 0.216686 | 0.216686 | 0.216686 |
| 67 | 13.400 | 0.217725 | 0.217725 | 0.217725 |
| 68 | 13.600 | 0.210133 | 0.210133 | 0.210133 |
| 69 | 13.800 | 0.194336 | 0.194336 | 0.194336 |
| 70 | 14.000 | 0.171073 | 0.171073 | 0.171073 |
| 71 | 14.200 | 0.141369 | 0.141369 | 0.141369 |
| 72 | 14.400 | 0.106484 | 0.106484 | 0.106484 |
| 73 | 14.600 | 0.067864 | 0.067864 | 0.067864 |
| 74 | 14.800 | 0.027082 | 0.027082 | 0.027082 |
| 75 | 15.000 | -0.014224 | -0.014224 | -0.014224 |
| 76 | 15.200 | -0.054421 | -0.054421 | -0.054421 |
| 77 | 15.400 | -0.091936 | -0.091936 | -0.091936 |
| 78 | 15.600 | -0.125326 | -0.125326 | -0.125326 |
| 79 | 15.800 | -0.153326 | -0.153326 | -0.153326 |
| 80 | 16.000 | -0.174899 | -0.174899 | -0.174899 |
| 81 | 16.200 | -0.189275 | -0.189275 | -0.189275 |
| 82 | 16.400 | -0.195975 | -0.195975 | -0.195975 |
| 83 | 16.600 | -0.194828 | -0.194828 | -0.194828 |
| 84 | 16.800 | -0.185974 | -0.185974 | -0.185974 |
| 85 | 17.000 | -0.169854 | -0.169854 | -0.169854 |
| 86 | 17.200 | -0.147191 | -0.147191 | -0.147191 |
| 87 | 17.400 | -0.118956 | -0.118956 | -0.118956 |
| 88 | 17.600 | -0.086328 | -0.086328 | -0.086328 |
| 89 | 17.800 | -0.050646 | -0.050646 | -0.050646 |
| 90 | 18.000 | -0.013356 | -0.013356 | -0.013356 |
| 91 | 18.200 | 0.024052 | 0.024052 | 0.024052 |
| 92 | 18.400 | 0.060098 | 0.060098 | 0.060098 |
| 93 | 18.600 | 0.093371 | 0.093371 | 0.093371 |
| 94 | 18.800 | 0.122585 | 0.122585 | 0.122585 |
| 95 | 19.000 | 0.146629 | 0.146629 | 0.146629 |
| 96 | 19.200 | 0.164607 | 0.164607 | 0.164607 |
| 97 | 19.400 | 0.175869 | 0.175869 | 0.175869 |
| 98 | 19.600 | 0.180041 | 0.180041 | 0.180041 |
| 99 | 19.800 | 0.177029 | 0.177029 | 0.177029 |
| 100 | 20.000 | 0.167025 | 0.167025 | 0.167025 |
| 101 | 20.200 | 0.150495 | 0.150495 | 0.150495 |
| 102 | 20.400 | 0.128157 | 0.128157 | 0.128157 |
| 103 | 20.600 | 0.100953 | 0.100953 | 0.100953 |
| 104 | 20.800 | 0.070007 | 0.070007 | 0.070007 |
| 105 | 21.000 | 0.036579 | 0.036579 | 0.036579 |
| 106 | 21.200 | 0.002017 | 0.002017 | 0.002017 |
| 107 | 21.400 | -0.032301 | -0.032301 | -0.032301 |
| 108 | 21.600 | -0.065018 | -0.065018 | -0.065018 |
| 109 | 21.800 | -0.094853 | -0.094853 | -0.094853 |
| 110 | 22.000 | -0.120651 | -0.120651 | -0.120651 |
| 111 | 22.200 | -0.141428 | -0.141428 | -0.141428 |
| 112 | 22.400 | -0.156405 | -0.156405 | -0.156405 |
| 113 | 22.600 | -0.165042 | -0.165042 | -0.165042 |
| 114 | 22.800 | -0.167052 | -0.167052 | -0.167052 |
| 115 | 23.000 | -0.162413 | -0.162413 | -0.162413 |
| 116 | 23.200 | -0.151367 | -0.151367 | -0.151367 |
| 117 | 23.400 | -0.134408 | -0.134408 | -0.134408 |
| 118 | 23.600 | -0.112257 | -0.112257 | -0.112257 |
| 119 | 23.800 | -0.085837 | -0.085837 | -0.085837 |
| 120 | 24.000 | -0.056230 | -0.056230 | -0.056230 |
| 121 | 24.200 | -0.024637 | -0.024637 | -0.024637 |
| 122 | 24.400 | 0.007675 | 0.007675 | 0.007675 |
| 123 | 24.600 | 0.039418 | 0.039418 | 0.039418 |
| 124 | 24.800 | 0.069339 | 0.069339 | 0.069339 |
| 125 | 25.000 | 0.096267 | 0.096267 | 0.096267 |
| 126 | 25.200 | 0.119157 | 0.119157 | 0.119157 |
| 127 | 25.400 | 0.137135 | 0.137135 | 0.137135 |
| 128 | 25.600 | 0.149526 | 0.149526 | 0.149526 |
| 129 | 25.800 | 0.155882 | 0.155882 | 0.155882 |
| 130 | 26.000 | 0.155999 | 0.155999 | 0.155999 |
| 131 | 26.200 | 0.149920 | 0.149920 | 0.149920 |
| 132 | 26.400 | 0.137933 | 0.137933 | 0.137933 |
| 133 | 26.600 | 0.120558 | 0.120558 | 0.120558 |
| 134 | 26.800 | 0.098525 | 0.098525 | 0.098525 |
| 135 | 27.000 | 0.072742 | 0.072742 | 0.072742 |
| 136 | 27.200 | 0.044260 | 0.044260 | 0.044260 |
| 137 | 27.400 | 0.014229 | 0.014229 | 0.014229 |
| 138 | 27.600 | -0.016146 | -0.016149 | -0.016149 |
| 139 | 27.800 | -0.045666 | -0.045666 | -0.045666 |
| 140 | 28.000 | -0.073157 | -0.073157 | -0.073157 |
| 141 | 28.200 | -0.097545 | -0.097547 | -0.097547 |
| 142 | 28.400 | -0.117890 | -0.117889 | -0.117889 |
| 143 | 28.600 | -0.133402 | -0.133405 | -0.133405 |
| 144 | 28.800 | -0.143513 | -0.143512 | -0.143512 |
| 145 | 29.000 | -0.147841 | -0.147849 | -0.147849 |
| 146 | 29.200 | -0.146283 | -0.146281 | -0.146281 |
| 147 | 29.400 | -0.138905 | -0.138913 | -0.138913 |
| 148 | 29.600 | -0.126063 | -0.126075 | -0.126075 |
| 149 | 29.800 | -0.108318 | -0.108314 | -0.108314 |
| 150 | 30.000 | -0.086362 | -0.086368 | -0.086368 |
In [8]:
fig = plt.figure() # グラフ領域の作成
plt.grid(color = "gray", linestyle="--")
plt.minorticks_on() # #補助目盛りをつける
plt.xlabel(r"$x$") # x軸のラベル設定
plt.ylabel(r"Bessel function of the first kind $J_0(x)$") # y軸のラベル設定
plt.plot(xx, yy3, '-', label="scipy.special.jv", color='tab:orange')
plt.plot(xx, yy1, 'o', label="series expansion", color='tab:blue')
plt.plot(xx, yy2, '.', label="series/asymptotic expansions", color='tab:red')
plt.legend(ncol=1, loc='upper right', fancybox=False, frameon = True)
fig.savefig('p2_ex06_1.pdf')
In [9]:
fig = plt.figure() # グラフ領域の作成
plt.grid(color = "gray", linestyle="--")
plt.minorticks_on() # #補助目盛りをつける
plt.xlabel(r"$x$") # x軸のラベル設定
plt.ylabel(r"Bessel function of the first kind $J_0(x)$") # y軸のラベル設定
plt.plot(xx[0:nx//3-1], yy1[0:nx//3-1], label="series expansion")
plt.plot(xx[nx//3:2*nx//3-1], yy2[nx//3:2*nx//3-1], label="series/asymptotic expansions")
plt.plot(xx[2*nx//3:nx], yy3[2*nx//3:nx], label="scipy.special.jv")
plt.legend(ncol=1, loc='upper right', fancybox=False, frameon = True)
fig.savefig('p2_ex06_2.pdf')
In [10]:
#yy1
In [11]:
locs, _ = find_peaks(yy1) # ピーク値
locs, _, xx[locs],yy1[locs]
Out[11]:
(array([ 35, 67, 98, 130]),
{},
array([ 7. , 13.4, 19.6, 26. ]),
array([0.30007927, 0.21772518, 0.18004073, 0.15599937]))
In [12]:
locs_min, _ = find_peaks(-yy1) # ピーク値
locs_min, _, xx[locs_min],yy1[locs_min]
Out[12]:
(array([ 19, 51, 82, 114, 145]),
{},
array([ 3.8, 10.2, 16.4, 22.8, 29. ]),
array([-0.40255641, -0.24961707, -0.19597483, -0.1670515 , -0.14784115]))
In [13]:
fig = plt.figure() # グラフ領域の作成
plt.grid(color = "gray", linestyle="--")
plt.minorticks_on() # #補助目盛りをつける
plt.xlabel(r"$x$") # x軸のラベル設定
plt.ylabel(r"Bessel functions") # y軸のラベル設定
plt.ylim(-1.0, 2.0) # y軸範囲の設定
plt.plot(xx, yy1, label=r"$J_0(x)$")
plt.plot(xx[locs],yy1[locs], 'o', label=r"maximum peak of $J_0(x)$")
plt.plot(xx[locs_min],yy1[locs_min], 'o', label=r"minimum peak of $J_0(x)$")
plt.plot(xx, jv(1,xx), label=r"$J_1(x)$")
plt.plot(xx, jv(2,xx), label=r"$J_2(x)$")
plt.legend(ncol=1, loc='upper right', fancybox=False, frameon = True)
fig.savefig('p2_ex06_3.pdf')
In [14]:
fig = plt.figure() # グラフ領域の作成
plt.grid(color = "gray", linestyle="--")
plt.minorticks_on() # #補助目盛りをつける
plt.xlabel(r"$x$") # x軸のラベル設定
plt.ylabel(r"Bessel functions") # y軸のラベル設定
plt.ylim(-2.0, 1.0) # y軸範囲の設定
plt.plot(xx, yv(0,xx), label=r"$Y_0(x)$")
plt.plot(xx, yv(1,xx), label=r"$Y_1(x)$")
plt.plot(xx, yv(2,xx), label=r"$Y_2(x)$")
plt.legend(ncol=1, loc='lower right', fancybox=False, frameon = True)
fig.savefig('p2_ex06_4.pdf')