파이썬과 함께 하는 수학 어드벤처 [파이썬과 프로세싱으로 수학 개념 이해하기]
- 원서명Math Adventures with Python: An Illustrated Guide to Exploring Math with Code (ISBN 9781593278670)
- 지은이피터 파렐(Peter Farrell)
- 옮긴이윤정미, 김지연
- ISBN : 9791161753775
- 30,000원
- 2020년 01월 15일 펴냄
- 페이퍼백 | 384쪽 | 188*235mm
- 시리즈 : 프로그래밍 언어
책 소개
요약
파이썬과 프로세싱을 활용해 파이썬의 기본 문법뿐만 아니라 수학, 과학, 예술 사이의 연관성을 발견해 나가며 도전적이고 재미있게 파이썬을 배울 수 있다. 3개의 Part로 나눠지며, Part 1에서는 파이썬의 기본 문법을 다루고, Part 2에서는 파이썬과 프로세싱으로 수학의 개념을 이해하며, Part 3에서는 파이썬 클래스를 과학 및 예술 영역으로 확장해 적용한다.
이 책에서 다루는 내용
■ 행렬을 사용해 2D 및 3D 그래픽을 그리고 변환하는 방법
■ 복소수를 사용해 망델브로 집합 및 줄리아 집합과 같은 화려한 디자인을 만드는 방법
■ 재귀법으로 코흐 곡선 및 시에르핀스키 삼각형과 같은 프랙탈을 만드는 방법
■ 잔디밭에서 자율적으로 풀을 뜯고 번식하는 가상의 양을 만드는 방법
■ 유전자 알고리즘을 사용해 비밀 구문을 해독하는 방법
이 책의 대상 독자
수학을 배우거나 삼각법, 대수와 같은 수학 주제에 가장 현대적으로 접근할 수 있는 도구를 사용하고자 하는 사람을 위한 책이다.
파이썬을 배우는 중이라면 이 책을 읽고 셀룰러 오토마타(cellular automata)나 유전자 알고리즘, 컴퓨터 예술과 같이 복잡한 프로젝트에 프로그래밍 기술을 적용해 볼 수 있다.
교사는 이 책의 프로젝트를 사용해 학생들에게 심화 과제를 내주거나 수학을 좀 더 친근하게 느끼고 적절하게 사용할 수 있도록 가르칠 수 있다. 행렬에 여러 점을 저장하고 이를 사용해 3D 그림을 그리는 것보다 행렬을 더 잘 가르칠 수 있는 방법이 있을까? 파이썬을 배운다면 더 많은 것을 할 수 있다.
이 책의 구성
1단원, ‘turtle 모듈로 다각형 그리기’에서는 파이썬에 내장된 turtle 모듈을 사용해 반복문(loop), 변수(variable), 함수(function)와 같은 기본 프로그래밍 개념을 배운다.
2단원, ‘리스트와 루프로 산술 연산하기’에서는 리스트(list) 및 부울(Boolean)과 같은 프로그래밍 개념을 자세히 설명한다.
3단원, ‘조건문으로 추측하고 확인하기’에서는 지금까지 배운 파이썬 기술을 인수 분해 및 숫자 추측 게임과 같은 문제에 적용한다.
4단원, ‘대수학을 사용해 숫자를 변환하고 저장하기’에서는 수치와 그래프를 이용해 간단한 방정식부터 3차 방정식을 푼다.
5단원, ‘기하학을 사용해 도형 변형하기’에서는 도형을 생성하고, 복제하고, 회전하고, 화면에 퍼뜨리는 방법을 배운다.
6단원, ‘삼각법으로 진동 생성하기’에서는 직각 삼각형 및 삼각 함수를 이용해 진동하는 도형과 파동을 만든다.
7단원, ‘복소수’에서는 복소수를 사용해 화면에서 점을 이동하면서 망델브로 집합과 같은 그래프를 그려본다.
8단원, ‘컴퓨터 그래픽 및 연립 방정식에 행렬 사용하기’에서는 3차원을 다룬다. 3차원 도형을 이동, 회전시키며 하나의 프로그램으로 연립 방정식을 풀어본다.
9단원, ‘클래스로 객체 생성하기’에서는 하나의 객체 또는 컴퓨터가 처리할 수 있는 최대 개수의 객체를 생성하는 방법을 배우며, 이를 통해 움직이는 양과 잔디의 생존 경쟁 생태계를 만든다.
10단원, ‘재귀법을 이용해 프랙탈 만들기’에서는 재귀법을 이용해 거리를 측정하고 놀라운 형태의 그래프를 만들어내는 새로운 방법을 다룬다.
11단원, ‘셀룰러 오토마타’에서는 셀룰러 오토마타를 정의된 규칙에 따라 생성하고 프로그래밍하는 방법을 설명한다.
12단원, ‘유전자 알고리즘을 사용해 문제 해결하기’에서는 자연 선택(natural selection) 이론을 활용해 수백만 년 동안 풀지 못했던 문제를 해결하는 방법을 보여준다.
상세 이미지
목차
목차
- Part 1. 파이썬 매력에 빠지기
- 1단원. turtle 모듈로 다각형 그리기
- 파이썬의 turtle 모듈
- turtle 모듈 불러오기
- 거북이 움직이기
- 방향 변경하기
- 루프를 이용해 코드 반복하기
- for 루프 사용하기
- for 루프를 사용해 정사각형 그리기
- 함수 사용하기
- 변수를 사용해 도형 그리기
- 함수에서 변수 사용하기
- 변수 오류
- 정삼각형
- triangle( ) 함수 정의하기
- 변수 값 변경하기
- 요약
- 파이썬의 turtle 모듈
- 2단원. 리스트와 루프로 산술 연산하기
- 기본 연산자
- 변수에 연산자 사용하기
- 연산자를 사용해 average( ) 함수 만들기
- 연산 순서에 유의하자!
- 연산자와 함께 괄호 사용하기
- 파이썬의 자료형
- 정수와 실수
- 문자열
- 부울
- 자료형 확인하기
- 리스트를 사용해 값 저장하기
- 리스트의 항목 추가하기
- 리스트에 연산자 사용하기
- 리스트의 항목 제거하기
- 루프에서 리스트 사용하기
- 인덱스를 사용해 리스트의 개별 항목에 접근하기
- enumerate( )를 사용해 인덱스 및 값에 접근하기
- 인덱스는 0에서 시작한다
- 범위로 리스트 항목 접근하기
- 항목의 인덱스 찾기
- 문자열에 인덱스 사용하기
- 합계
- running_sum 변수 생성하기
- mysum( ) 함수 생성하기
- 숫자형 리스트의 평균 구하기
- 요약
- 기본 연산자
- 3단원. 조건문으로 추측하고 확인하기
- 비교 연산자
- if-else문을 사용해 의사 결정하기
- 조건문을 사용해 인수 찾기
- factors.py 프로그램 작성하기
- 움직이는 거북이
- 숫자 추측 게임 만들기
- 랜덤 숫자 생성기 만들기
- 사용자 입력 받기
- 사용자 입력값을 정수로 변환하기
- 조건문을 사용해 올바른 추측인지 확인하기
- 루프를 사용해 추측 계속하기
- 숫자 추측 게임 팁
- 제곱근 찾기
- 숫자 추측 게임 논리 적용하기
- squareRoot( ) 함수 만들기
- 요약
- Part 2. 수학의 영역으로 들어가기
- 4단원. 대수학을 사용해 숫자를 변환하고 저장하기
- 일차방정식 해결하기
- 일차방정식의 일반식 찾기
- equation( ) 함수 만들기
- return 대신 print( ) 사용하기
- 고차방정식 해결하기
- quad( )를 사용해 이차방정식 해결하기
- plug( )를 사용해 삼차방정식 해결하기
- 그래프로 방정식 해결하기
- 프로세싱 시작하기
- 그래프 작성 도구 만들기
- 방정식 그래프 작성하기
- 추측을 통해 방정식의 해 찾기
- guess( ) 함수 만들기
- 요약
- 일차방정식 해결하기
- 5단원. 기하학을 사용해 도형 변형하기
- 원 그리기
- 좌표를 사용해 위치 지정하기
- 도형 변형 함수
- translate( )을 사용해 도형 이동하기
- rotate( )를 사용해 도형 회전하기
- 원으로 원 그리기
- 사각형으로 원 그리기
- 움직이는 객체
- 변수 t 만들기
- 개별 사각형 회전하기
- pushmatrix( ) 및 popmatrix( )를 사용해 방향 저장하기
- 원점을 중심으로 회전하기
- 반응형 무지개 그리드 만들기
- 도형을 이용해 그리드 그리기
- 도형에 무지개색 추가하기
- 삼각형을 이용해 복잡한 패턴 그리기
- 30-60-90 삼각형
- 정삼각형 그리기
- 여러 개의 회전하는 삼각형 그리기
- 위상 이동
- 디자인 마무리하기
- 요약
- 6단원. 삼각법으로 진동 생성하기
- 삼각법을 이용해 회전 및 진동하기
- 다각형 그리는 함수 만들기
- 루프를 이용해 육각형 그리기
- 정삼각형 그리기
- 사인 곡선 만들기
- 흔적 남기기
- 파이썬 내장 함수인 enumerate( ) 함수 사용하기
- 스피로그래프 프로그램 만들기
- 작은 원 그리기
- 작은 원 회전시키기
- 하모노그래프 만들기
- 하모노그래프 프로그램 만들기
- 한번에 리스트 채우기
- 2개의 진자가 1개보다 좋다
- 요약
- 7단원. 복소수
- 복소 좌표계
- 복소수 더하기
- 복소수에 i 곱하기
- 두 개의 복소수 곱하기
- magnitude() 함수 만들기
- 망델브로 집합 만들기
- mandelbrot( ) 함수 만들기
- 망델브로 집합에 색 추가하기
- 줄리아 집합 만들기
- julia( ) 함수 만들기
- 요약
- 8단원. 컴퓨터 그래픽 및 연립 방정식에 행렬 사용하기
- 행렬이란 무엇인가?
- 행렬 덧셈
- 행렬 곱셈
- 행렬 곱셈에서 순서의 중요성
- 2차원 도형 그리기
- 행렬 변형하기
- 전치 행렬
- 실시간으로 행렬 회전시키기
- 3차원 도형 만들기
- 회전 행렬 만들기
- 행렬을 이용해 연립 방정식 풀기
- 가우스 소거법
- gauss( ) 함수 만들기
- 요약
- Part 3. 새로운 길 개척하기
- 9단원. 클래스로 객체 생성하기
- 공 튕기기 프로그램
- 공 움직이기
- 벽에 공 튕기기
- 클래스 없이 여러 개의 공 만들기
- 클래스를 사용해 객체 생성하기
- 양 방목 프로그램
- Sheep 클래스 만들기
- 돌아다니는 양 만들기
- 에너지 속성 만들기
- 클래스를 사용해 잔디 만들기
- 양이 잔디를 먹으면 갈색으로 변하도록 만들기
- 양의 색 지정하기
- 양이 번식하도록 프로그래밍하기
- 잔디 재생시키기
- 진화론적 이점 부여하기
- 요약
- 공 튕기기 프로그램
- 10단원. 재귀법을 이용해 프랙탈 만들기
- 해안선의 길이
- 재귀법이란 무엇인가?
- factorial( ) 함수 만들기
- 프랙탈 나무(fractal tree) 만들기
- 코흐 곡선
- segment( ) 함수 만들기
- 시에르핀스키 삼각형
- 사각 프랙탈
- 드래곤 곡선
- 요약
- 해안선의 길이
- 11단원. 셀룰러 오토마타
- 셀룰러 오토마톤 생성하기
- Cell 클래스 만들기
- 각 셀의 크기 조정하기
- CA가 성장하게 만들기
- 행렬에 셀 넣기
- CellList 만들기
- 파이썬의 리스트는 이상하다
- 리스트의 인덱스 표기법
- 자동으로 CA 성장시키기
- 라이프 게임하기
- 초급 셀룰러 오토마톤
- 요약
- 셀룰러 오토마톤 생성하기
- 12단원. 유전자 알고리즘을 사용해 문제 해결하기
- 유전자 알고리즘 사용해 비밀 구문 추측하기
- makelist( ) 함수 만들기
- makeList( ) 함수 테스트하기
- score( ) 함수 만들기
- mutate( ) 함수 만들기
- 난수 생성하기
- 여행하는 영업 사원 문제 해결하기(TSP)
- 유전자 알고리즘 사용하기
- calclength( ) 메소드 만들기
- calclength( ) 메소드 테스트하기
- 랜덤 경로
- 구문 추측 프로그램의 변형 아이디어 적용하기
- 리스트에서 두 개의 숫자 교환하기
- 교차를 통해 경로 개선하기
- 유전자 알고리즘 사용해 비밀 구문 추측하기