Sympy Lambdify在mayavi获得2d方程的3d图

时间:2015-03-16 13:47:19

标签: python sympy mayavi

  str_exp="x+y"
  expr = sympify((str_expr))
  X,Y,Z=np.ogrid[x_start:x_end:no_x_points , y_start:y_end:no_y_points , z_start:z_end:no_z_points]
  f = lambdify((x,y,z), expr)
  foo=f(X,Y,Z)

尽管exprxy的函数,但我希望foo能够生成三维数据,因为z也在变化。当我尝试使用mayavi绘制foo时,会绘制一条线而不是一条平面。

我确信,当lamdifyfoo

时,(100,100,1)因为expr的维度为x+y而是同情的结果{{1}}

1 个答案:

答案 0 :(得分:1)

我想问题是expr只有2个变量,因此你不会根据需要获得3d数组。 因此,sympy的同情功能并不能简化表达(或给出的字符串)。因此,如果您没有"(z+1)**2 - z*z - 2*z - 1"个词,则可以将str_exp(或一些简单的表达式,以便z术语不会取消)添加到'z'

所以这种方式同情会给你一个带z的表达式。

>>str_expr="x+y+(z+1)**2 - z*z - 2*z - 1"
>>sympify((str_expr))
x + y - z**2 - 2*z + (z + 1)**2 - 1