2011-01-14 37 views
6

içindeki (örtük) denklemlerin çizim sistemi Öncelikle, python ve matplotlib konusunda yeniyim. Bir şekilde birkaç örtülü denklem sistemini çizmem gerekiyor. Bu çizmek için kolay bir yol ilk denklemler açık yapmak yerine, başka var mıMatplotlib

3x+2y=1 

(yani y=...):

denklem

şeklindedir?

cevap

4

İki uzay boyutlarında örtülü araziler yapmak contour() kullanabilirsiniz:

x = numpy.linspace(-2., 2.) 
y = numpy.linspace(-2., 2.)[:, None] 
contour(x, y.ravel(), 3*x + 2*y, [1]) 

3 yılında boyutları, yerine matplotlib ait Mayavi kullanmanızı öneririz.

+0

Hm .. Bu, aynı olması gereken y = (1-3x)/2 için grafikten farklı bir grafik oluşturuyor gibi görünüyor. Herhangi bir fikir neden? – 0sh

+0

@mewoshh: Tam kodunuzu gösterebilir misiniz, lütfen? Kontur (x.ravel(), y, y- (1-3 * x)/2, [0]) 'gibi bir şey olmalıdır. Ve grafik yukarıdaki kodla aynı olmalıdır. –

+0

“Kontur (x.ravel(), y, y- (1-3 * x)/2, [0])' ile aynıdır. Sorun şu ki, bu, y = (1-3x)/2' nin gerçek grafiğiyle aynı değildir. Bunu x = np.arange (-6,6,0.01) ile karşılaştırın; Y = (1-3 * x)/2; arsa (x, y) '. – 0sh

7
import numpy as np 
import matplotlib.pyplot as plt 
# Note the order of y,x. 
y,x=np.ogrid[-5:5:100j,-5:5:100j] 
plt.contour(x.ravel(),y.ravel(),3*x+2*y,[1]) 
plt.show() 

alt text

+0

Üç boşluk boyutu için, [Mayavi] (http://code.enthought.com/projects/mayavi/docs/development/html/mayavi/auto/mlab_helper_functions.html#enthought.mayavi.mlab. Bunun yerine contour3d). (Cevabımı sileceğim, çünkü seninki bir fotoğrafın var :) –

+0

@Sven Marnach: Çözümü beğendim çünkü daha az bellek kullanıyor. Belki de geri almak? – unutbu

+0

Tamam, özel isteğiniz üzerine :) –