ラプラシアンの極座標表示は、水素様原子のシュレーディンガー方程式を解く所などで必要となるが、手計算は非常に面倒である。
Maxima での計算も普通にやろうとすると容易ではないが、ベクトル解析用の vect パッケージを使うと簡単にできるとのこと(Support Mathematics at UT Austin 参照)。
(%i1) load(vect); (%o1) /usr/share/maxima/5.24.0/share/vector/vect.mac (%i2) scalefactors([[r*sin(theta)*cos(phi), r*sin(theta)*sin(phi), r*cos(theta)], r, theta, phi]); (%o2) done (%i6) depends(f, [r, phi, theta]); (%o6) [f(r, phi, theta)] (%i7) express(laplacian(f)); d df 2 d df (%o7) (-- (-- r abs(sin(theta))) + ------ (------ abs(sin(theta))) dr dr dtheta dtheta df ---- d dphi 2 + ---- (---------------))/(r abs(sin(theta))) dphi abs(sin(theta)) (%i8) ev(%, diff); 2 d f 2 df (%o8) (--- r abs(sin(theta)) + 2 -- r abs(sin(theta)) 2 dr dr 2 d f df ----- 2 ------ cos(theta) sin(theta) 2 d f dtheta dphi + ------- abs(sin(theta)) + ---------------------------- + ---------------) 2 abs(sin(theta)) abs(sin(theta)) dtheta 2 /(r abs(sin(theta))) (%i9) ratexpand(%); 2 2 d f d f df ----- df ------- ------ cos(theta) 2 2 -- 2 2 dtheta dphi dr dtheta d f (%o9) ----------------- + -------------- + ---- + ------- + --- 2 2 2 r 2 2 r sin(theta) r sin (theta) r dr
express は、laplacian, grad, div などのベクトル解析の演算子を偏微分演算子に展開してくれる。ev によって偏微分演算子 diff を評価したあと、ratexpand で整理している。scalefactors は express から参照されるグローバル変数(?)を設定することで座標変換を定義しているようだが、詳細不明。