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

2024-10-01 13:32:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正试图用matplotlib绘制以下等式:

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

我不想通过简单地赋值x = np.linspace(-5,5)然后把它放到我的方程中来解决这个糟糕的方程

我想知道是否可以直接用matplotlib.pyplot绘制解决方案?我能够使用Geogebra很好且快速地绘制函数,因此我认为使用python也可以实现这一点。然而,我没有发现关于这一点的任何其他问题。有人有什么想法吗


Tags: 函数matplotlibnp绘制解决方案方程xy赋值
1条回答
网友
1楼 · 发布于 2024-10-01 13:32:03

一种方法是使用Sympy的^{}函数

代码:

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在引擎盖下的工作。要在vanilla 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

相关问题 更多 >