반응형

 

월리스(Wallis)의 곱

 

월리스의 곱은 홀수, 짝수를 두 번씩 분모, 분자에 써서 무한 곱을 하는 형태입니다.  (분모 1은 한 번만)

이 값은 놀랍게도 수렴합니다. 그리고 이 값을 계산하기 위해서는 이것이 sin의 n제곱 적분과 관련이 있다는 것을 알아야 합니다. (이것을 처음 생각한 사람은 대단하지요.) 

 

먼저 sin의 적분을 통해 공식을 만들고 W와의 관련성을 생각해 봅시다. sin의 n승의 적분을 계산합니다.

(부분적분으로 왼쪽 sin을 적분하고 오른쪽 sin^(n-1)을 미분하는 파트로 정함)

오른쪽끝 부분을 왼쪽으로 넘겨 공통부분으로 묶어주면,

  (가장 앞에 마이너스가 빠졌네요. 추가..)

드디어 sin의 n제곱의 적분의 일반형으로 공식같은 것을 만들었습니다. 그런데 이 공식과 월리스의 곱이랑은 언듯보기에 아무 관계없어 보입니다. 좀 더 정리해 볼까요?

이렇게 놓으면

(가장 앞에 마이너스가 빠졌네요. 추가..)

위 적분 공식은 적분구간에 관계없이 항상 성립합니다. 그렇다면 적분 구간을 적당히 조절하면 왼쪽의 복잡한 식을 없애고, 분자,분모 1씩 차이나는 분수들의 연속적인 곱 형태로 바꿀 수 있을 것 같습니다.

 이번엔 이렇게 적분 구간을 주어 I를 다시 정의해 봅시다. 이렇게 되면 왼쪽 파트가 항상 0이되어 아래와 같이됩니다.

이렇게 정리됩니다.

분자,분모가 1씩 차이나고 n이 2씩 감소되면서 반복되는 형태입니다. 홀수, 짝수로 나누어 이것도 공식으로 만들어봅시다.

이러한 공식이 나옵니다. 

을 각각 구해보면, 

 

따라서 대입하여 정리하면

 

이렇게 정리해 놓고 보니, 월리스의 곱과 아주 유사하게 전개됩니다.

분자를 짝수만 놓게 해보고 곱하면 뭔가 나올 것 같습니다. 

에 역수를 구합니다.

위 두 개를 곱하면, W의 형태가 보이게 됩니다.

 

위와 같이 월리스의 곱이 정리되어 나옵니다. 여기서 또 오른쪽 부분의 극한값을 구해야 합니다.

은 sin(x)배를 더 한 쪽이 더 작습니다. (왜냐면 0~pi/2 구간에서 sin(x)는 0과 1사이의 값입니다. 0과1사이 값을 곱하면 곱할수록 원래값보다 작아집니다.) 그리고  적분값은 각각  그래프를 그리고 적분구간에 해당되는 넓이와 같기 때문에 이 함수들을 적분해도 함수의 대소관계와 같습니다. 따라서 

은 

보다 작거나 같게 됩니다. 마찬가지로 

는 

보다도 작거나 같습니다. (왜 같다고도 했는지는 극한값이라서 그렇습니다.)

그런데 

는 공식에 따라서

여기서 n을 극한으로 보내면 

이 됩니다.

위 대소관계 

 에서 보게되면  

이므로 가운데 끼인 

도 

과 같게 되는 것입니다. (샌드위치 정리)

따라서  ,  ,   

 

이렇게 월리스의 곱은 파이의 반이됩니다. 유리수들로 이루어진 값들의 무한 곱이 무리수가 되는 것이지요.

 


cf) 팁 

sin의 n승의 적분을 적분구간

 인 경우 아래 공식을 이용하면 쉽게 계산이 됩니다.  

n을 분모로 놓고, 분자는 하나 적은 n-1 곱하기  분모 n-2, 분자 n-3 곱하기... 반복. 계속 1씩 감소하면서 적어주면 됩니다. 마지막에만 주의해 주면 됩니다.

 

ex1)

ex2)

 


+파이썬으로 돌려보기

i값이 1, 2, ... n 까지 변해가면서 W값을 계산합니다.

v1 = 2i / (2i-1) = 2/1, 4/3, 6/5, ..., 2n/(2n-1)

v2= 2i / (2i+1 ) = 2/3, 4/5, 6/7, ..., 2n/(2n+1)

# wallis.py

import numpy as np

 

def wall(n):

W=1

for i in range(1,n+1):

v1=(2*i)/(2*i-1)

v2=(2*i)/(2*i+1)

W=W*v1*v2

return W

 

 

print('Wallis loop(10)=', wall(10))

print('Wallis loop(50)=', wall(50))

print('Wallis loop(100)=', wall(100))

print('Wallis loop(1000)=', wall(1000))

print('Wallis loop(10000)=', wall(10000))

print('Wallis loop(100000)=', wall(100000))

print('pi/2=', np.pi/2)

 

결과 확인

# python3 wallis.py

Wallis loop(10)= 1.5338519033217486

Wallis loop(50)= 1.5630394501077045

Wallis loop(100)= 1.5668937453140788

Wallis loop(1000)= 1.5704038730151892

Wallis loop(10000)= 1.5707570593409275

Wallis loop(100000)= 1.5707923998284614

pi/2= 1.5707963267948966

 
 

점점 pi/2에 수렴해 갑니다.

 

'Math' 카테고리의 다른 글

[이상한 수학] pi = 0?  (1) 2019.04.03
root i, 허수 i의 루트. 이게 말이 돼?  (0) 2019.04.01
적분팁 (Integration Tip). 이것만 알아도 적분속도향상.  (3) 2019.03.29
integral sec(x)  (0) 2019.03.28
integral csc(x)  (0) 2019.03.27

+ Recent posts