matplolib/함수그래프

리사주도형 그래프를 그려보자!

JackSmith 2023. 3. 20.

이번시간에는 numpy와 pylab을 이용하여 리사주도형 그래프를 4개 그려보도록 하겠습니다.

 

일단 그래프를 그려보기에 앞서 리사주도형에 대해 간략히 설명을 드리곘습니다.

리사주도형이란?

리사주도형(Lissajous Curve)은 두개의 조화운동이 서로 다른 주파수로 진동하면서 만들어지는 곡선을 말합니다.

이 곡선은 수학적으로는 매우 복잡하지만, 의외로 단순하고 우아한 모양으로 눈에 잘 띄어서 다양한 분야에 활용이 되는데요, 이 곡선은 보통 X축과 Y축으로 이루어진 second dimensions, catesian 좌표계에서 그려지게 됩니다.

조화운동의 주기, 진폭, 위상 등의 속성에 따라 곡선의 모양이 달라지게 됩니다.

예를 들어, 두 개의 운동이 같은 주파수로 진동하면 직선이 되고, 한 운동이 다른 운동보다 1/2 주기 늦게 시작하면 타원형이 됩니다. 이와 같이 여러 속성을 조합하여 다양한 모양의 리사주도형을 만들어낼 수 있습니다.

위 곡선에 대한 식은 아래와 같습니다.

저희는 위 식에서 a와b의 값 4가지를 배열에 넣어놓고, 델타의 값을 상수로 고정시킨뒤,

네개의 그래프가 어떻게 그려지는 확인해보도록 할 것입니다.

 

(리사주도형을 좀더 와닿게 이해하고 싶다, 또는  이 곡선으로 이것저걱 다뤄보고 싶다, 하는 분들은 아래 링로

들어가셔서, 12방향에서 두 힘이 시작될때, 3시방향에서 두 힘이 시작될때, 그리고 두 힘이 속도가 서로 같아서 동기적으로 움직일때와, 두 힘이 속도가 달라서 비동기적으로 움직일때에 대해 관찰해보시는 것을 추천드립니다.)

 

https://javalab.org/lissajous_figures/

 

리사주 도형 - 자바실험실

리사주 도형 리사주 도형은 매개 변수 t에 의해 x = A cos(Bt + C)y = D sin(Et + F) 의...

javalab.org

 

이제 본격적으로 파이썬으로 그래프그리기 작업에 들어가보겠습니다.

 

from numpy import sin,pi,linspace
from pylab import plot,show,subplot

a = [1,3,5,3] #plotting the curves of
b = [1,5,7,4] #different values of a/b


delta = pi/2
t = linspace(-pi,pi,300)

for i in range(0,4):
    x = sin(a[i] * t + delta)
    y = sin(b[i] * t)
    subplot(2, 2, i+1)
    plot(x,y)

show()

위 코드를 돌려보면 아래와 같은 창이 뜨게 될것입니다.

현재 위 그래프는 delta값을 pi/2로 설정했을때의 그래프들입니다.

이번에는 delta의 값을 변경해보도록 하겠습니다.

 

i) delta = pi/1

ii) delta = pi/3

 

iii) delta = pi/4

 

iiii) delta = pi/5

 

 

 

이번에는 배열 a, b의; 값을 바꿔보도록 하겠습니다.

만약, a=[1,2,2,1], b=[5,8,1,2], 그리고 델타값을 pi/4로 설정하다면,

from numpy import sin,pi,linspace
from pylab import plot,show,subplot

a = [1,2,2,1] #plotting the curves of
b = [5,8,1,2] #different values of a/b


delta = pi/4
t = linspace(-pi,pi,300)

for i in range(0,4): #0보다 크거나 같고 4보다 작다.(i=0,1,2,3)
    x = sin(a[i] * t + delta)
    y = sin(b[i] * t)
    subplot(2, 2, i+1) #2행2열
    plot(x,y)

show()

 

 

저도 이제 막 이부분에 대해서 이해하는 중이라;;ㅎㅎ;;

좀 더 이해를 하게 되고 나서, 상세하게 기술하도록 하겠습니다. 감사합니다ㅎㅎ

참고 및 출처:

https://glowingpython.blogspot.com/2011/12/lissajous-curves.html

댓글