a*x^2 + b*y^2 + c*x + d*y + e = 0
x^2 + y^2 - 1= 0 ,我想画一个圆。
x^2 + y^2 - 1= 0
我找不到绘制这种方程的函数。可以绘出的方程通常是多项式函数的形式 x
x
y = a*x^n + ....
另一个问题的答案是:
import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D x = np.arange(-5, 5, 0.25) y = np.arange(-5, 5, 0.25) X, Y = np.meshgrid(x, y) F = 3 + 2*X + 4*X*Y + 5*X*X fig = plt.figure() ax = fig.add_subplot(111, projection='3d') ax.plot_surface(X, Y, F) plt.show()
这是一个三维的二维曲面,而我需要一个二维的曲线。
你需要的是 水平集 对应于0值的2d曲面的。你应该使用 pyplot.contour 卸下工作的重担。你只需要定义你感兴趣的范围和网格上的函数。修改问题中的示例代码:
pyplot.contour
import numpy as np import matplotlib.pyplot as plt x = np.linspace(-5, 5, 50) y = np.linspace(-5, 5, 50) X, Y = np.meshgrid(x, y) F = 5*X**2 - 4*X*Y + 2*Y**2 + 3*X - 4*Y - 1 fig,ax = plt.subplots() ax.contour(X, Y, F, levels=[0]) # take level set corresponding to 0 plt.show()
网格越细,轮廓线越平滑。