座標系の変換

座標系を変換するには,2つのまったく異なる操作がかかわることがある.一つは同じ点に対応する座標値を再計算することであり,もう一つは新しい変数について場を再表現するということである.Wolfram言語はこの両方の操作を実行する関数を提供している.
点の変換
2つの座標系は,一つの座標系の座標値を取り,別の座標系の座標値を返すマッピングにより関連付けられている.
CoordinateTransformData[transf,"Mapping"]
座標系同士を順関数としてマッピングする
CoordinateTransformData[transf,"Mapping",pt]
pt の新しい座標値
CoordinateTransform[transf,pt]
pt の新しい座標値
2つの座標系の間で点を変換する
関数CoordinateTransformDataは,CoordinateChartDataの座標系同士の間のマッピングに関する情報を返す.
次は極座標系の点を直交座標系の対応する点に変換する:
次は直交座標系の点を球座標系の対応する値に変換する:
マッピング関数はCoordinateTransformDataからリクエストすることができ,後で使うために保存しておくことができる:
マッピングは当然,単独の点を取る:
Mapを使うと,一度にいくつもの点に適用することができる:
関数CoordinateTransformは1点,もしくはいくつかの点を変換するための便利なメカニズムを提供する.
次は球座標系の点を円筒座標系の対応する点に変換する:
両方の座標系の値を直交座標系に変換することにより,上の答が正しいかどうかを検証することができる:
CoordinateTransformでも,パラメータはCoordinateTransformDataと同様に指定することができる.以下はパラメータが である扁長回転楕円体座標の生成点を 超球座標系に変換する:
いくつかの点を同時に変換することができる.
場の変換
2つの座標系の間で場を変換する場合,一つの座標系の変数で与えられた場は別の座標系の変数で再表現される.2つの座標系の間のマッピングに加え,追加のステップが必要となる.それは,前の変数を新しい変数で解いたり,これらの表現に代入したり,ベクトルやテンソル場のときは2つの座標系の間の基底ベクトルの差分を考慮したりすることである.これらすべてのステップが,コマンドTransformedFieldで実行できる.
TransformedField[transf,f,{x1,x2,,xn}->{y1,y2,,yn}]
スカラー,ベクトル,テンソル場 f を座標系 xi から座標系 yi に変換する
2つの座標系の間で場を変換する
単純なスカラーの場合から考えていく.
以下は,直交座標系のスカラー場 を円柱座標系に変換する:
前の例題は手計算で行うことができる.CoordinateTransformの場合とは異なり,これらのステップが意味のあるものにするためには,は数値等の座標値ではなく座標名でなければならない:
TransformedFieldのパラメータはCoordinateTransformDataのときと同様に指定できる.次は円柱座標系から,パラメータが の扁長回転楕円体座標系への変換である:
ベクトルとテンソルの場合は,基底ベクトルの変化を考慮に入れる必要があるため,より複雑である.その結果,ベクトルの変換はその成分の変換だけでは収まらない.配列は,正規直交基底の成分として解釈され,2つの基底を関連付ける回転行列は,CoordinateTransformDataのプロパティ"OrthonormalBasisRotation"により与えられる.
次は直交座標系のベクトル場 を球座標系に変換する.これにより,明白な放射状の結果 が得られる:
上記の例題を再生するためには2つの情報が必要である.一つはスカラーの場合のような変数置換規則であり,もう一つは基底回転行列である.回転行列は基底間の回転を指定するので,その転置は成分に作用を及ぼす行列である:
ベクトルを座標系間で変換するためには,まずベクトルに回転行列を掛けて,基底の要素を基底の要素に変えなければならない.これは,ベクトルを局所的な基底ベクトル上に投影することに等しい.その後,置換規則を適用する:
Mapを使うと,スカラー場のリストを座標系間で変換するすることができる.その結果は,同じ要素を持つベクトル場を変換することとは全く異なっている:
以下は球座標系のベクトル場 を直交座標系に変換する:
超球座標で同じ位置要素を持つベクトル場は,実は 軸についての回転ベクトル場なのである:
座標系のパラメータはTransformedFieldで指定することができる.以下はベクトル場 を直交座標系から,パラメータが の扁長回転楕円体座標系に変換する:
次は二階のテンソルを直交座標系から極座標系に変換する:
Mapを使うと,行列を2つのベクトルのリスト,あるいは4つのスカラー場の行列として変換することができる.それぞれの場合で結果は大きく異なる:
関連のある正規直交基底
上で使われた基底回転ベクトルは,マッピングのヤコビアン行列とそれぞれのチャートの直交基底の両方についての情報を組み合せている,直交座標系の場合,基底回転ベクトルはヤコビアンと2セットのスケール因子から構築される.
CoordinateTransformData[transf,prop,pt]
pt における変換のプロパティを計算する
CoordinateChartData[chart,prop,pt]
pt におけるチャートのプロパティを計算する
チャートと変換の特性を計算する
行列 は基底ベクトルを回転させて,基底ベクトルに変換する:
回転されたベクトル は基底の中の であり, は同じ基底の である:
直交系で正規直交基底を定義する回転ベクトルを計算するためには,,スケール因子が必要である.スケール因子のどちらの集合も同じ点で評価されることを確実にするためにCoordinateTransformが使われる:
回転行列は,転置されたヤコビ行列を,スケール因子を含む直交行列で共役することにより構築される:
次は円柱座標の基底ベクトルを,球座標の基底ベクトルに回転させる行列である:
次の行列は ,つまり に回転させ,それは と同等の に回転させる:
以下の回転行列は,前と同じようにスケール因子とヤコビアン行列を使って構築することができる: