四元数パッケージ
このパッケージは,ハミルトン(Hamilton)の四元数を実装する.四元数は という形式で表される.ここで ,,, はすべて実数である.記号 ,, は規則 に則って乗算される.四元数は複素数の拡張でありほとんど同じように動作するが,四元数では乗法が可換ではないという点が異なる.例えば, となるのである.
四元数と複素数は類似しているため,このパッケージでは,Wolfram言語が複素数を取扱う方法を模倣している部分が多くある.四元数と複素数との違いを明確にするために,四元数はすべてQuaternion[a,b,c,d]という形式(a,b,c,d は実数)で入力しなければならない.記号形式の a+Ib+Jc+Kd に提供されるサポートは限られている.
Quaternion[a,b,c,d] | 四元数 |
QuaternionQ[w] | w が四元数であるかどうかテストする |
FromQuaternion[w] | Quaternionオブジェクト w を記号形式 a+Ib+Jc+Kd に変換する |
ToQuaternion[w] | 可能な場合に w をQuaternionオブジェクトに変換する |
このパッケージの主な目的は四元数の演算を定義することなので,Plus,Minus,Times,Divide,さらにNonCommutativeMultiplyに規則を加える.Timesが使えるのは,四元数ではない2つの数の乗法および1つの四元数とスカラー数(実数)の乗法だけである.2つの四元数の乗法には,NonCommutativeMultiplyを使わなければならい.
四元数は複素数と同様で代数的オブジェクトであるが,各要素を見ることが役に立つことがある.これらのオブジェクトは実数上に,標準基底を{1,i,j,k}とするベクトル空間を形成する.各要素は,Wolfram言語の標準的な手法を使って抽出することができる.この他,長さや向きのような他のベクトル型のパラメータもあるので,これらも見ておいた方がよいであろう.
四元数の ijk 空間への射影,つまり四元数の実数でない部分は,純四元数と呼ばれる.これは複素数の純虚数部分と同様の働きをする.
Re[w] | 実数部分 Re w |
Conjugate[w] | 四元数の共役 w* |
Abs[w] | 絶対値 w |
AbsIJK[w] | w の純四元数の大きさ |
Norm[w] | w の要素の平方和 |
Sign[w] | 四元数 w の符号 |
AdjustedSignIJK[w] | 最初の非零要素が正となるよう調整された w の純四元数 |
複素数 では, は によって定義される.このパッケージも同様に eq を定義しており,複素数の純虚数部分の代りに純四元数 q を使っている.この定義は次の初級関数の定義と同様である:Exp,Log,Cos,Sin,Tan,Sec,Csc,Cot,ArcCos,ArcSin,ArcTan,ArcSec,ArcCsc,ArcCot,Cosh,Sinh,Tanh,Sech,Csch,Coth,ArcCosh,ArcSinh,ArcTanh,ArcSech,ArcCsch,ArcCoth.
これまではこの関数で,要素が任意の実数である四元数を扱ってきた.整数とガウス整数が実数および複素数の面白い部分集合であるように,四元整数と呼ばれる四元数の特殊な部分集合がある.この部分集合は,想像するよりも範囲が広い.これには,すべてが整数要素からなる四元数だけでなく,全要素がの奇数倍である四元数も含まれる.この部分集合には,逆元を持つ四元数が24個ある.これらはこの代数の単位であり,ほぼガウス整数の,,, に相当する.
Round[w] | w に最も近い四元整数 |
OddQ[w] | w が奇数かどうかをテストする |
EvenQ[w] | 四元数 w が偶数かどうかをテストする |
IntegerQuaternionQ[w] | 四元数 w が四元整数であるかどうかをテストする |
UnitQuaternions | ハミルトン(Hamilton)の非可換体の24の単位のリストを返す |
UnitQuaternionQ[w] | w が単位四元数であるかどうかをテストする |
四元数 と単位四元数 があるとき, と はそれぞれ の右結合および左結合である.任意の結合要素を選び,それを主結合と呼ぶと便利である.このパッケージでは最大の実数要素を持つ結合要素を選ぶ.
LeftAssociates[w] | 四元数 w の24の左結合のリスト |
RightAssociates[w] | 四元数 w の24の右結合のリスト |
PrimaryLeftAssociate[w,side] | 四元数 w の主左結合 |
PrimaryRightAssociate[w,side] | 四元数 w の主右結合 |
四元数の乗算は非可換であるため,左側と右側の両方に1つずつ最大公約数がある.この関数はPrimaryLeftAssociateとPrimaryRightAssociateによって返される値に依存しているので,RightGCDとLeftGCDは一意ではない.
PrimeQには,任意の数がガウス整数に対して素であるかどうかを調べるオプションGaussianIntegers->Trueがある.このパッケージではPrimeQをさらに拡張して,数が四元数に対して素であるかどうかを調べる.
ラグランジュ(Lagrange)は,すべての整数は最大で4つの平方数の和として表せることを証明した.つまり,整数 n がある場合,q**Conjugate[q]==n となるような整数要素を持つ四元数 q があるということになる.したがって,四元数に対して素である整数は存在しない.実際に,四元数整数は,そのノルムが通常の意味で素数である場合のみ素数である.
PrimeQ[n,Quaternions->True] | n が四元数に素であるかどうかをテストする |
PrimeQ の拡張