grad在python什么模块_如何在sympy中实现div和grad?

最近我和sypy玩了很多次,我想到了计算标量场和向量场的散度和梯度的问题。我现在要做的是解热方程,即

d/dt u(x,t)-a*lap(u(x,t))=0,其中lap(x)=(div(梯度(x))

在标量场上。因为我找不到lap,div和grad物理力学专题,我试着自己去实现from sympy import *

from sympy.physics.mechanics import *

o = ReferenceFrame('o')

x,y,z = symbols('x y z')

class div(Function):

@classmethod

def eval(cls, F):

return F.diff(x, o).dot(o.x)+F.diff(y, o).dot(o.y)+F.diff(z, o).dot(o.z)

class grad(Function):

@classmethod

def eval(cls, F):

return o.x * F.diff(x) + o.y * F.diff(y) + o.z * F.diff(z)

f = x**2 + y**3 + z*0.5

print grad(f)

print type(grad(f))

print div(grad(f))

不幸的是,这给了

^{pr2}$

我知道我可以用galgebra模块做点什么,但首先我想了解一下这里发生了什么。因此,问题是我遗漏了什么?在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值