최근에 Python을 적극적으로 사용해 보면서 Python의 다양한 Package 들을 찾는 재미에 푹 빠져 있습니다.

 

이전 포스팅에서 Pyzo 에 대해 소개하면서 sympy 라는 package 가 들어있다고 얘기를 했었는데 sympy 라는 package 는 Computer Algebra System(CAS) package 입니다.


2014/12/03 - [programming language/Python] - Python Pyzo, IEP


 

Computer Algebra System (CAS) 란 우리가 흔히 알고 있는 Mathematica, MATLAB, SAGE 나 아래 포스팅에서 소개했던 MAXIMA, Geogebra 등에 들어 있는 기능입니다.

 


2014/08/28 - [수학] - MAXIMA CAS 를 사용한 수학 공부


2014/08/28 - [지오지브라] - 지오지브라(Geogebra) 정삼각형 두 개로 외접원 그리기


2013/10/28 - [컴퓨터일반] - 지오지브라(Geogebra)로 수학을 재미있게~, 함수의 교점 구하기


   

말 그대로 symbolic 으로 수학 계산을 하는 건데~

 

이런 기능이 python 에도 있더군요. 그런 기능을 하는 package 가 바로 sympy 입니다.

 

Sympy 의 공식 주소는 아래와 같으며~

http://www.sympy.org/

 

다음과 같이 pip 명령어로도 설치 가능합니다.

pip install sympy

 

혹시 pip 가 설치되어 있지 않은 분들은 아래 주소 참조하여 설치 하시길~

 

위 명령어로 설치를 하셨다면 ~ 다음과 같이 Symbolic 으로 수학 연산을 수행 할 수 있습니다.

 

Sympy 에서는 홈페이지에서 다음 그림과 같이 online shell 이라는 환경을 제공해 주더군요. 컴퓨터에 python 이나 sympy 가 설치되어 있지 않더라도 브라우저에서 실행 가능합니다.


http://live.sympy.org/


 

 

Sympy 의 매뉴얼은 아래 주소와 같은데~ 미적분이나 limit, solve 기능 등이 기본으로 되더군요.

 

http://docs.sympy.org/latest/tutorial/index.html

 

매뉴얼도 굉장히 잘 되 있어서 브라우져에서 각 설명 제목 부분의 Run~ 부분을 클릭하면 online shell 에서 해당 코드가 실행되서 굉장히 빨리 사용법을 읽힐 수 있을 것 같네요~

 

참고링크 : http://webspace.ship.edu/msrenault/tutorial/Tutorial%207%20-%20Incorporating%20JavaScript.html

 

적분을 사용하여 특정 함수에 따른 면적을 표현 할 때 막대 그래프를 사용하느데요

 

오늘은 지오지브라를 사용하여 막대그래프를 표현하는 방법에 대해 설명하려 합니다.

 

지오지브라에서는 막대그래프[] 라는 명령어를 사용하기도 하고 BarChart[] 라는 명령어를 사용하기도 합니다.

 

매뉴얼의 한글화가 완벽하지 않아서 매뉴얼을 참조할때는 영어로 참조하는게 더 편리하더군요. 아래 매뉴얼 참조바랍니다.

 

http://wiki.geogebra.org/en/BarChart_Command

 

위 매뉴얼에 나와 있듯이 BarChart 는 다양한 형태로 사용할 수 있습니다.

 

  1. List 데이터와 list 빈도를 사용할 수 있습니다. 제일 마지막에 막대그래프의 폭을 설정 할 수가 있는데 이는 옵션 입니다.

Ex ) BarChart[{10, 11, 12, 13, 14}, {5, 8, 12, 0, 1},1]

  1. Raw 데이터와 막대그래프의 폭을 설정 할 수 있습니다. 아래 예에서는 막대그래프의 폭을 1로 설정했습니다.

Ex ) BarChart[ {1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 5, 5, 5, 5}, 1]

  1. 막대그래프의 시작 끝 지점과 각 높이의 list 를 사용하여 막대 그래프를 그릴 수 있습니다.

 

막대그래프의 결과는 막대그래프의 면적이 나오게 됩니다.

 

제일 위에 적은 참고링크의 예를 사용하여 막대그래프를 그려보고 함수의 면적을 한번 구해 보도록 합니다.

 

단계는 다음과 같습니다.

 

f(x) = sin(2 x) - (1/10) x² + 3


a = 1


b = 7


n 값은 편의를 위해 슬라이더로 만듭니다.


 

dx = (b - a)/n


rightpoints = Sequence[ f(a + i dx), i, 1, n ] OR rightpoints = 수열[f(a + i dx), i, 1, n]


rightsum = BarChart[ a, b, rightpoints ] OR rightsum = 막대그래프[a, b, rightpoints]


 

위 과정을 거쳐 나온 그래프는 다음과 같습니다.

 

위에서 만든 슬라이더를 에니메이션을 해보면~ 막대그래프의 폭이 좁아지면서 적분의 원리를 이해 할 수 있을 겁니다.



 


요즘은 컴퓨터도 좋아지고~ 좋은 프로그램들도 많아져서 수학 공부하기 굉장히 좋은 시절이라고 생각이 됩니다.

 

중고딩 시절에는 공식 하나하나 다 외워서 시험보는데… 사실 나이먹고 공식을 외우는 사람들은 수학 관련 일을 하는 분들 밖에 없을 것 같네요.

 

보통 대학 이상에서는 CAS 툴을 많이 사용합니다.

 

CAS 는 Computer algebra system 을 말하는데~ 쉽게 말해 컴퓨터로 수학을 푸는걸 말합니다.

 

http://en.wikipedia.org/wiki/Computer_algebra_system

 

뭐 자잘한 공식 외울 필요 없이 명령어 띡 치면 툭하고 식이 풀어지고 하는거죠.

 

 

물론 이런 툴이 있다고 해서 기본 원리 조차도 몰라도 된다는 건 아닙니다. 기본 원리를 알아야 저런 CAS 툴도 제대로 사용 할 수 있는 거죠.

 

이런 CAS 툴은 다양하게 있는데~ 그 목록은 아래 주소에서 확인하기 바랍니다.

 

http://en.wikipedia.org/wiki/List_of_computer_algebra_systems

 

상용툴로는 울 나라에서도 많이 알려진 Mathematica, Maple, MATLAB (Symbolic Math Toolbox) 부터~ 프리웨어로는 Sage, Maxima 같은 툴이 있습니다.

 

설치 또는 다운로드 하는 프로그램이 아닌 브라우져에서도 CAS 기능을 사용할 수 있는데요. 아래 포스팅에서 소개했던 wolframalpha 도 있습니다.

 

2013/01/05 - [컴퓨터일반] - Wolfram-Alpha 재밌네요~


2014/04/01 - [수학] - Wolframalpha 로 인수분해 쉽게 하기


2013/10/20 - [programming language/MATLAB] - MATLAB Batman Equation

 

요즘은 지오지브라(Geogebra) 라는 툴도 좀 사용해 보고 있는데 Geogebra 에도 CAS 기능이 있더군요.

 

CAS 툴 중에 프리웨어인 sage 는 윈도우의 경우 virtualbox 의 형태로 설치해야 하고 리눅스에서는 그냥 다운로드 받으면 설치가 되더군요. Maxima 는 윈도우나 리눅스에서 설치가 간편해서 종종 사용하는데…

 

아래 주소에 MAXIMA 강좌 동영상이 있더군요. 영어로 된 자료이긴 한데 그냥 따라 해보면 되는거라 볼만 합니다. 기본적인 사용 방법들을 쉽게 배울 수 있어서 좋더군요.

 

https://www.youtube.com/playlist?list=PLEDEE2F7C6750729F

 

MAXIMA 로 수학을 즐겨 보시길~

오늘은 지오지브라를 사용하여 정삼각형 두 개로 외접원 그리기에 대해 소개하려 합니다

 

1. 일단 정삼각형 두 개를 그립니다.

 

2. 작은 정삼각형의 E 지점과 큰 정삼각형의 B 지점의 연장선을 그리고 선분 AD 와의 교점을 G 라 합니다.

 

3. 작은 정삼각형의 크기를 JC 축을 기준으로 작거나 크게 해 보시면 큰 삼각형 ABC 의 외접하는 호를 그리는 것을 확인 할 수 있습니다.

 

4. 같은 방법으로 다른 두개의 모서리에 대해 작은 삼각형을 위치시키고 위 과정을 반복하면 아래 그림에서 점선으로 표시한 원이 완성 됩니다.


파일 첨부합니다. 

정삼각형두개로외접원그리기.ggb

 

정삼각형 두개를 사용한 원 작도에서 중요한 점은 바로 각 AGC 가 항상 60 도가 된다는 겁니다. 즉 원주각이 된다는 겁니다.

 


 


다음과 같이 포물선의 초점이 p 이고 p로부터 음의 방향으로 5만큼 떨어진 지점을 A 라 하고,

 

점 A 를 지나는 기울기 1인 직선이 만나는 두 지점 B, C를 구해보자.

 

 

포물선의 초점 F =(p , 0) 이고 A= (p-5,0) 이므로

 

다음과 같이 포물선과 직선의 방정식이 나온다.

 

위 두 방정식을 연립하면 점 B, 점 C 를 구할 수 있다.

 

MAXIMA 에서는 solve 라는 명령어로 해를 구할 수 있다.

 

 

해는 다음과 같다.

 

 

위 해르 보면 matrix 의 구성되어 나오므로 각 해는 다음과 같이 매트릭스의 인자를 접근 하는 형태로 접근 할 수 있다.

 

c[1][1] 이라고 하면 위 결과의 1행 1열의 인자 즉 다음 값에 대해 접근할 수 있는 것이다.

 

 

그렇다면 등호를 기준으로 왼쪽 또는 오른족의 인자에 대해서는 어떻게 접근해야 할까. 이는 함수를 사용해서 접근 할 수 있다.

 

https://www.ma.utexas.edu/maxima/maxima_20.html

 

등호를 기준으로 오른쪽 부분은 rhs(), 왼쪽은 lhs() 라는 함수로 접근한다.

 

Px : rhs(P_x); 라고 하면 라는 값이 나오고 Pd : lhs(P_x); 라고 하면 x 가 나오게 된다.

 

향후에 또 참조하기 위해 테스트 해본 MAXIMA 와 지오지브라 파일을 첨부한다.

 

포물선.ggb


포물선.wxm


아래 포스팅에서도 지오지브라에 대해 소개해 드린적이 있는데요.

 

지오지브라는 설치형 뿐만 아니라 구글 크롬과 같은 브라우져에서도 동작 가능하더군요.

 

크롬에 설치하는 방법은 도구 → 확장 프로그램 → 더 많은 확장 프로그램 다운로드(페이지 맨 아래) 에 들어가서 아래 그림과 같이 지오지브라로 검색을 합니다. 현재는 4.2 버전인데, 아래를 보니 4.4 beta 버전도 있더군요. 일단 저는 현재 버전인 4.2 버전을 설치했습니다. 아래 그림에서는 설치를 한 후의 모습인데 설치를 안하면 아래 beta 버전에서 처럼 + 무료라고 표시가 됩니다. + 무료라는 버튼을 클릭하면 설치가 됩니다.

 

설치 후에는 다음 그림과 같이 애플리케이션에 들어있게 됩니다. Geogebra 를 클릭해서 실행 합니다.

 

 

첨에 들어가면 다음 그림과 같이 영어로 나올텐데, Options → Language → Korean을 선택하면 한글로 바뀝니다. 그리고 구글 드라이브를 사용하시는 분들은 아래 네모 칸 친 부분의 구글 드라이브에 로긴하면 구글 드라이브에 저장하거나 구글 드라이브에 있는 파일을 불러 올 수도 있습니다.

 

설치를 했으니 간단하게 그래프 하나 그리고 끝내야죠~

 

지난 포스팅에 이어 예쁜 Cardioids 그래프 하나 그려 볼까요~ 


2013/11/05 - [수학] - 지오지브라 극좌표 그래프 그리기 Rose Curves


Cardioids 식은 다음과 같습니다.

r(x) = a (1 - cos(x)), vary a by using a slider  

지오지브라는 직교 좌표계이니깐, 극좌표를 직교좌표계로 변환하는 방법만 알면 비교적 쉽게 그릴수가 있더군요.

 

r(x) 를 그리는 방법은 다음과 같습니다.

 

  • 변수 a 를 슬라이더로 정의 한다.
  • 극좌표계 식 r(x)를 정의 한다. r(x) 그래프를 보이지 않게 한다.
  • 극좌표계를 직교 좌표계로 변환하기 위해 x 축은 cos(t)*r(t), y 축은 sin(t)*r(t) 로 하여 curve 를 그려준다. 여기서 변수 t 는 각도를 의미함 

Curve[r(t)*cos(t), r(t)*sin(t), t, 0, 2 pi]  

위 수식에서 세번째 인자 t 는 변화하는 각도를 의미 0, 2 pi 는 각도가 2 pi 까지 변화하는 것을 의미

 

그려 보니 다음과 같은 결과가 나오더군요. 하트같기도 하고~ 옆으로 보면 토마토를 그려놓은 것 같기고 하고 암튼 예쁘네요~

Cardioids

 

구글 드라이브에 로긴이 된 상태라면 파일→ 다른 이름으로 저장을 누르고~ 구글 드라이브에 저장 할 수도 있고, .ggb(지오지브라) 파일로 컴퓨터에 저장도 가능하고~ 지오지브라튜브에도 올릴 수 있습니다.



Geogebra 를 사용하면 사용할수록 정말 편리한 프로그램이구나 라는 생각이 많이 듭니다.

 

현재의 Geogebra 4.2 버전에서는 2D 까지만 지원을 하는데..

 

아래 동영상을 보니 3D 버전도 있더군요. 물론 아직 정식 버전은 아니구 베타 버전입니다.

 








즉 아직 테스트 중인 버전이라는 거죠~ 하지만 지금도 많이들 사용하시는 것 같더군요.

 

다운로드는 아래주소에서 가능 합니다.


http://download.geogebra.org/installers/5.0/?C=M;O=D

 

Windows, Linux, Max 에서 다 사용가능 하고 아래 그림과 같이 portable 버전과 installer 버전이 있습니다.

 

저는 portable 버전을 선호하기에 portable 버전을 다운로드 받았습니다.

 

portable 버전은 다운로드 받은 후에 압축만 풀어 주면 됩니다.

 

압축을 푼 후에 GeoGebra-jogl2.exe 파일을 더블 클릭 하면 아래 그림과 같이 Geogebra 가 실행 됩니다.

 

딱 보면 기존 GeoGebra와 다를바 없게 보이는데 보기 메뉴를 보니 3차원 기하창이 추가되 있더군요.

 

3차원 기하창을 눌러 보니 이렇게 생겼습니다. 멋지네요.

 

현재는 4.9 버전인데.. 테스트 끝나고 완성이 도면 5.0 버전으로 나올 것 같군요.

 

아래 주소는 5.0 버전에 대한 설명이 있는 release note 입니다. 차근 차근 보면서 공부좀 해봐야 겠네요.

 

http://wiki.geogebra.org/en/Release_Notes_GeoGebra_5.0

 


지오지브라에서 극좌표 그래프 그리는 방법에 대해 설명 드리려 합니다.

 

지오지브라에서 극좌표 그리는 방법은 아래 주소글을 참조했습니다.

 

http://web.psjaisd.us/auston.cron/ABCronPortal/GeoGebraMenu/GeogebraFiles/studentConstructions/polarGraphs/constructPolarGraph04.html


위 주소에 있는 예제 함수들 중에 아래 주식의 Rose Curves를 하나 그려 볼까 합니다.

r(x) = a sin(b x), vary a and b by using a sliders, x is angle

 

지오지브라는 직교 좌표계이니깐, 극좌표를 직교좌표계로 변환하는 방법만 알면 비교적 쉽게 그릴수가 있더군요.

  

r(x) 를 그리는 방법은 다음과 같습니다.


1. 변수 a, b 를 슬라이더로 정의 한다.


2. 극좌표계 식 r(x)를 정의 한다. r(x) 그래프를 보이지 않게 한다.


3. 극좌표계를 직교 좌표계로 변환하기 위해 x 축은 cos(t)*r(t), y 축은 sin(t)*r(t) 로 하여 curve 를 그려준다. 여기서 변수 t 는 각도를 의미함


 

Curve[r(t)*cos(t), r(t)*sin(t), t, 0, 16 pi]


위 수식에서 세번째 인자 t 는 변화하는 각도를 의미 0, 16 pi 는 각도가 16 pi 까지 변화하는 것을 의미

 

그려 보니 다음과 같은 결과가 나오더군요.


 

그럼 한번 그려볼까요~




  1. dedd 2014.07.19 18:50

    r(x) a'sin(bx)라고 하면 알수없는 명령:r 이라고 뜨는데......

    • 남성 2014.07.19 20:34 신고

      보시다 시피 r(x)= a*sin(b*x) 라고 정의 한겁니다.

  2. dedd 2014.07.20 23:51

    감사합니다~

아래 포스팅에서 간단하게 지오지브라에 대해 소개 드린적이 있는데요.

 

 

2012/08/13 - [유틸] - 오픈소스 수학 프로그램 지오지브라(GeoGebra)



위 포스팅을 하고 시간이 좀 지나서 그런지 그 동안에 많은 부분이 발전한 것 같네요.

 

사용도 굉장히 편리해 진 것 같구요.

 

오늘 네이버 지식인을 보다가 간단하게 지오지브라 관련 답변을 달면서 이런 내용은 많은 학생들이 보고 배웠으면 좋겠다는 생각이 들더군요.

 

그래서 동영상으로도 만들어 봤는데.. 아직 마이크가 구비가 안되서 설명은 못 넣었습니다.

 

뭐 설명은 안 듣더라도 너무 쉬운 내용이라 동영상만 봐도 알 수 있는 내용이라는 생각이 드네요.

 

일단 지오지브라 설치 방법부터 다시 설명 드리는게 좋을 것 같네요.

 

프로그램 다운로드는 아래 주소에서 가능 하구요~

http://www.geogebra.org/cms/ko/download/

 

 

다음 그림과 같이 자신의 OS 에 맞는 설치 파일을 다운로드 받아서 설치하시면 됩니다.

 

저는 윈도우에서 설치를 진행해 봤는데요~ 이상하게 문제가 있어서 아래 주소에서 포터블 버전을 다운로드 받았습니다.


http://www.geogebra.org/cms/ko/portable

 

 

각자 OS 에 맞게 다운로드 한 후에 압축 해제 하고~ GeoGebra.exe 파일을 실행시켜주면 바로 사용 가능합니다.

 

동영상에서는 아래 수식에 대해 교점을 구해 봤는데요~ 클릭 몇 번에 교점이 척척~~ 구해지니… 참 재미있더군요.

 

x2+y2=2

15x2/ 2 + 4xy=16




학생들이 수학 공부하는데~ 많이 이용되었으면 좋겠네요~

 

저희 때는 정말 모눈 종이에 그려보고 했던 것 같은데…ㅋㅋㅋㅋ 참 좋은 세상이네요!!



 


학생들 중에는 수학에 대해 굉장히 힘들어하는 경우가 많은데요~


어떻게 보면 수학이 굉장히 추상적이어서 그럴지도 모른다는 생각을 많이 합니다. 


수학 기호들만 봐서는 이게 무슨 의미인지 쉽게 상상이 안되거든요.


하지만 그래프를 그려보고 계산 몇번 하다보면 어떤 과목 보다도 헷갈리지 않고 재미있는게 수학이라는 과목입니다. 


제가 어렸을때는 컴퓨터가 그리 보편적이지 않아서 수학 프로그램을 이용한 교육 같은건 생각도 안해봤는데~ 


요즘은 컴퓨터가 워낙 좋아지고 발달해서 수학 프로그램을 이용하면 학생들이 좀더 쉽게 수학을 익힐수 있지 않을까 하는 생각을 많이 합니다. 


수학 관련한 프로그램들은 많지만~ 


그 중에서 오늘 소개하는 지오지브라는 교육용으로 사용하기에도 굉장히 편리하다는 생각이 듭니다. 


프로그램은 아래 주소에서 다운로드 가능합니다. 


http://www.geogebra.org/cms/ko/download



초등학생을 위한 지오지브라 버전인 지오지브라프림도 있으니깐 초등학생 분들이나 관련 교육자 분들은 사용해 보시면 좋을것 같네요~ 


webstart 를 클릭하면 지오지브라가 다운로드 됩니다. 


프로그램은 이렇게 매우 심플하게 생겼습니다. 그런데 생각보다 매우 파워풀 하더군요. 




기초적인 사용법에 대한 동영상이 다음과 같이 유투브에 있더군요. 





위 동영상은 y=mx+b 라는 일차 방정식을 그리는 예제인데요~ 


굉장히 직관적이고 잼나더군요. 


저도 비슷하게 한번 해봤습니다. 





금방 쉽게 따라하실수 있고~ 재미있기도 하네요~ 


이런 툴들이 많이 나왔으면 좋겠네요. 



+ Recent posts