2017-10-28 12 views
1

2つの要素を3つに変換し、結果のベクトルから派生を取る関数(u、v) - >(x、y、z)を作成する方法をSymPyで探しています。それはセージに次のようになります。sympyでベクトル関数を作成するには?

u = var('u') 
v = var('v') 
x = (2 + sin(u) *sin(v)) *sin(3*v/2) 
y = cos(u) *sin(v) + 2 *v/pi - 2 
z = (2 + sin(u) *sin(v)) *cos(3*v/2) 
r(u, v) = [x, y, z] 
e1 = derivative(r, u) 

答えて

2

SymPyは、様々な座標系で計算を行って向いているVector moduleを持っています。 (何もLaTeXの処理を想定していない)

from sympy import * 
var('u v') 
x = (2 + sin(u) *sin(v)) *sin(3*v/2) 
y = cos(u) *sin(v) + 2 *v/pi - 2 
z = (2 + sin(u) *sin(v)) *cos(3*v/2) 
    # everything so far was as in your code 
r = Matrix([x, y, z]) 
e1 = r.diff(u) 
pprint(e1) # "pretty" print 

出力:

⎡   ⎛3⋅v⎞  ⎤ 
⎢sin(v)⋅sin⎜───⎟⋅cos(u)⎥ 
⎢   ⎝ 2 ⎠  ⎥ 
⎢      ⎥ 
⎢ -sin(u)⋅sin(v) ⎥ 
⎢      ⎥ 
⎢     ⎛3⋅v⎞⎥ 
⎢sin(v)⋅cos(u)⋅cos⎜───⎟⎥ 
⎣     ⎝ 2 ⎠⎦ 
あなたは座標変換を行う必要がない場合はしかし、そうのように、1列の行列 Matrix([x, y, z])としてベクトルを表現する方が簡単です
関連する問題