SICP 연습문제 1.13 풀이

Universal Machine/SICP | 2009/08/18 21:04 | The Doctor
이 문서는 Structure and Interpretation of Computer, by Abelson, Sussman, and Sussman의 라이센스 이용허가규약 저작자표시-비영리에 따라 제작된 문서입니다.

혼자 공부하면서 풀어본 것입니다. 그런만큼 오류가 많을 것이라 생각합니다. 문제 있는 부분은 알려주시면 고맙겠습니다.


Exercise 1.13.  Prove that Fib(n) is the closest integer to n/5, where  = (1 + 5)/2. Hint: Let  = (1 - 5)/2. Use induction and the definition of the Fibonacci numbers (see section 1.2.2) to prove that Fib(n) = (n - n)/5.






수학적 귀납법을 통해 증명한다면

Fib(0) = 0
0 - ψ0) / √5
= (1 - 1) / √5  = 0
∵ Fib(0) = (φ0 - ψ0) / √5

Fib(1) = 1
1 - ψ1) / √5
= {(1 + √5) / 2 - (1 - √5) / 2} / √5
= 2√5 / 2√5 = 1
∵ Fib(1) = (φ1 - ψ1) / √5

만약
Fib(n-1) = (φn-1 - ψn-1) / √5
Fib(n) = (φn - ψn) / √5 이 성립한다고 가정하자.

이 때
Fib(n+1) = (φn+1 - ψn+1) / √5 이 성립하는지를 알아봐야 하므로

Fib(n+1)
= Fib(n) + Fib(n-1)
= (φn - ψn) / √5 + (φn-1 - ψn-1) / √5
= {(φn + φn-1) + (ψn + ψn-1)} / √5
= {φn-1 + 1) + ψn-1 + 1)} / √5  이 된다.

이 때, φ2 = (3 + √5) / 2 = φ + 1 이고, ψ2 = (3 - √5) / 2  = ψ + 1 이다.

∵ Fib(n+1) = (φn+1 - ψn+1) / √5 이 성립한다.
즉, n = 0 과 n = 1에서 성립하므로 n = 2 이상의 정수에서 Fib(n) = (φn - ψn) / √5 이 성립한다.

따라서 n = 0 이상의 자연수에서
Fib(n) = (φn - ψn) / √5 이 성립함을 증명할 수 있다.

따라서 n = 0 이상의 자연수에서 (φn - ψn) / √5 가 φn / √5 에 가장 가까운 정수라면 이를 증명 가능하다.

-------------------------------2009/01/03 21:47



* 드디어 풀이가 떠올랐습니다.

 (φn - ψn) / √5 가 φn / √5 에 가장 가까운 정수이기 위해서는 두가지 조건이 성립되야 한다.

1.  (φn - ψn) / √5 가 정수여야 하며,
2. 이 두 숫자의 차가 0.5 미만이어야 한다.

2번이 성립해야 하는 이유는 어떤 정수 a가 가장 가까운 수 x의 범위는
a - 0.5 < x < a + 0.5 이기 때문이다.
따라서 | - ψn / √5 | < 0.5 가 성립하면 증명이 완료된다.

- ψn / √5 = - {(1 - √5) / 2}n / √5
가 된다.

√5 의 값은 2 < √5 <3 이다.
∵ (1 - √5) 의 값은 - 2 < (1 - √5) < - 1
∵ (1 - √5) / 2 의 값은 - 1 < (1 - √5) < - 1 / 2
∵ - ψn은 (- 1)n 과 (- 1 / 2)n 사이에 위치한다.
즉, | - ψn|은 1 이하에서 진동한다.

| - ψn | ≤ 1 로 분자가 1보다 작거나 같지만 분모 | √5 | > 2이므로
- ψn / √5  < 1 / 2 이 항상 성립한다. (더 자세한 증명이 필요한 부분인지 아닌지를 모르겠다.)




따라서 n = 0 이상의 자연수에서
Fib(n) 은  φn / √5 에 가장 가까운 정수임을 증명할 수 있다.





P.S. 이번에 이렇게 오래 풀지 못한 이유는 - ψn / √5 를 구하는데 너무 집착한 나머지 단순히 가깝다는 것의 의미 자체를 생각하면 쉽게 증명할 수 있다는 사실을 깨닫지 못했기 때문이었습니다.

공감각

學/Psychology | 2009/06/04 00:29 | The Doctor
공감각이 감각의 혼선에 의한 것이라면 S.V. Shereshevskii 와는 정반대로 혼선이 거의 없는 인간은 어떤 인간이 될까?

한편 공감각이 잘 드러나는 혼선이라면 드러나지 않는 혼선에는 어떤 것이 있을까?

지식의 대통합 통섭

The Library | 2009/02/04 23:36 | The Doctor
지식의 대통합 통섭, 에드워드 윌슨 저, 최재천 역, 사이언스 북스
Consilience: The Unity of Knowledge

- 통섭은 특별히 지식의 대통합의 방법을 이야기하는 책이 아니다. 그냥 담담하게 통합의 가능성과 그 실례를 제시하여 방향성만을 제시하는 책이다. 100% 옳기 위해 쓴 책이라기보다는 이런 현상이 일어나고 있으니 이렇게 되지 않을까라고 추측해본다는 느낌에 가깝다. 그러나  저자의 생물학적인 통찰 덕에 이런 추측들에서 수없이 많은 것을 깨우칠 수 있게 해준다. 
통섭을 읽는 중에 통섭에 대한 비판이 많다는 것을 들었는데 나는 왜 비판받는지 알지 못하고 있었다. 그러다가 몇몇 분의 글에서 '각각 연구하며 겹쳐지는 것을 무리하게 합치려한다', '생물학의 위기의식 아니냐?' 같은 이야기를 보게 되었다. 
그러나 나는 통섭은 '어느 날 아침에 일어나보니 이미 현실'이 될 일이라고 생각한다. 통섭이 말하는 것은 학문을 합친다는 이야기가 아니다. 현재 학문의 경계란 그 학문이 연구하는 대상과 고유의 방법론으로 나뉘는데 통섭은 이 경계가 불가침의 것이 아니게 되며, 방법론은 통합된다는 이야기라고 나는 생각한다. 왜냐하면 애초에 우리가 연구하는 것의 경계는 우리가 편하게 연구하기 위해서 만든 것일뿐 사실은 그 경계가 모호하고, 연구의 방법론은 우리가 아무 것도 모르는 상태에서 좀 더 알기 위해 발버둥치기 위해 생성된 것일 뿐이기 때문이다. 그리고 이는 '생물학'이라는 중간 계통을 통하던 말던과 관계 없이 모든 만물을 물리학적인 것으로 환원해내는 과정이다. 그리고 이러한 환원의 끝에 있는 것은 - 약간 과장하자면 - 아마도 물리학의 영원한 꿈인 간단하고 아름다운 '만물의 이론'이거나, 아니면 닿을 수 없는 것의 발견으로 인한 '신의 증명'일 것이다.


이 책과 함께 읽으면 좋은 책
넥서스 : 여섯개의 고리로 읽는 세상, 마크 뷰캐넌, 세종 연구원
- 통섭의 저자인 에드워드 윌슨은 복잡계의 가능성에 대해 유보적인 태도를 취했으나, 이에 찬성하던 그렇지 않던 복잡계가 어떠한 방식으로 여러가지 학문의 연구와 연결되어 있는지를 살펴보는 것은 매우 가치있는 일일 것이다.

부의 기원 : 최첨단 경제학과 과학이론이 밝혀낸 부의 원천과 진화, 에릭 바인하커, 랜덤하우스코리아
- 통섭에서 이야기된 경제학의 문제점을 복잡계적 시각에서 풀어간 책이다. '경제학이 가정한 것들'의 문제점에 대해 특히 깊게 다루고 있다.

생명과학 8판, 캠벨·리스, 바이오사이언스
- 기초적인 생물학적 지식을 얻기에 좋은 교재다. 통섭의 사회과학과 생물학의 통합에 대한 오해는 생물학에 대한 오해에 비롯되는 면도 상당히 존재한다고 생각한다. 그렇기에 이 책을 함께 추천할만하다.
괴담은 왜 존재하는가?

괴담을 믿고 전파하는 행동이 생존에 유리했기 때문이다.
말하자면 옛날의 속담이나 옛 지혜는 괴담과 맥을 같이 한다고 나는 생각한다.

다만 우리는 보상 접근적인 이야기와 온건한 수준의 위험 회피 이야기는 속담이라 하게 되었고,
과격할 정도의 위험 회피적인 이야기는 괴담이라고 하는 것이 아닐까?

SICP 연습문제 1.12 풀이

Universal Machine/SICP | 2009/01/02 00:45 | The Doctor
이 문서는 Structure and Interpretation of Computer, by Abelson, Sussman, and Sussman의 라이센스 이용허가규약 저작자표시-비영리에 따라 제작된 문서입니다. 

혼자 공부하면서 풀어본 것입니다. 그런만큼 오류가 많을 것이라 생각합니다. 문제 있는 부분은 알려주시면 고맙겠습니다.


Exercise 1.12.  The following pattern of numbers is called Pascal's triangle.

The numbers at the edge of the triangle are all 1, and each number inside the triangle is the sum of the two numbers above it. Write a procedure that computes elements of Pascal's triangle by means of a recursive process.



펼쳐두기..