lemniscate 는

       극방정식   r^2 = cos( 2 theta )
       또는 직교방정식 (x^2 + y^2)^2 = x^2 - y^2

으로 주어진다.  이 곡선은 철도 공사나 도로 공사시 곡선형 도로를 만들 때
원심력을 줄이기위한 방편으로 사용되기도 한다.

이제 이 곡선을 여러가지 도구

           Mathematica, Maxima, Grapher, Gnuplot, Octave, Matplotlib

들로 각각 그려보자.

 
* 윈도우 XP 에서 Mathematica 8 을 이용하여 그리기





* 윈도우 XP  에서 wxMaxima 를 이용하여 연주형 곡선 그리기
1) 직교방장식 (x^2 + y^2)^2 = x^2 - y^2 의 곡선



2) 극방정식 r^2 = cos(2 theta) 의 곡선
** 그리기 명령 입력



** 위의 명령으로 별도의 창에 그려진 연주형 곡선(lemniscate)





* Mac OS X Lion 에서 Grapher 를 이용하여 그리기
1) 직교방정식의 연주형 곡선 그리기




2) 극방정식의 연주형 곡선 그리기




* Gnuplot 을 이용하여 연주형 곡선 그리기
1) 직교방정식의 연주형 곡선 그리기
** 윈도우 XP 에서 Gnuplot 을 실행시켜서 그리기 명령을 입력한 화면



** 위의 명령으로 Gnuplot 이 그려준 곡선




1) 극방정식의 연주형 곡선 그리기
** Gnuplot 소스
set term win   # for Window wgnuplot
set clip points
unset border
set dummy t,y
unset key
set polar
set samples 1600, 1600
set xzeroaxis linetype 0 linewidth 1.0
set yzeroaxis linetype 0 linewidth 1.0
set zzeroaxis linetype 0 linewidth 1.0
set xtics axis in scale 1,0.5 nomirror norotate  offset character 0, 0, 0 autofreq
set ytics axis in scale 1,0.5 nomirror norotate  offset character 0, 0, 0 autofreq
set title "Lemniscate"
set trange [ 0.0 : 2*pi ] noreverse nowriteback
set xrange [ * : * ] noreverse nowriteback  # (currently [-5.00000:5.00000] )
set yrange [ * : * ] noreverse nowriteback  # (currently [-5.00000:5.00000] )
Lemniscate(x) = sqrt(cos(2*x))
plot 1, 0.5, Lemniscate(t)



** 윈도우 XP 에서 Gnuplot 을 실행시켜서 그리기 명령을 입력한 화면



** 위의 명령으로 Gnuplot 이 그려준 곡선





* Octave 를 이용하여 그리기
 1) 직교방정식의 연주형 곡선 그리기 (소스)
ezplot (@(x, y) (x .^ 2 + y .^ 2).^2 - x .^ 2 + y .^ 2, 2000)

** 위의 명령으로 Octave 가 그려준 곡선




2-1) 극방정식의 연주형 곡선 그리기 (소스)
t = 0:0.005:2*pi;
polar(t, sqrt(cos(2*t)));

** 위의 명령으로 Octave 가 그려준 곡선




2-1) 극방정식의 연주형 곡선 그리기 (소스)
t = 0:0.005:2*pi;
polar(t, sqrt(cos(2*t)));

** 위의 명령으로 Octave 가 그려준 곡선





* Matplotlib 를 이용하여 그리기
1) 직교방정식의 원주형 곡선 그리기
** 파이썬 소스

#!/usr/bin/env python

"""
An example which plots the graph of an implicit function.
         Plot the lemniscate.
"""

import matplotlib
import numpy as np
import matplotlib.pyplot as plt

delta = 0.01
x = np.arange(-1.1, 1.1, delta)
y = np.arange(-1.1, 1.1, delta)
X, Y = np.meshgrid(x, y)
Z = (X**2 + Y**2)**2 - X**2 + Y**2

# 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("Lemniscate")

plt.show()




** 위의 소스를 실행시켜서 그린 그래프



2) 극방정식의 원주형 곡선 그리기
** 파이썬 소스

#!/usr/bin/env python

"""
An example which plots the graph of an implicit function.
         Plot the lemniscate.
"""

import matplotlib
import numpy as np
import matplotlib.pyplot as plt

delta = 0.01
x = np.arange(-1.1, 1.1, delta)
y = np.arange(-1.1, 1.1, delta)
X, Y = np.meshgrid(x, y)
R = np.sqrt(X**2 + Y**2)
T = np.arctan(Y/X)
Z = R**2 - np.cos(2*T)

# 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("Lemniscate")

plt.show()



 
** 위의 소스를 실행시켜서 그린 그래프




 

Posted by Scripter

댓글을 달아 주세요