2015-04-11 1 views
4

Так что у меня такое уравнение:Как построить эллипс по его уравнению на Python?

x^2 + 4*(z+10)^2 = e^(-0.05*z) 

Как могу я построить его, используя, например, Matplotlib.pyplot и Numpy пакетов?

+0

'х^2 = е^(- 0,05 * г) -4 * (г + 10)^2' Если' В = е^(- 0,05 * г) -4 * (z + 10)^2> 0', он имеет два решения: «x = sqrt (B)» и «x = -sqrt (B)». Найдите диапазон 'z', для которого' B> 0' использует дихотомию, затем используйте 'linepace' и постройте две кривые (' x, z' и '-x, z'), что-то вроде [этого примера] (http: //matplotlib.org/1.4.0/examples/mplot3d/lines3d_demo.html) – francis

+0

Я не знаю, является ли это решением моей проблемы. Я искал что-то вроде того, что возвращается вольфрамальфа, когда я ставил это уравнение: [link] (https://www.wolframalpha.com/input/?i=x%5E2+%2B+4*%28z%2B10%29%5E2+ % 3D + e% 5E% 28-0.05 * z% 29) –

ответ

5

Мое решение: Рассчитать каждую сторону уравнения для заданного х и z сетки. Тогда I контурные точки, удовлетворяющие уравнению. Одна сторона минус другая равна нулю.

import numpy as np 
import matplotlib.pyplot as plt 

z = -np.linspace(9,15,100) 
x = np.linspace(-26,26,1000) 

x,z = np.meshgrid(x,z) 

Z = -np.exp(-0.05*z) +4*(z+10)**2 
X = x**2 


plt.contour(x,z,(X+Z),[0]) 
plt.xlim([-1.5,1.5]) 
plt.ylim([-11.5,-8.5]) 

Out

+0

Я пытаюсь понять, как вы придумали параметры, которые вы передали linspace. Извините, если это будет очевидно! – JawguyChooser

+0

Извините. Это не очевидно. Это зависит от используемого уравнения эллипса (центра эллипса и длины оси). Я только что подсчитал некоторые значения с помощью теста и адаптировался к моей проблеме. –

Смежные вопросы