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


  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产生3d数据,因为z也在变化。当我尝试使用 mayavi 绘制foo时,正在绘制一条线而不是平面。

我确信这是 sympy lamdify的结果,因为当expr x+y时,foo的维度是(100,100,1)

我想

问题是expr只有 2 个变量,因此您不会根据需要获得 3d 数组。因此,sympy 的 sympify 函数不会简化表达式(或给定的字符串)。因此,如果您没有'z'项,则可以添加"(z+1)**2 - z*z - 2*z - 1"(或一些简单的表达式,以便 z 项不会取消)str_exp

所以这样 sympify 会给你一个带有 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

最新更新