Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何获得旋度的分量?_Python_Math_Sympy - Fatal编程技术网

Python 如何获得旋度的分量?

Python 如何获得旋度的分量?,python,math,sympy,Python,Math,Sympy,在第一个答案中 from sympy.physics.vector import ReferenceFrame from sympy.physics.vector import curl R = ReferenceFrame('R') F = R[1]**2 * R[2] * R.x - R[0]*R[1] * R.y + R[2]**2 * R.z G = curl(F, R) 现在,他打印G,获得旋度场分量的表达式,手动将它们指定为 u = 0 v = y**2 w = -2*y*z -

在第一个答案中

from sympy.physics.vector import ReferenceFrame
from sympy.physics.vector import curl
R = ReferenceFrame('R')
F = R[1]**2 * R[2] * R.x - R[0]*R[1] * R.y + R[2]**2 * R.z
G = curl(F, R) 
现在,他打印G,获得旋度场分量的表达式,手动将它们指定为

u = 0
v = y**2
w = -2*y*z - y 
如何直接从G中获取,u,v,w,而不是如何手动打印和分配? 什么是G?我们能把它转换成字符串吗? 我不想绘图,我只想要旋度分量的表达式。

像这样

>>> list(G.args[0][0])
[0, R_y**2, -2*R_y*R_z - R_y]
或者,使用R的varlist属性,我们可以将R_x替换为x,等等,如下所示

>>> u,v,w = G.args[0][0].subs(dict(zip(R.varlist, var('x:z'))))
>>> u, v, w
(0, y**2, -2*y*z - y)
像这样

>>> list(G.args[0][0])
[0, R_y**2, -2*R_y*R_z - R_y]
或者,使用R的varlist属性,我们可以将R_x替换为x,等等,如下所示

>>> u,v,w = G.args[0][0].subs(dict(zip(R.varlist, var('x:z'))))
>>> u, v, w
(0, y**2, -2*y*z - y)

要进一步详细说明@smichr的答案:

from sympy.abc import x, y, z
print(list(G.args[0][0].subs([(R[0], x), (R[1], y), (R[2], z)])))
导致

[0, y**2, -2*y*z - y]

以与问题相同的形式获取所有内容

附言: G.args给出了G.printG.args的值,可用于调查它是如何建立的。在Symphy中,可以帮助找出符号的内部表示形式

PPS:关于您在评论中的问题:

R = ReferenceFrame('R')
P = y**2 *z
Q =- x*y
R = z**2
H = P* R.x +Q * R.y + RR* R.z

不工作,因为R=z**2擦除R=ReferenceFrame'R'。您应该使用不同的变量名。

要进一步详细说明@smichr的答案:

from sympy.abc import x, y, z
print(list(G.args[0][0].subs([(R[0], x), (R[1], y), (R[2], z)])))
导致

[0, y**2, -2*y*z - y]

以与问题相同的形式获取所有内容

附言: G.args给出了G.printG.args的值,可用于调查它是如何建立的。在Symphy中,可以帮助找出符号的内部表示形式

PPS:关于您在评论中的问题:

R = ReferenceFrame('R')
P = y**2 *z
Q =- x*y
R = z**2
H = P* R.x +Q * R.y + RR* R.z

不工作,因为R=z**2擦除R=ReferenceFrame'R'。您应该使用不同的变量名。

链接/答案使用sympy。如果这也是您正在使用的,请修复标记。并展开您的代码,以便我们更清楚地了解上下文和变量。@hpaulj我已经编辑了问题,请看一下curl文档-链接/答案使用sympy。如果这也是您正在使用的,请修复标记。并扩展您的代码,以便我们对上下文和变量有更清晰的了解。@hpaulj我已经编辑了这个问题,请看一下curl文档-我是python新手,请跟我谈谈。你能解释一下什么是G吗?G.args[0][0]做什么?从sympy.abc导入x,y,z P=y**2*z Q=-x*y R=z**2 R=ReferenceFrame'R'H=P*R.x+Q*R.y+R*R.z F=H.subs[x,R[0],y,R[1],z,R[2]]printF G=curlF,R printlistG.args[0][0]。subs[0],x,R[1],y,R[2],python]这产生了一个错误,如何替换P,Q,R[1],请跟我一起用新的。你能解释一下什么是G吗?G.args[0][0]做什么?从sympy.abc导入x,y,z P=y**2*z Q=-x*y R=z**2 R=ReferenceFrame'R'H=P*R.x+Q*R.y+R*R.z F=H.subs[x,R[0],y,R[1],z,R[2]]printF G=curlF,R printlistG.args[0][0]。subs[0],x,R[1],y,R[2],python]这产生了一个错误,如何替换P,Q,R[1],请跟我一起用新的。你能解释一下什么是G吗?G.args[0][0]是做什么的?我是python新手,请告诉我。你能解释一下什么是G吗?G.args[0][0]做什么?