데카르트의 엽선(folium)이라고도 불리우는
음함수 x^3 + y^3 = 3xy 의 그래프 그리기 연습

* 윈도우 7 에서 Mathematica 8 을 이용하여 그린 함수의 그래프:




* Mac OS X Lion 에서 Maxima 5.25.0 을 이용하여 그린 함수의 그래프


 

* 윈도우 7 에서 윈도우 용 Gnuplot 을 이용하여 그린 함수의 그래프:
(* 윈도우 용 Gnuplot 다운로드: http://www.tatsuromatsuoka.com/gnuplot/Eng/winbin/ *)
(* gp45-winbin.zip 이라고 적힌 곳을 클릭하여 다운로드하고,
    압축을 풀어서 gnuplot 이라는 폴더를 아무 곳이나 옮기거나 복사히면
    그 곳이 윈도우 용 Gnuplot 의 설치 디렉토리이다.
    윈도우 용 Gnuplot 이 설치된 폴더 안의 폴더 binary 에 있는 Gnuplot 아이콘을 더블 클릭하여 실행한다.
    실행하면 반드시 첫 명령으로 'set term win' 이라는 명령을 내려야만 그래프 출력을 볼 수 있다.
*)



* Descartes' folium 을 그리기 위한 gnuplot 소스

#set terminal to windows
set term win

set contour
splot x**3 + y**3 - 3*x*y

#set discrete levels
set cntrparam levels discrete 0
set title "Descartes' folium"
unset surface

#show contour setting
# show contour
set isosamples 100
set view 0,0

# set the line color to black
set linetype 1 lc rgb "dark-violet" lw 2 pt 0
set linetype 2 lc rgb "sea-green"   lw 2 pt 7
set linetype 3 lc rgb "cyan"        lw 2 pt 6 pi -1
set linetype 4 lc rgb "dark-red"    lw 2 pt 5 pi -1
set linetype 5 lc rgb "blue"        lw 2 pt 8
set linetype 6 lc rgb "dark-orange" lw 2 pt 3
set linetype 7 lc rgb "black"       lw 2 pt 11
set linetype 8 lc rgb "goldenrod"   lw 2
set linetype cycle 8
replot




* Gnuplot 이 그려준 곡선

 

 



* Mac OS X Lion 에서 Grapher 를 이용하여 그린 함수의 그래프:


 

* 윈도우 XP 의 Python 2.7 에 matplotlib 1.0.1 을 (모두 32비트 용으로) 설치하여 음함수의 그래프를 그리는 파이썬 언어 소스:

#!/usr/bin/env python
"""
An example which plots the graph of an implicit function.

         Plot the Descartes' folium.
"""
import matplotlib
import numpy as np
import matplotlib.pyplot as plt

delta = 0.025
x = np.arange(-6.0, 6.0, delta)
y = np.arange(-6.0, 6.0, delta)
X, Y = np.meshgrid(x, y)
Z = X**3 + Y**3 - 3*X*Y

# Set negative contours to be solid iine.
matplotlib.rcParams['contour.negative_linestyle'] = 'solid'
plt.figure()
CS = plt.contour(X, Y, Z, 1, colors='k')
plt.title("Descartes' folium")

plt.show()



(* 위의 소스는 수정 없이 윈도우 7 의 Python 3.2 64bit 에 matplotlib 1.1.0 64bit 를 설치하여 실행해도 된다 *)


Posted by Scripter
,