ラプラシアンの極座標表示

ラプラシアン極座標表示は、水素様原子のシュレーディンガー方程式を解く所などで必要となるが、手計算は非常に面倒である。

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 から参照されるグローバル変数(?)を設定することで座標変換を定義しているようだが、詳細不明。