2014-09-12 3 views
0

복소수로 윤곽 플롯을 만들려고합니다. (matplotlib, pylab을 사용하고 있습니다).윤곽 그리기 복소수와 접합체

나는 고조파 다항식에 날카로운 경계 함께 일하고 있지만, 특히 지금은 플롯하려고 :

재 (Z (바) - 전자^(Z)) = 0 임 (Z (바) - e^z) = 0

등각도를 서로 겹치게하여 방정식 z (bar) = e^(z)에 대한 해의 수를 결정하기 위해 0을 찾으십시오.

누구나 등고선 플로팅, 특히 복소수에 대한 경험이 있습니까?

import numpy as np 
from matplotlib import pyplot as plt 


x = np.r_[0:10:30j] 
y = np.r_[0:10:20j] 
X, Y = np.meshgrid(x, y) 
Z = X*np.exp(1j*Y) # some arbitrary complex data 

def plotit(z, title): 
    plt.figure() 
    cs = plt.contour(X,Y,z) # contour() accepts complex values 
    plt.clabel(cs, inline=1, fontsize=10) # add labels to contours 
    plt.title(title) 
    plt.savefig(title+'.png') 

plotit(Z, 'real') 
plotit(Z.real, 'explicit real') 
plotit(Z.imag, 'imaginary') 

plt.show() 

는 편집 : 위 내 번호 및 Z에 대한 점에 유의, 나는 (x 축에 IY)의 현실과 상상의 두 부분 플롯 필요 ​​- 전자^(X + IY) = 0. 현재있는 Z는 단순히 임의적입니다. 광산을 연결하려고 할 때 2D 배열이 없으므로 오류가 발생합니다.

+0

복소수로 작업 할 때 실수/허수 부 또는 절대 값 중 하나를 플롯하기 위해 실수 값을 가져와야합니다. 이를 위해 절대 값을 사용하고자한다고 생각합니다. 참고 :이 질문은 너무 광범위합니다. 웹에서 matplotlib에 대한 많은 윤곽 및 문서가 있습니다. – Ajean

+0

필자는 실제와 가상의 플롯을 뽑아 내고 필요한 등식의 제로를 찾기 위해 동일한 등고선에 개별적으로 플롯하려고합니다. – user105797

+0

그게이 질문을 [XY 문제] (http://meta.stackexchange.com/a/66378)의 일부로 만듭니다. 당신의 진정한 질문은 서로의 윤곽선을 그리는 법입니다. 시도해 보셨습니까? – Ajean

답변

2

코드를 게시하지 않았으므로 어떻게 플로팅할지 모릅니다. 그러나 일반적으로 멀리 이동하는 것이 좋습니다. 직접 객체 메소드를 사용하여 pylab이나 matplotlib에 대한 pyplot 인터페이스를 사용하는 것은 훨씬 강력하고 간단합니다. 다음은 동일한 플롯에서 두 세트의 데이터 윤곽을 플롯하는 예입니다.

import numpy as np 
import matplotlib.pyplot as plt 

# making fake data 
x = np.linspace(0, 2) 
y = np.linspace(0, 2) 
c = x[:,np.newaxis] * y 
c2 = np.flipud(c) 

# plot 
fig, ax = plt.subplots(1, 1) 
cont1 = ax.contour(x, y, c, colors='b') 
cont2 = ax.contour(x, y, c2, colors='r') 
cont1.clabel() 
cont2.clabel() 
plt.show() 

tom10의 경우 다음 코드가 생성합니다. colors을 단일 색상으로 설정하면 두 개의 그림을 훨씬 더 쉽게 구분할 수 있습니다..

+0

그에 따라 내 게시물을 편집 했으므로 내 방정식을 플로팅하고 둘 다 플로팅하는 데 도움이 될 수있는 방법이 있습니까? 동일한 창에 실수와 허수의 부분이 있습니까? – user105797

+0

당신의 문제는 당신이 plotting function 내부에서'plt.figure' *를 호출한다는 것입니다. 그것은 새로운 인물을 만들 것입니다! 당신이 찾고있는 것을 얻기 위해서 당신이해야 할 것은 그 라인을 지우는 것입니다. 그러나 나는 또한 당신이 그것을 피할 수있는 경우 전역 변수에 의존하는 플로팅 함수를 사용하지 않을 것입니다. – Ajean

+0

+1 : 이것이 효과가있을 것이라고 생각합니다. 그러나 결과 플롯을 표시하지 않는 것이 더 설득력이 있습니다.이 특정 질문에 대해서도 이것이 혼란스러워 보이는 것이 정말 유용할까요? – tom10