2019년 2월 24일 일요일

파이썬 Sympy 기호수학 - 5. Bessel 함수

파이썬 Sympy 기호수학 - 5. Bessel 함수

SymPy 기호수학 - 응용 5. Bessel 함수

sympy 라이브러리를 불러오고, 사용할 기호 변수를 선언한다. 출력을 LaTex 수식으로 나타내고, 맷플롯립 모듈을 불러온다.

In [1]:
from sympy import *
          
x, y, z, t = symbols('x y z t')
f, g, h = symbols('f, g, h', cls=Function)

init_printing()
%matplotlib inline 

Bessel 함수

Bessel 함수는 Bessel 방정식을 만족하는 해이다.

$${{x}^{2}}\,{y}'' \,\,+\,\, x\,{y}' \,\,+\,\, \left( \,{{x}^{2}}-{{\nu }^{2}} \right) y\,\,\,=\,\,\, 0 \qquad \quad \nu \ge 0$$

Bessel 방정식은 편미분 방정식을 원통 좌표계로 표현할 때 나타나며, $\nu$는 $\,0$ 또는 양의 실수이다.

Bessel 방정식의 해는 급수 해법으로 얻어진다. "제1종 Bessel 함수" $\, J _{\nu} (x) \,$는 다음과 같이 주어진다.

$$\,{{J}_{\nu }}\left( x \right)\,\,\,=\,\,\,{{x}^{\nu }} \sum\limits_{m \,=\, 0}^{\infty }{\,\,\frac{{{\left( -1 \right)}^{m}}\,{{x}^{2m}}}{{{2}^{2m+\nu }}m\,!\,\,\Gamma \left( \nu +m+1 \right)\,\,}}\,\,$$

$ \nu \ne n $ 인 경우 (정수가 아닌 양의 실수), Bessel 방정식의 일반해는

$$ y \left( x \right) \,=\, {{c}_{1}}\,{{J}_{\nu }}\left( x \right) \,+\, {{c}_{2}} \,{{J}_{-\nu }}\left( x \right)$$

로 주어진다.

$\nu = n $ 의 경우 (0 또는 양의 정수), 감마 함수를 계승 함수로 나타낼 수 있다.

$$ {{J}_{n}}\left( x \right)\,\,\,=\,\,\,{{x}^{n}} \sum\limits_{m\, =\, 0}^{\infty }{\,\,\frac{{{\left( -1 \right)}^{m}}\,{{x}^{2m}}}{{{2}^{2m+n}}m\,!\,\left( n+m \right)\,!\,}}\,\,$$

$ J _0 (x)$

In [2]:
plot( besselj(0,x), (x,0,20) )
Out[2]:
<sympy.plotting.plot.Plot at 0x260ac678780>

Bessel 함수의 값이 0 이되는 x 의 값들을 구한다.

In [3]:
Zeros = []
xini = N(pi)
for i in range(10) :
    zero = nsolve( besselj(0,x), x, xini )   
    Zeros.append( zero )
    xini = zero + N(pi)
print( Zeros )
[2.40482555769577, 5.52007811028631, 8.65372791291101, 11.7915344390143, 14.9309177084878, 18.0710639679109, 21.2116366298793, 24.3524715307493, 27.4934791320403, 30.6346064684320]

$ J _1 (x)$

In [4]:
plot( besselj(1,x), (x,0,20) )
Out[4]:
<sympy.plotting.plot.Plot at 0x260ab2bce80>
In [5]:
Zeros = []
xini = N(pi)
for i in range(10) :
    zero = nsolve( besselj(1,x), x, xini )   
    Zeros.append( zero )
    xini = zero + N(pi)
print( Zeros )
[3.83170597020751, 7.01558666981562, 10.1734681350627, 13.3236919363142, 16.4706300508776, 19.6158585104682, 22.7600843805928, 25.9036720876184, 29.0468285349169, 32.1896799109744]

$\nu = n $ ( 0 또는 양의 정수)의 경우에는, 두 해가 서로 일차종속의 관계를 가지게 된다.

$${{J}_{-n}}\left( x \right)\,\,\,=\,\,\,{{\left( -1 \right)}^{n}}{{J}_{n}}\left( x \right) $$

따라서, 독립적인 해가 추가적으로 필요하다.

이 해를 “제2종 Bessel 함수” $\, Y _{\nu} (x) \,$라 하고, 다음과 같이 정의된다.

$$\,{{Y}_{\nu }}\left( x \right)\,\,\,=\,\,\, \frac{\left[ \,{{J}_{\nu }}\left( x \right)\,\,\cos \nu \pi \,\,\,-\,\,{{J}_{-\nu }}\left( x \right)\, \right]} {\sin \nu \pi } $$

$\nu \,\,$가 정수인 경우에는

• $\,\, \nu = n = 0$

$$\,{{Y}_{0}}\left( x \right)\,\,\,=\,\,\,\frac{2}{\pi }\,\,\left[ \,{{J}_{0}}\left( x \right)\,\,\left( \ln \frac{x}{2}+\gamma \right)\,\,\,+\sum\limits_{m \,=\, 1}^{\infty }{\,\frac{{{\left( -1 \right)}^{m-1}}{{h}_{m}}}{{{2}^{2m}}{{\left( m\,! \right)}^{2}}}}\,\,{{x}^{2m}}\, \right]$$

$$ {{h}_{1}} = 1\,, \qquad {{h}_{m}}=1 + \frac{1}{2} + \cdots + \frac{1}{m} $$

$\qquad \qquad \qquad \qquad \qquad \qquad \gamma$ 는 Euler 상수로서

$$\qquad \qquad \,\,\,\,\,\,\, \gamma = \underset{s \to \infty }{\mathop{\lim }} \left( 1\,\,+\,\,\frac{1}{2}\,\,+\,\,\,\cdots \,\,\,+\,\,\frac{1}{s}\,\,-\,\,\ln s \right) =0.577\,215\,664\cdots \,\,\,\,$$

• $\,\, \nu = n = 1,2, \cdots \,$

$$\,{{Y}_{n }}\left( x \right)\,\,\,=\,\,\,\underset{\nu \to n}{\mathop{\lim }} \, {{Y}_{\nu }}\left( x \right) $$

로 주어진다.

$ \nu \ge 0 $ 인 모든 경우에 대하여, Bessel 방정식의 일반해를 다음과 같이 나타낼 수 있다.

$$ y \left( x \right) \,=\, {{C}_{1}}{{J}_{\nu }}\left( x \right) \,+\, {{C}_{2}} {{Y}_{\nu }}\left( x \right)$$

$ Y _0 (x)$

In [6]:
plot( bessely(0,x), xlim=(0,10), ylim=(-1,1) )      
Out[6]:
<sympy.plotting.plot.Plot at 0x260ad1a67f0>

$ Y _1 (x)$

In [7]:
plot( bessely(1,x), xlim=(0,10), ylim=(-1,1) )      
Out[7]:
<sympy.plotting.plot.Plot at 0x260ace0a0b8>

버금 Bessel 방정식 (associated Bessel equation)

Bessel 방정식과 유사한 형태를 가지는, 버금 Bessel 방정식은 다음의 식으로 주어진다.

$${{x}^{2}}\,{y}''\,\,\,+\,\,\,x\,{y}'\,\,\,-\,\,\,\left( {{x}^{2}}+{{\nu }^{2}} \right)\,y\,\,\,=\,\,\,0 \qquad \quad \nu \ge 0$$

버금 Bessel 방정식의 일반해는

$$\,\,\, y\,\left( x \right) \,\,=\,\, {{c}_{1}}\,{{I}_{\nu }}\left( x \right)\,\,\,+\,\,{{c}_{2}}\,{{K}_{\nu }}\left( x \right)\,$$

"변형 제1종 Bessel 함수" $\, I _{\nu} (x) \,$는 다음과 같이 주어진다.

$$\,{{I}_{\nu }}\left( x \right)\,\,\,=\,\,\,{{x}^{\nu }}\,\,\sum\limits_{m \,=\, 0}^{\infty }{\,\,\frac{{{x}^{2m}}}{{{2}^{2m+\nu }}m\,!\,\,\Gamma \left( \nu +m+1 \right)\,\,}}\,\,$$

“변형 제2종 Bessel 함수” $\, K _{\nu} (x) \,$는 다음과 같이 주어진다.

$${{K}_{\nu }}\left( x \right)\,\,=\,\, \frac{\pi }{2\, \sin \nu \pi }\left[ \,{{I}_{-\nu }}\left( x \right)\,\,-\,\,{{I}_{\nu }}\left( x \right)\, \right]$$

$\nu = n $ 의 경우에는

$$\,{{K}_{n }}\left( x \right)\,\,\,=\,\,\,\underset{\nu \to n}{\mathop{\lim }} \, {{K}_{\nu }}\left( x \right) $$

$ I _0 (x)$

In [8]:
plot( besseli(0,x), xlim=(0,10), ylim=(0,10) )
Out[8]:
<sympy.plotting.plot.Plot at 0x260ad1feba8>

$ K _0 (x)$

In [9]:
plot( besselk(0,x), xlim=(0,10), ylim=(0,1) )      
Out[9]:
<sympy.plotting.plot.Plot at 0x260ae345470>

Numeric Analysis 4 - Numeric Linear Algebra

Numeric Analysis 4 - Numeric Linear Algebra Numeric Linear Algebra ¶ ...