SymPy 기호수학 - 응용 5. Bessel 함수¶
sympy 라이브러리를 불러오고, 사용할 기호 변수를 선언한다. 출력을 LaTex 수식으로 나타내고, 맷플롯립 모듈을 불러온다.
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 방정식을 만족하는 해이다.
Bessel 방정식은 편미분 방정식을 원통 좌표계로 표현할 때 나타나며, ν는 0 또는 양의 실수이다.
Bessel 방정식의 해는 급수 해법으로 얻어진다. "제1종 Bessel 함수" Jν(x)는 다음과 같이 주어진다.
Jν(x)=xν∞∑m=0(−1)mx2m22m+νm!Γ(ν+m+1)
ν≠n 인 경우 (정수가 아닌 양의 실수), Bessel 방정식의 일반해는
y(x)=c1Jν(x)+c2J−ν(x)
로 주어진다.
ν=n 의 경우 (0 또는 양의 정수), 감마 함수를 계승 함수로 나타낼 수 있다.
Jn(x)=xn∞∑m=0(−1)mx2m22m+nm!(n+m)!
J0(x)
plot( besselj(0,x), (x,0,20) )
Bessel 함수의 값이 0 이되는 x 의 값들을 구한다.
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 )
J1(x)
plot( besselj(1,x), (x,0,20) )
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 )
ν=n ( 0 또는 양의 정수)의 경우에는, 두 해가 서로 일차종속의 관계를 가지게 된다.
J−n(x)=(−1)nJn(x)
따라서, 독립적인 해가 추가적으로 필요하다.
이 해를 “제2종 Bessel 함수” Yν(x)라 하고, 다음과 같이 정의된다.
ν가 정수인 경우에는
• ν=n=0
h1=1,hm=1+12+⋯+1m
γ 는 Euler 상수로서
γ=lims→∞(1+12+⋯+1s−lns)=0.577215664⋯
• ν=n=1,2,⋯
로 주어진다.
ν≥0 인 모든 경우에 대하여, Bessel 방정식의 일반해를 다음과 같이 나타낼 수 있다.
y(x)=C1Jν(x)+C2Yν(x)
Y0(x)
plot( bessely(0,x), xlim=(0,10), ylim=(-1,1) )
Y1(x)
plot( bessely(1,x), xlim=(0,10), ylim=(-1,1) )
버금 Bessel 방정식 (associated Bessel equation)¶
Bessel 방정식과 유사한 형태를 가지는, 버금 Bessel 방정식은 다음의 식으로 주어진다.
버금 Bessel 방정식의 일반해는
y(x)=c1Iν(x)+c2Kν(x)"변형 제1종 Bessel 함수" Iν(x)는 다음과 같이 주어진다.
Iν(x)=xν∞∑m=0x2m22m+νm!Γ(ν+m+1)
“변형 제2종 Bessel 함수” Kν(x)는 다음과 같이 주어진다.
Kν(x)=π2sinνπ[I−ν(x)−Iν(x)]
ν=n 의 경우에는
I0(x)
plot( besseli(0,x), xlim=(0,10), ylim=(0,10) )
K0(x)
plot( besselk(0,x), xlim=(0,10), ylim=(0,1) )
댓글 없음:
댓글 쓰기