バージョン9.0で,ベクトル解析機能はWolfram言語に組み込まれた »

ベクトル解析パッケージ

三次元座標系とは,空間の各点に3つの数字を割り当てるものである.座標系を定義する際は,何を測定するか,また,どのように測定するかを決めなければならない.物理座標系が,ある特定の座標系を特に有用なものとする特殊な対称性や構造を示すことがよくある.これらの座標系に関連する問題の解を数学的にエレガントに求めるためには,正しい座標を選ぶことが主要な手順となることが多い.

このパッケージでは,さまざまな三次元座標系で微積分を行うための多様なツールを提供する.与えられた記号式あるいは数式が座標系によって異なる意味を持つことがあるので,使用している座標系および座標変数をWolfram言語に知らせる必要がある.最初のデフォルトの座標系はCartesianで,座標変数はXxYyZzである.別の座標系を頻繁に使用する人は,SetCoordinatesを使ってデフォルトの座標系を変更するとよい.

CoordinateSystemデフォルトの座標系の名前
Coordinates[]デフォルトの座標系のデフォルトの変数を与える
Coordinates[coordsys]coordsys 座標系のデフォルトの変数を与える
SetCoordinates[coordsys]デフォルトの座標系を,デフォルトの変数を持つ coordsys 座標系に設定する
SetCoordinates[coordsys[vars]]デフォルトの座標系を,変数 vars を持つ coordsys 座標系に設定する

座標系と座標変数

パッケージをロードする.
デフォルトの座標系と座標変数を再設定する.
新しいデフォルトは下のようになる.

すべての座標系は,1つのパラメータを持つ3つの面の族から派生したものと捉えることができる.各点に割り当てられた3つの数(つまり座標)は,単にその点がどの族のメンバであるかを示すものである.これらの族のメンバは座標面と呼ばれる.最も簡単な例を挙げると,Cartesian系の座標面は座標平面に平行な平面の族のメンバである.複雑な系になると,座標面が楕円面,双曲面,楕円放物面などの二次曲面の族に属することがよくある.また,焦点距離や半径のようなパラメータに依存するような特別な座標面の族もある.この場合,座標系全体がパラメータに依存する.パラメータにははじめにデフォルト値を与えておき,後でSetCoordinatesを使って再設定することができる.

座標系

座標系の定義は,文献によって異なることがよくある.このパッケージの座標系を使用するときは,以下に挙げる定義を読み,それが本当に使いたいものかどうかを確認する必要がある.このパッケージで使われている座標系の定義を調べるためには,以下に示すようにCoordinatesToCartesian[pt,coordsys]を使うのが最も簡単な方法である.これにより直交座標に変換するための公式が得られる.

直交座標系Cartesian[x,y,z]は,三次元の標準的な直交座標系である.

円筒座標系Cylindrical[r,theta,z]は,xy 平面上の点を特定するのに極座標 rθ を,その点の xy 平面からの高さを示すのに座標 z を使う.

球座標系Spherical[r,theta,phi]では,座標 r が原点から点までの距離を,座標 θ が正の z 軸からの角度を,座標 ϕ が正の z 軸から時計と反対方向での xy 平面における正の x 軸からの角度を与える.

放物筒座標系ParabolicCylindrical[u,v,z]では,座標 z を常に固定したままで座標 u あるいは v のどちらか一方を変化させることで,向かい合せの放物線を生成する.座標 z は共焦点の軸上の距離を指定する.

放物面座標系Paraboloidal[u,v,phi]では,座標 ϕ を常に固定したままで座標 u あるいは v のどちらか一方を変化させることで,向かい合せの放物線を生成する.座標 ϕ は,共通の2等分線についての回転を指定する.

楕円柱座標系EllipticCylindrical[u,v,z,a]は,a によってパラメータ化されており,2a によって分離される2つの焦点の周りに構築される.座標 u を常に固定したままで他の座標を変化させることで,共焦点の楕円の族を生成する.座標 v を固定すると共焦点の双曲線の族が生成される.座標 z は共焦点の軸上の距離を指定する.パラメータ a のデフォルト値は1である.

扁長回転楕円体座標系ProlateSpheroidal[xi,eta,phi,a]は,a によりパラメータ化されており,2つの焦点を結ぶ軸について楕円筒座標を回転させることで得られる.座標 ϕ は回転を指定する.パラメータ a のデフォルト値は1である.

偏球座標系OblateSpheroidal[xi,eta,phi,a]a によりパラメータ化されており,2つの焦点を結ぶ軸に垂直な軸について楕円柱座標を回転させることで得られる.座標 ϕ は回転を指定する.パラメータ a のデフォルト値は1である.

双極座標系Bipolar[u,v,z,a]は,a によりパラメータ化されており,2a によって分離される2つの焦点の周囲に構築される.座標 u を常に固定しておくと,両方の焦点を通過する円の族が生成される.座標 v を固定すると,焦点の1つについて退化楕円の族を生成する.座標 z は共焦点の軸上の距離を指定する.パラメータ a のデフォルト値は1である.

双球座標系Bispherical[u,v,phi,a]は,a によりパラメータ化されており,座標 ϕ が方位角を測定するという点だけ双極座標系と異なる.

トロイダル座標系Toroidal[u,v,phi,a]は,a によりパラメータ化され,2つの焦点を結ぶ軸に垂直な軸について双極座標を回転させることで得られる.座標 ϕ は回転を指定する.パラメータ a のデフォルト値は1である.

円錐座標系Conical[lambda,mu,nu,a,b]は,ab によりパラメータ化され,座標 λ を固定することによって描かれる曲面は原点を中心とする球面となる.座標 μ を固定すると原点を頂点として z 軸に沿った軸を持つ円錐が得られ,座標 ν を固定すると原点を頂点として y 軸に沿った軸を持つ円錐が得られる.パラメータ ab のデフォルト値はそれぞれ12である.

共焦楕円座標系ConfocalEllipsoidal[lambda,mu,nu,a,b,c]abc によってパラメータ化され,座標 λ を固定することで描かれる曲面は楕円面となる.座標 μ を固定することで一葉双曲面が,座標 ν を固定することで二葉双曲面が得られる.パラメータ abc のデフォルト値は,それぞれ321である.

共焦放物座標系ConfocalParaboloidal[lambda,mu,nu,a,b]ab でパラメータ化され,座標 λ を固定することによって描かれる面は負の z 方向に伸張する楕円放物面である.座標 μ を固定すると双曲放物面が,座標 ν を固定すると正の z 方向に伸張する楕円放物面が得られる.パラメータ a および b のデフォルト値は,それぞれ21である.

CoordinateRanges[]デフォルトの座標系の各座標変数の範囲となる区間を与える
Parameters[]デフォルトの座標系のデフォルトのパラメータ値のリストを与える
ParameterRanges[]デフォルトの座標系の各パラメータの範囲となる区間を与える
CoordinateRanges[coordsys], Parameters[coordsys], ParameterRanges[coordsys]
座標系 coordsys の結果を与える
SetCoordinates[coordsys[vars,param]]デフォルトの座標系を,変数 vars,パラメータ param を持つ座標系 coordsys に設定する

座標変数の範囲とパラメータ

Conical座標系におけるデフォルトの座標変数とその範囲を与える.
これは,Bipolar系には正の数でなければならないパラメータが1つあることを意味している.このパラメータのデフォルト値は1である.
これでBipolar変数とパラメータがリセットされる.
Conical座標系にはパラメータが2つあり,2つ目のパラメータは常に最初のものよりも大きくなければならない.
CoordinatesToCartesian[pt]pt の直交座標系を返す.ここで pt はデフォルト座標系で与えられるものである
CoordinatesToCartesian[pt,coordsys]pt の直交座標系を返す.ここで pt は座標系 coordsys で与えられるものである
CoordinatesFromCartesian[pt]pt のデフォルト座標系を返す.ここで pt は直交座標系で与えられるものである
CoordinatesFromCartesian[pt,coordsys]ptcoordsys 座標系を返す.ここで pt は直交座標である

直交座標への変換と直交座標からの変換

これによりSpherical座標系で{1,Pi/2,Pi/4}である点の直交座標が求められる.
変数を記号形式で与えると,一般的な座標変換公式が得られる.
これはCartesian座標からBispherical座標へ変換するための公式である.

内積やクロス積など,標準的なベクトル積の操作は通常直交座標系で定義され計算される.異なる座標系で与えられたベクトルの場合は,DotProductCrossProductScalarTripleProductを使ってベクトル積を計算することができる.これらの関数は与えられたベクトルを直交座標に変換した後,標準定義を使って積を計算する.

DotProduct[v1,v2]デフォルトの座標系で与えられたベクトル v1v2の内積を計算する
CrossProduct[v1,v2]デフォルトの座標系で与えられたベクトルのクロス積を計算する
ScalarTripleProduct[v1,v2,v3]デフォルトの座標系で与えられたベクトルのスカラー三重積を計算する
DotProduct[v1,v2,coordsys], CrossProduct[v1,v2,coordsys]
ベクトルが coordsys 座標系で与えられたときの結果を与える

さまざまな座標系でのベクトル積の計算

以下でデフォルトの座標系をデフォルトの変数を持つParabolicCylindricalに設定する.
ベクトルをデフォルトの座標系からCartesian座標に変換して,スカラー積を計算する.
幾何的に見ると,スカラー三重積が3つのベクトルによって計測される平行六面体の体積を求める.
ArcLengthFactor[{fx,fy,fz},t]t によってパラメータ化された弧に沿った弧長の導関数をデフォルトの座標系で与える
ArcLengthFactor[{fx,fy,fz},t,coordsys]導関数を座標系 coordsys で与える

弧長の微分

直交座標では弧長の微分はである.パラメータ化された曲線の積分を別の座標系で計算する場合は,その座標系に適した形式を使う必要がある.曲線上の積分を求めるには,弧長にパラメータ化をプラグインして,適切な導関数を計算してからそのパラメータについて積分しなければならない.関数ArcLengthFactorはパラメータ化を引数として取り,曲線上の弧長の導関数を求める公式を返す.

上行螺旋のパラメータを与える.
以下は螺旋上の t について,弧長の導関数がであることを意味している.パラメータ化をCartesian座標の分子の運動を記述するものと考えると,これは分子の速さがであることを意味する.
以下は3つの空間についてのスカラー値関数である.
これは螺旋上の関数の積分である.

座標変換の導関数は,偏導関数の行列である.三次元座標系の場合は,行列は常に3×3であり,ヤコビ(Jacobian)行列と呼ばれることもある.この行列の行列式は,変換のヤコビ行列式あるいはヤコビアンと呼ばれる.この行列式は変換による体積の微量の変化を測定する.このため,ヤコビ行列式は,座標変換の際に体積の微分形式を適応させるのに必要な倍数因子なのである.

JacobianMatrix[]デフォルトの変数を使って,デフォルト座標系から直交座標系への変換のヤコビ行列を与える
JacobianMatrix[pt]pt における導関数を与える.ここで pt はデフォルト座標系で与えられる
JacobianMatrix[coordsys]coordsys 座標系から直交座標系への変換の導関数を与える
JacobianMatrix[pt,coordsys]pt における導関数を与える.ここで ptcoordsys 座標系で与えられる
JacobianDeterminant[], JacobianDeterminant[pt]
ヤコビ行列の行列式を与える
ScaleFactors[], ScaleFactors[pt]
スケール係数のリストを与える

変換行列導関数,その行列式,スケール係数

これはSpherical座標からCartesian座標への変換の偏導関数の行列である.
座標変換の導関数の行列式は,微量の体積変化を与える.
この三重積分は,球座標を使って半径2の球体上の関数r2の積分を計算する.積分はSpherical座標で表されるので,非積分関数にはヤコビアンが含まれていることに注目のこと.
Div[f]デフォルトの座標系におけるベクトル場 f の発散を与える
Curl[f]デフォルトの座標系におけるベクトル場 f の回転を与える
Grad[f]デフォルトの座標系におけるスカラー関数 f の勾配を与える
Laplacian[f]デフォルトの座標系におけるスカラー関数 f のラプラシアンを与える
Biharmonic[f]デフォルトの座標系におけるスカラー関数 f のラプラシアンのラプラシアンを与える
Div[f,coordsys], Curl[f,coordsys]座標系が coordsys である場合の結果を与える

一般的な微分操作

前述のベクトル積でもそうであるように,三次元における一般的な微分操作はCartesian座標で定義されている.別の座標系での作業中に,ベクトル積や微分を計算したい場合は,原則としてまずCartesian座標系に変換してから計算を行わなければならない.LaplacianGrad等の関数で座標系を指定する場合は,この変換は自動的に実行される.

通常の勾配である.
以下では,関数を非標準の変数xyzを持つProlateSpheroidal座標にあるものとして扱っているので,上の勾配とは異なる.
未知の関数を与えると,結果は記号形式で返される.