Top

파이썬과 함께 하는 수학 어드벤처 [파이썬과 프로세싱으로 수학 개념 이해하기]

  • 원서명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) 이론을 활용해 수백만 년 동안 풀지 못했던 문제를 해결하는 방법을 보여준다.

상세 이미지

저자/역자 소개

지은이의 말

수학을 재미있게 하기 위해 프로그래밍을 어떻게 활용하는지 보여준다. 파이썬 프로그래밍 언어를 사용해 대수학, 삼각 함수, 행렬, 셀룰러 오토마타와 같은 다양한 수학 개념을 탐구하고 수학 문제의 해결책을 시각화하는 방법을 설명한다.
먼저 루프나 변수와 같은 프로그래밍의 기본 개념을 배운 후에, 방정식을 빠르게 해결할 수 있는 프로그램을 만들어본다. 그 다음 반응형 무지개색 그리드처럼 멋진 그래픽을 만들어보며 숫자를 인수분해하거나 제곱근을 구하는 등의 지루한 계산을 자동화하는 방법을 살펴본다. 또한 함수를 만들어 도형을 그리거나 변형하고, 진동하는 사인 곡선을 만들고, 그래픽을 사용해 방정식을 해결하는 방법도 배울 수 있다.

지은이 소개

피터 파렐(Peter Farrell)

케냐에서 평화봉사단의 자원봉사자로 시작해 8년간 수학 교사로 재직했으며, 그 후 3년동안 컴퓨터 공학 교사로 재직했다. 시모어 페퍼트(Seymour Papert)의 『Mindstorms』을 읽고 한 학생에게 파이썬에 대해 들은 후, 수학 수업에 프로그래밍을 도입할 영감을 얻었다. 컴퓨터를 활용해 수학 학습을 좀 더 의미 있고, 흥미로우면서도 도전적으로 만드는 것에 큰 관심이 있다.

옮긴이의 말

이 책은 다양한 분야에 활용할 수 있으며, 머신러닝, 그래픽, 웹 개발 등 여러 업계에서 선 호하는 언어로 꾸준히 성장하고 있는 파이썬을 사용했다. 간결한 문법으로 입문자가 이해하 기 쉽게 프로그래밍의 기본 문법을 설명할 뿐만 아니라 수학, 과학, 예술 사이의 연관성을 발견하면서 도전적이고 재미있게 파이썬을 활용할 수 있다.
문제 해결 결과를 시각화하고자 그래픽과 도형, 동작, 색을 제공하는 프로세싱(Processing)을 파이썬과 함께 사용한다. 파이썬은 https://www.python.org/에서 무료로 제공한다. 개발자나 아티스트가 역동적이고 상호 작용하는 예술 작품이나 그래픽을 만들려고 사용하는 그래픽 라이브러리인 프로세싱은 https://processing.org/download/에서 다운로드할 수 있다.
이 책은 3개의 Part로 나눠져 있다. Part 1에서는 주로 파이썬의 기본 문법을 다루고, Part 2 에서는 파이썬과 프로세싱을 이용해 수학의 개념을 쉽게 이해할 수 있게 하며, Part 3에서는 파이썬 클래스를 사용해 과학 및 예술 영역으로 확장한다.
이 책에서 제공되는 각 예제는 빈 파일에서 시작해 단계적으로 진행 상황을 계속 확인할 수 있도록 구성돼 있으며, 예제가 완성되면 파이썬 문법의 완전한 습득과 더불어 셀룰러 오토마타나 유전자 알고리즘, 컴퓨터 예술과 같이 단순하지 않은 프로젝트 결과도 볼 수 있다.

옮긴이 소개

윤정미

가톨릭대학교에서 수학 전공으로 학사를, 이화여대대학원에서 컴퓨터 전공으로 석사를 마쳤다. 이후 뉴욕시립대학교 대학원(The Graduate Center of the City University of New York)에서 컴퓨터공학 박사 학위를 받았다. 이후 몇 개의 대학에 출강해 데이터베이스와 시뮬레이션 등을 주제로 강의했고, 1990년부터 현재까지 유한대학교 IT소프트웨어공학과 교수로 재직 중이다.
「병렬 컴퓨터상에서 GPSS 구현을 위한 알고리즘」, 「통계 기반 교통 시뮬레이션의 애니메이션화」 등 다수의 논문을 썼고, 『쉽게 풀어 쓴 비주얼 베이직』(생능출판사, 2008), 『오라클』(기한재, 2015), 『파이썬으로 풀어보는 회귀분석』(에이콘, 2018) 등 몇 편의 역/저서가 있다. 지난 몇 년간 교내의 파이썬 동아리를 지도하며 파이썬 프로그래밍과 파이썬의 실무 및 응용 분야에 많은 관심을 가져왔다.

김지연

보안 컨설팅 전문 회사에서 정보 보안 컨설턴트로 재직하고 있으며, 웹 및 모바일 애플리 케이션 등의 다양한 영역에서 취약점 점검 및 모의해킹 업무를 수행하고 있다. 아직 국내 에 잘 알려지지 않은 보안 지식을 다양한 독자에게 공유하고 이해시키고자 개인 블로그와 해외 서적 번역을 통해 노력 중이다. 앞으로도 계속 보안 기술을 탐구하고 알리고자 노력할 것이다. 번역한 책으로는 『Spring Security 3/e』(에이콘, 2019)이 있다.

목차

목차
  • Part 1. 파이썬 매력에 빠지기
  • 1단원. turtle 모듈로 다각형 그리기
    • 파이썬의 turtle 모듈
      • turtle 모듈 불러오기
      • 거북이 움직이기
      • 방향 변경하기
    • 루프를 이용해 코드 반복하기
      • for 루프 사용하기
      • for 루프를 사용해 정사각형 그리기
    • 함수 사용하기
    • 변수를 사용해 도형 그리기
      • 함수에서 변수 사용하기
      • 변수 오류
    • 정삼각형
      • triangle( ) 함수 정의하기
      • 변수 값 변경하기
    • 요약

  • 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( ) 메소드 테스트하기
      • 랜덤 경로
      • 구문 추측 프로그램의 변형 아이디어 적용하기
      • 리스트에서 두 개의 숫자 교환하기
      • 교차를 통해 경로 개선하기

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안