【问题标题】:how to draw a nonlinear function using matplotlib?如何使用 matplotlib 绘制非线性函数?
【发布时间】:2013-10-17 09:22:37
【问题描述】:

我想使用 matplotlib 绘制一个通用三次函数的曲线。我想绘制由函数定义的曲线,例如:x^3 + y^3 + y^2 + 2xy^2 = 0。这可能吗?

【问题讨论】:

标签: python matplotlib


【解决方案1】:

一种明显的方法是通过数值求解方程来找到满足关系的(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】:

    我的 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)
    您的图表将跨越第二和第四象限

    【讨论】:

      猜你喜欢
      • 2016-10-31
      • 2021-02-05
      • 2013-07-08
      • 2018-05-01
      • 2010-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多