점화식 계산해보기

힘수계산기에서 지원하는 코딩 스크립트인 SimpleMath를 이용하면 규칙적으로 1씩 수렴하는 점화식을 계산하는데 매우 유용합니다.

가령 다음을 계산해 봅시다.

1+1/2+1/4+1/8+.....+1/2^n+...

위 식은 매번 절반씩 줄어드는 수를 무한히 더하는 식입니다.

위 식을 계산하는 로직을 우선 만들어봅시다.

우선 위 수식의 결과를 아래와같이 S로 놓읍시다.
S = 1+1/2+1/4+1/8+.....+1/2^n+...

자 이번에는 S에 1/2를 곱해서 어떤 모양인지 살펴봅시다.
(1/2)*S = 1/2+1/4+1/8+.....+1/2^(n-1)+1/2^n...  = S - 1

따라서 구하고자 하는 S는 다음과 같이 표현될 수 있습니다.
S = 1 + (1/2)*S

위와 같은 로직을 함수계산기의 프로그래밍 스크립트인 SimpleMath를 사용하여 다음과 같이 코딩할 수 있습니다.
def S(n)=1+(1/2)*S(n-1);
S(0)=0;
여기서 S(n)  과 S(n-1)은 위 로직에서 S를  나타냅니다 n이 충분히 크면 사실상 S(n)과 S(n-1)은 같다고 볼 수 있습니다. 다만 위와 같은 재귀함수에서 인수가 수렴하지 않으면 무한실행의 오류에 빠지기때문에 S(n-1)과 같이 인수가 감소하도록 설정된것입니다. n이 커지면 커질수록 충분히 정확한  결과값을 도출합니다. 
그리고 빠뜨리지 말아야 할 두번째 코드 S(0)=0 은 재귀함수가 무한실행의 오류를 일으키지 않도록 하는 종료조건입니다. S(0)일 때는 1+(1/2)*S(-1)과 같이 메인 로직대로 계산하면 안되고 그냥 0이  도출되도록 강제로 설정하는 코드입니다. 이 코드가 없으면 무한실행의 오류에 빠집니다.

위와같이 공장 페이지에서 코딩을 한 후 run 버튼을 눌러서 실행하고 그 다음 save 버튼을 눌러 저장하십시오. 이 후 계산기 페이지로 돌아와 F2버튼을 누르면 방금 만든 함수를 확인할 수 있습니다. 함수를 선택해 계산기에서 S(60)을 계산해보면 2라는 결과를 얻게 됩니다.

Comments

Popular posts from this blog

Prompt for AI

How Deep Is the Well?

Function Examples