python - 绘制非多项式多元隐式方程

标签 python matplotlib math plot graph

我目前正在尝试使用 matplotlib 绘制以下方程:

-4xy + x² - y² + 4(x³y - xy³) = 0

我不想通过简单地分配x = np.linspace(-5,5)然后将其放入我的方程来求解这个可怕的方程。

我想知道是否可以直接使用matplotlib.pyplot绘制解决方案?我能够使用 Geogebra 很好、快速地绘制函数,所以我想这也应该可以使用 python 实现。但是,我还没有发现任何其他与此相关的问题。有人有什么想法吗?

最佳答案

实现此目的的一种方法是使用 Sympy 的 plot_implicit功能。

代码:

from sympy import plot_implicit, symbols, Eq

x, y = symbols('x y')

plot_implicit(Eq(-4*x*y+x**2-y**2+4*(x**3-x*y**3), 0),
              adaptive=False,
              points=1000)

输出:

enter image description here

在底层,它使用网格来决定是否在图表上的每个点绘制函数。这也是 Geogebra 将在幕后做的事情。要在普通 matplotlib 中应用这种方法,我们可以使用等高线图:

代码:

import numpy as np
import matplotlib.pyplot as plt

# Plot axes in middle
fig, ax = plt.subplots()
ax.spines['left'].set_position('center')
ax.spines['bottom'].set_position('center')
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')

# Set up mesh grid
x = y = np.linspace(-1.0, 1.0, 100)
X, Y = np.meshgrid(x,y)

# Plot contour
ax.contour(X, Y, -4*X*Y+X**2-Y**2+4*(X**3-x*Y**3), [0])
plt.show()

输出:

enter image description here

关于python - 绘制非多项式多元隐式方程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60111935/

相关文章:

python - 计算可迭代对象中元素的数量

python-闹钟建议

python - 在 Python 中使用 "Disappearing Tail"动画化粒子路径

python - 如何用imshow()显示三个二维直方图的总和?

python - 什么是 R 中不同颜色的 "good"调色板? (或 : can viridis and magma be combined together? )

math - 防止TI BASIC表达式扩展

python - 如何在Python中将一个项目的存储桶中的数据加载到另一个项目的表中?

c - C语言中双变量数据类型的算术位移位

c++ - 结合重复,计算上的差异

python - 计算字典中唯一项目的数量