Python Sympy计算梯度、散度和旋度的实例
sympy有个vector模块,里面提供了求解标量场、向量场的梯度、散度、旋度等计算,官方参考连接:
http://docs.sympy.org/latest/modules/vector/index.html
sympy中计算梯度、散度和旋度主要有两种方式:
一个是使用∇∇算子,sympy提供了类Del(),该类的方法有:cross、dot和gradient,cross就是叉乘,计算旋度的,dot是点乘,用于计算散度,gradient自然就是计算梯度的。
另一种方法就是直接调用相关的API:curl、divergence和gradient,这些函数都在模块sympy.vector下面。
使用sympy计算梯度、散度和旋度之前,首先要确定坐标系,sympy.vector模块里提供了构建坐标系的类,常见的是笛卡尔坐标系,CoordSys3D,根据下面的例子可以了解到相应应用。
(1)计算梯度
##1gradient C=CoordSys3D('C') delop=Del()#nabla算子 #标量场f=x**2*y-xy f=C.x**2*C.y-C.x*C.y res=delop.gradient(f,doit=True)#使用nabla算子 #res=delop(f).doit() res=gradient(f)#直接使用gradient print(res)#(2*C.x*C.y-C.y)*C.i+(C.x**2-C.x)*C.j
(2)计算散度
##divergence C=CoordSys3D('C') delop=Del()#nabla算子 #向量场f=x**2*y*i-xy*j f=C.x**2*C.y*C.i-C.x*C.y*C.j res=delop.dot(f,doit=True) #res=divergence(f) print(res)#2*C.x*C.y-C.x,即2xy-x,向量场的散度是标量
(3)计算旋度
##curl C=CoordSys3D('C') delop=Del()#nabla算子 #向量场f=x**2*y*i-xy*j f=C.x**2*C.y*C.i-C.x*C.y*C.j res=delop.cross(f,doit=True) #res=curl(f) print(res)#(-C.x**2-C.y)*C.k,即(-x**2-y)*k,向量场的旋度是向量
以上这篇PythonSympy计算梯度、散度和旋度的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。