【发布时间】:2013-10-17 09:22:37
【问题描述】:
我想使用 matplotlib 绘制一个通用三次函数的曲线。我想绘制由函数定义的曲线,例如:x^3 + y^3 + y^2 + 2xy^2 = 0。这可能吗?
【问题讨论】:
-
^不是我想要的,但谢谢!
标签: python matplotlib
我想使用 matplotlib 绘制一个通用三次函数的曲线。我想绘制由函数定义的曲线,例如:x^3 + y^3 + y^2 + 2xy^2 = 0。这可能吗?
【问题讨论】:
标签: python matplotlib
一种明显的方法是通过数值求解方程来找到满足关系的(x,y) 对。
from scipy import optimize
f=lambda x, y: (x**3+y**3+y**2+2*x*y*y-0)**2
y_range=linspace(-1, 1, 100)
x_range=[optimize.fmin(f,0,args=(y,), disp=0) for y in y_range]
xr=linspace(-1,1)
yr=linspace(-1,1)
X, Y=meshgrid(xr, yr)
Z=f(X, Y)
plt.plot(x_range, y_range, 'k')
plt.contourf(xr, yr, Z, levels=linspace(0,0.001,51), alpha=0.5)
plt.colorbar()
黑线是你想要的。轮廓只是为了显示函数在 0 附近的行为。optimize.fmin() 不是这里最有效的求解器,保持简单即可。
当x 或y 的绝对值很大时,您实际上是在绘制x+0.4496y=0,您不需要执行上述所有操作。
【讨论】:
我的 2 美分:
x^3+y^3+y^2+2xy^2=0
y^2=-x^3-y^3-2xy^2
y^2>0 => -x^3-y^3-2xy^2>0 => x^3+y^3+2xy^2
x(x^2+2y^2)+y^3 x(x^2+2y^2) (x^2+2y^2)
0 0 0>y^3/x =>
(x>0 && y0)
您的图表将跨越第二和第四象限
【讨论】: