Download - Doing math with python.ch06
Doing Math with PythonCh.06 기하학적 형상과 프랙탈 그리기
윤석준 ([email protected])
파이썬으로 풀어보는 수학
상세설명https://github.com/DevStarSJ/Study/blob/master/Blog/Python/DoingMathWithPython/DoingMathWithPython.Ch06.ipynb
• 원서명 : Doing Math with Python: Use Programming to Explore Algebra, Statistics, Calculus, and More! (ISBN 9781593276409)
• 지은이 : 아미트 사하 (Amit Saha)• 원서 및 관련자료 : https://www.nostarch.com/doingmathwithpython• 번역서 : http://www.acornpub.co.kr/book/doing-math-with-python
3
1. matplotlib 의 패치 (patch) figure 객체 얻어오기
- .figure() : 생성
- .gcf() : 현재 figure 객체
axes 객체 얻어오기
- .axes() : 생성
- .gca() : 현재 axes 객체
4
1. matplotlib 의 패치 (patch) 원 그리기
사각형 그리기
5
2. 움직이는 그림 (animation)
6
2. 움직이는 그림 (animation)• fig : 현 그림의 객체
• update_radius : 프레임 번호와 프레임마다 갱신하기를 바라는 패치 객체가 전달되어서
원하는 모양으로 변경한 뒤 패치 객체를 리턴
• fargs : update_radius() 에게 전달되는 인자들의 목록 ( 프레임 번호는 제외 )
• frames : 애니메이션의 프레임 개수 . 여기에 적힌 수 만큼 update_radius() 를 호출하게 됨
• interval : 프레임 간의 시간 간격 ( 밀리미터 단위 )
• repeat : True, False 값을 가질 수 있으며 애니메이션의 반복 유무를 결정 . (default 는 True)
7
3. 투사체의 포물선 애니메이션
전체 소스는 상세설명 링크 참조
8
4. 프랙탈 (fractal) 그리기
단순한 구조가 끊임없이 반복되면서 복잡하고 묘한 전체 구조를 만드는 것으로 , 즉 자기유사성 (self-simi-larity) 와 순환성 (recursiveness) 라는 특징을 가지고 있다 . – 우리 생활 속 프랙탈 by 박희훈 ((https://prezi.com/gffdwoyxj7qd/presentation)
9
4. 프랙탈 (fractal) 그리기 평면상 점 변환 ( 단순한 프랙탈 예제 )
P(x, y) -> Q(x+1, y+1)
10
4. 프랙탈 (fractal) 그리기 2 개의 룰 중 랜덤
P(x, y) -> Q(x+1, y+1) or Q(x+1, y-1)
11
4. 프랙탈 (fractal) 그리기 random.choice() : 입력된 리스트 중 동일한 확률로 랜덤으로 선택
P(x, y) -> Q(x+1, y+1) or Q(x+1, y-1)
12
4. 프랙탈 (fractal) 그리기 반즐리 (Michael Barnsley) 의 고사리
13
5. 이미지 출력5x5 영역에 0 ~ 10 의 색분포를 랜덤으로 색칠하는 프로그램 작성
( 각각의 점의 색은 검은색을 0 흰색을 10 으로 하여 그 사이 값을 가
짐 ) 2 차원 List 생성하는 함수
14
5. 이미지 출력 imshow() 함수를 이용하여 이미지 출력
15
5. 이미지 출력 imshow() 주요 인자
- origin : lower 인 경우 list2D[0][0] 값이 이미지 상 (0,0) 으로 매칭
- extent : 이미지 좌측하단을 (0,0), 우측상단을 (5,5) 로 설정
- cmap=cm.Greys_r : 회색스케일의 이미지를 생성
- interpolation=‘nearest’ : 가장 인접한 점과는 같은 색으로 그리지 않도록
설정
프로그래밍 연습문제필자가 풀이한 답은 다음 Link 를 참고하세요 .https://github.com/DevStarSJ/Study/blob/master/Blog/Python/DoingMathWithPython/DoingMathWithPython.Ch06.ipynb저자의 정답은 다음 Link 에 있습니다 .https://www.nostarch.com/doingmathwithpython
17
1. 사각형 내에 원을 포함시키기1. 먼저 큰 사각형을 하나 그린 다음
2. 사각형 내에 반지름 0.5 인 원을 채워 넣으세요 .
18
2. 시어핀스키의 삼각형폴란드 수학자 바츌라프 시어핀스키 (Waclaw Sierpinski) 의 정삼각형 프렉탈을 그리세요 .( 모든 확률은 1/3 으로 동일합니다 .)
19
3. 헤논 함수 탐색1976 년 마이클 헤논 (Michael Henon) 함수를 애니메이션으로 작성하세요 .
20
4. 만델브로트 집합 그리기 (-2.5, -1.0) ~ (1.0, 1.0) 공간에 각 축을 400x400 의 공간으로 나눈 곳에 점을 찍습니다 .
1. 2 개의 복소수를 생성
z1 = 0 + 0j c = xi + ykj2. 레이블 iteration 을 생성하여 0 으로 설정
3. 복소수 z1 = z1^2 + c4. iteration 값을 1 증가
5. abs(z1) < 2 이며 iteration < max_iteration 이면 3 단계로 이동 , 그렇지 않으면 6 단계로 이동
(max_iteration 을 1,000 으로 설정 , 더 커질수록 복잡한 이미지가 생성되나 계산 시간이 길어짐 )6. 점 (xi, yk) 의 색상을 iteration 으로 설정
Thanks