Так что у меня такое уравнение:Как построить эллипс по его уравнению на Python?
x^2 + 4*(z+10)^2 = e^(-0.05*z)
Как могу я построить его, используя, например, Matplotlib.pyplot и Numpy пакетов?
Так что у меня такое уравнение:Как построить эллипс по его уравнению на Python?
x^2 + 4*(z+10)^2 = e^(-0.05*z)
Как могу я построить его, используя, например, Matplotlib.pyplot и Numpy пакетов?
Мое решение: Рассчитать каждую сторону уравнения для заданного х и 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])
Я пытаюсь понять, как вы придумали параметры, которые вы передали linspace. Извините, если это будет очевидно! – JawguyChooser
Извините. Это не очевидно. Это зависит от используемого уравнения эллипса (центра эллипса и длины оси). Я только что подсчитал некоторые значения с помощью теста и адаптировался к моей проблеме. –
Используйте функцию plot_implicit для sympy http://docs.sympy.org/latest/modules/plotting.html или используйте Sage http://www.sagemath.org/.
Я отправил свой ответ, когда увидел ваш комментарий, но спасибо большое! –
'х^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
Я не знаю, является ли это решением моей проблемы. Я искал что-то вроде того, что возвращается вольфрамальфа, когда я ставил это уравнение: [link] (https://www.wolframalpha.com/input/?i=x%5E2+%2B+4*%28z%2B10%29%5E2+ % 3D + e% 5E% 28-0.05 * z% 29) –