ベクトル解析パッケージ
三次元座標系とは,空間の各点に3つの数字を割り当てるものである.座標系を定義する際は,何を測定するか,また,どのように測定するかを決めなければならない.物理座標系が,ある特定の座標系を特に有用なものとする特殊な対称性や構造を示すことがよくある.これらの座標系に関連する問題の解を数学的にエレガントに求めるためには,正しい座標を選ぶことが主要な手順となることが多い.
このパッケージでは,さまざまな三次元座標系で微積分を行うための多様なツールを提供する.与えられた記号式あるいは数式が座標系によって異なる意味を持つことがあるので,使用している座標系および座標変数をWolfram言語に知らせる必要がある.最初のデフォルトの座標系はCartesianで,座標変数はXx,Yy,Zzである.別の座標系を頻繁に使用する人は,SetCoordinatesを使ってデフォルトの座標系を変更するとよい.
CoordinateSystem | デフォルトの座標系の名前 |
Coordinates[] | デフォルトの座標系のデフォルトの変数を与える |
Coordinates[coordsys] | coordsys 座標系のデフォルトの変数を与える |
SetCoordinates[coordsys] | デフォルトの座標系を,デフォルトの変数を持つ coordsys 座標系に設定する |
SetCoordinates[coordsys[vars]] | デフォルトの座標系を,変数 vars を持つ coordsys 座標系に設定する |
すべての座標系は,1つのパラメータを持つ3つの面の族から派生したものと捉えることができる.各点に割り当てられた3つの数(つまり座標)は,単にその点がどの族のメンバであるかを示すものである.これらの族のメンバは座標面と呼ばれる.最も簡単な例を挙げると,Cartesian系の座標面は座標平面に平行な平面の族のメンバである.複雑な系になると,座標面が楕円面,双曲面,楕円放物面などの二次曲面の族に属することがよくある.また,焦点距離や半径のようなパラメータに依存するような特別な座標面の族もある.この場合,座標系全体がパラメータに依存する.パラメータにははじめにデフォルト値を与えておき,後でSetCoordinatesを使って再設定することができる.
Bipolar | Bispherical |
Cartesian | ConfocalEllipsoidal |
ConfocalParaboloidal | Conical |
Cylindrical | EllipticCylindrical |
OblateSpheroidal | ParabolicCylindrical |
Paraboloidal | ProlateSpheroidal |
Spherical | Toroidal |
座標系の定義は,文献によって異なることがよくある.このパッケージの座標系を使用するときは,以下に挙げる定義を読み,それが本当に使いたいものかどうかを確認する必要がある.このパッケージで使われている座標系の定義を調べるためには,以下に示すようにCoordinatesToCartesian[pt,coordsys]を使うのが最も簡単な方法である.これにより直交座標に変換するための公式が得られる.
直交座標系Cartesian[x,y,z]は,三次元の標準的な直交座標系である.
円筒座標系Cylindrical[r,theta,z]は,x‐y 平面上の点を特定するのに極座標 r と θ を,その点の x‐y 平面からの高さを示すのに座標 z を使う.
球座標系Spherical[r,theta,phi]では,座標 r が原点から点までの距離を,座標 θ が正の z 軸からの角度を,座標 ϕ が正の z 軸から時計と反対方向での x‐y 平面における正の 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]は,a と b によりパラメータ化され,座標 λ を固定することによって描かれる曲面は原点を中心とする球面となる.座標 μ を固定すると原点を頂点として z 軸に沿った軸を持つ円錐が得られ,座標 ν を固定すると原点を頂点として y 軸に沿った軸を持つ円錐が得られる.パラメータ a と b のデフォルト値はそれぞれ1,2である.
共焦楕円座標系ConfocalEllipsoidal[lambda,mu,nu,a,b,c]は a,b,c によってパラメータ化され,座標 λ を固定することで描かれる曲面は楕円面となる.座標 μ を固定することで一葉双曲面が,座標 ν を固定することで二葉双曲面が得られる.パラメータ a,b,c のデフォルト値は,それぞれ3,2,1である.
共焦放物座標系ConfocalParaboloidal[lambda,mu,nu,a,b]は a と b でパラメータ化され,座標 λ を固定することによって描かれる面は負の z 方向に伸張する楕円放物面である.座標 μ を固定すると双曲放物面が,座標 ν を固定すると正の z 方向に伸張する楕円放物面が得られる.パラメータ a および b のデフォルト値は,それぞれ2,1である.
CoordinateRanges[] | デフォルトの座標系の各座標変数の範囲となる区間を与える |
Parameters[] | デフォルトの座標系のデフォルトのパラメータ値のリストを与える |
ParameterRanges[] | デフォルトの座標系の各パラメータの範囲となる区間を与える |
CoordinateRanges[coordsys], Parameters[coordsys], ParameterRanges[coordsys] | |
座標系 coordsys の結果を与える | |
SetCoordinates[coordsys[vars,param]] | デフォルトの座標系を,変数 vars,パラメータ param を持つ座標系 coordsys に設定する |
CoordinatesToCartesian[pt] | pt の直交座標系を返す.ここで pt はデフォルト座標系で与えられるものである |
CoordinatesToCartesian[pt,coordsys] | pt の直交座標系を返す.ここで pt は座標系 coordsys で与えられるものである |
CoordinatesFromCartesian[pt] | pt のデフォルト座標系を返す.ここで pt は直交座標系で与えられるものである |
CoordinatesFromCartesian[pt,coordsys] | pt の coordsys 座標系を返す.ここで pt は直交座標である |
内積やクロス積など,標準的なベクトル積の操作は通常直交座標系で定義され計算される.異なる座標系で与えられたベクトルの場合は,DotProduct,CrossProduct,ScalarTripleProductを使ってベクトル積を計算することができる.これらの関数は与えられたベクトルを直交座標に変換した後,標準定義を使って積を計算する.
DotProduct[v1,v2] | デフォルトの座標系で与えられたベクトル v1と v2の内積を計算する |
CrossProduct[v1,v2] | デフォルトの座標系で与えられたベクトルのクロス積を計算する |
ScalarTripleProduct[v1,v2,v3] | デフォルトの座標系で与えられたベクトルのスカラー三重積を計算する |
DotProduct[v1,v2,coordsys], CrossProduct[v1,v2,coordsys]等 | |
ベクトルが coordsys 座標系で与えられたときの結果を与える |
ArcLengthFactor[{fx,fy,fz},t] | t によってパラメータ化された弧に沿った弧長の導関数をデフォルトの座標系で与える |
ArcLengthFactor[{fx,fy,fz},t,coordsys] | 導関数を座標系 coordsys で与える |
直交座標では弧長の微分はである.パラメータ化された曲線の積分を別の座標系で計算する場合は,その座標系に適した形式を使う必要がある.曲線上の積分を求めるには,弧長にパラメータ化をプラグインして,適切な導関数を計算してからそのパラメータについて積分しなければならない.関数ArcLengthFactorはパラメータ化を引数として取り,曲線上の弧長の導関数を求める公式を返す.
座標変換の導関数は,偏導関数の行列である.三次元座標系の場合は,行列は常に3×3であり,ヤコビ(Jacobian)行列と呼ばれることもある.この行列の行列式は,変換のヤコビ行列式あるいはヤコビアンと呼ばれる.この行列式は変換による体積の微量の変化を測定する.このため,ヤコビ行列式は,座標変換の際に体積の微分形式を適応させるのに必要な倍数因子なのである.
JacobianMatrix[] | デフォルトの変数を使って,デフォルト座標系から直交座標系への変換のヤコビ行列を与える |
JacobianMatrix[pt] | 点 pt における導関数を与える.ここで pt はデフォルト座標系で与えられる |
JacobianMatrix[coordsys] | coordsys 座標系から直交座標系への変換の導関数を与える |
JacobianMatrix[pt,coordsys] | 点 pt における導関数を与える.ここで pt は coordsys 座標系で与えられる |
JacobianDeterminant[], JacobianDeterminant[pt]等 | |
ヤコビ行列の行列式を与える | |
ScaleFactors[], ScaleFactors[pt]等 | |
スケール係数のリストを与える |
Div[f] | デフォルトの座標系におけるベクトル場 f の発散を与える |
Curl[f] | デフォルトの座標系におけるベクトル場 f の回転を与える |
Grad[f] | デフォルトの座標系におけるスカラー関数 f の勾配を与える |
Laplacian[f] | デフォルトの座標系におけるスカラー関数 f のラプラシアンを与える |
Biharmonic[f] | デフォルトの座標系におけるスカラー関数 f のラプラシアンのラプラシアンを与える |
Div[f,coordsys], Curl[f,coordsys]等 | 座標系が coordsys である場合の結果を与える |
前述のベクトル積でもそうであるように,三次元における一般的な微分操作はCartesian座標で定義されている.別の座標系での作業中に,ベクトル積や微分を計算したい場合は,原則としてまずCartesian座標系に変換してから計算を行わなければならない.Laplacian,Grad等の関数で座標系を指定する場合は,この変換は自動的に実行される.