Как я могу преобразовать симпози выражение в график? - PullRequest
0 голосов
/ 10 января 2020

Как мне преобразовать следующее уравнение как функцию от f_ q (которая является функцией 2D-вектора q ) в графическое представление?

enter image description here

Для объяснения может быть проще рассмотреть что-то вроде y = sin (x)

Ответы [ 2 ]

1 голос
/ 10 января 2020

У Sympy есть собственный модуль построения . Этот модуль в основном для удобства, для быстрого просмотра функции без необходимости оставлять симпози. Возможности форматирования очень ограничены.

Печать y=sin(x) это просто:

from sympy import plot, sin
from sympy.abc import x
plot(sin(x))

Но это только для 1D функций. Для построения 2D-функций matplotlib является библиотекой go. Самым простым будет двухмерный график с использованием цвета в качестве размера 3 . Более приятные и информативные сюжеты можно получить из 3D сюжетов. Matplotlib стандартно позволяет взаимодействовать с ними с разных сторон.

Вот пример:

from sympy import sin, lambdify
from sympy.abc import x, y, a, b

f = sin(a*x*y+b) / (x*x+y*y+1)
# convert to a numpy function, make sure all variables apart from x and y have a fixed value
f_np = lambdify((x,y), f.subs({a: 1.5, b: 1}), 'numpy')


from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np

x, y = np.meshgrid(np.linspace(-2,2,100), np.linspace(-2,2,100))
z = f_np(x, y)

fig = plt.figure()
ax = plt.axes(projection="3d")
ax.plot_surface(x, y, z, edgecolor='none', cmap='terrain')

plt.show()

example plot

См. этот интересный сайт , чтобы узнать больше о 3D-графике.

0 голосов
/ 10 января 2020

Я думаю, что вам нужно установить matplotlib, но тогда вы сможете сделать

>>> plot(x**2 + 1)

. Для вашего примера вам нужно будет указать значения для всех параметров, чтобы увидеть график по q, например

>>> plot(omega_q.subs([(omega0, 1), (Omega,2)]))

См. Документацию по печати в doc / src / modules / plotting.rst

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...