본문 바로가기

제곱근

(3)
Sqrt(n) 의 연분수 표현 구하기 Sqrt(n) 의 연분수를 정확하게 구하기. sqrt(n) 의 연분수는 [ a_0;a_1, a_2, ... ] 이고 유리수 소수표현처럼 순환마디가 있을거다. a_n = [ b_n ] 으로 정의되고, b_{n+1} = 1 / ( b_n - a_n ) 이고, b_0 = sqrt(n) b_n 은 어떻게든 분모를 유리화할수 있고, b_n = x_n sqrt(n) + y_n (x_n, y_n 은 유리수) 로 표현이 가능하다. 그래서, x_n, y_n 은 언젠가는 동일한 것이 나와서 순환할 것. sqrt(2) = [ 1; 2, 2, 2, ... ] 이다. sqrt(3) = [ 1; 1, 2, 1, 2, ... ] 이 과정을 프로그래밍해 본다. #!/usr/bin/env python # ----------------..
제곱근 근사 뉴튼방법 def isqrt(n): x = n y = (x+1)/2 while y < x: x = y y = (x+n/x)/2 return x 루트 n 을 구하는 뉴튼의 방법인데. 어떻게 구해지는 건가? ---f(x) = x, g(x) = n/x 두 그래프는 (sqrt(n), sqrt(n)) 에서 교차한다. 하나는 단조증가, 하나는 단조감소함수이다.위 코드에서는 x_(k+1) = ( f(x_k) + g(x_k) )/2 점화식으로 x_k 수열을 만들어 나간다. 그래프에서는 삼각주 모양을 점점 줄여 나가면서 교차점에 다다르게 되는 형상이다. f(x), g(x) 가 (sqrt(n), sqrt(n)) 에서 교차하는 단조증가/감수 함수이기만 하면 되나? 위 파란색 부분 뻘생각이니까 혹시 검색을 통해 들어오신 분들은 크게 신..
[Py] 신이 보여준 정리 신이 보여준 정리를 보고 재미있을 것 같아서 짜봤다. 답을 대충 짐작하고 나서는 예쁘게 n + 1 = sqrt(1 + (n) sqrt(1 + (n+1) sqrt(..))) 이 n x (n + 1) = n x sqrt(1 + (n+1) sqrt(...)) 으로 정리되는 걸 알았다. #!/usr/bin/env python # _____________________________ # / ___________________ # / 1 + 2 / ___________ = ? # |/ |/ 1 + 3 |/ ..... # # import math def get_prev(x, n): return math.sqrt(1 + n*x) def eval_first(x0, n): #print "" #print "=========..