Unityで数値計算ライブラリMath.NET Numericsを使う方法
Math.NETとは行列計算とかできるライブラリらしい。ゲームエンジンであるUnity上で使う用途はあまりないかもしれないが、Win8.1環境で導入できたので手順を以下にメモしとく。
まずNuGetのページでnupackファイルをダウンロードする。
Unityは.NETFrameworkのバージョンが3.5らしいので、Task Parallel Libraryもついでにダウンロードする。
nupackファイルはただのzipファイルらしいので展開する。MathNetはlib/net35に、TaskParallelはlibにあるdllをUnityのAssetsにドラッグ&ドロップする。
二つのdllのInspectorのPlatform settingsをx86_x64, winにする。
スクリプト上では
using MathNet.Numerics;
などを加えて、あとは公式サンプルなど自由にどうぞ。
もっともUnityの関数とは互換性がないので、そこを埋めるには適当に自作する必要はある。
例
var A = Matrix<double>.Build.DenseOfArray(new double[,]
{
{ 3, 2, -1 },
{ 2, -2, 4 },
{ -1, 0.5, -1 }
});
var b = Vector<double>.Build.Dense(new double[] { 1, -2, 0 });
var x = A.Solve(b);
Vector3 t;
t.x = (float)(x.ToArray())[0];
t.y = (float)(x.ToArray())[1];
t.z = (float)(x.ToArray())[2];
Debug.Log( t ); // (1.0, -2.0, -2.0)
他のdllとかも同じように使えそうね。
31.圏
環や加群など、ある特定の対象を一斉に扱うことを可能にする概念が圏である。圏においては個々の対象よりも、その間の結びつきから全体像を捉えることに主眼が置かれる。
圏の定義と例
定義 圏(category)とは以下の条件を満たす対象(object)と射(morphism)により構成される。
- 射に対しドメイン(domain)と呼ばれる対象とコドメイン(codomain)と呼ばれる対象が一意的に存在する。これをやなどと表す。
- 射に対しなら合成(composition)と呼ばれる射が一意的に存在する。
- 合成は結合的である。即ちに対しが成り立つ。
- 任意の対象に対し恒等射(identity)と呼ばれる射と呼ばれる射が存在し、に対しが成り立つ。
最後のは一意的である。
圏に対し対象全体を、射全体をと書く。また対象の間の射全体をと表す。
我々は基礎論をやっているわけではないから、上の定義がどのようにして正当化されるかどうかを気にする必要はない。この文章では、あくまで言葉として導入しているに過ぎないことを述べておく。ただ圏は従来の集合論では扱うことのできなかった「集合全体の集まり」など広い概念も含んでいる。これは定義から分かるように、対象よりも射に着目することで成し得たことである。それと引き換えに対象から元を取る操作は基本的にできないので注意しておこう。
圏はが集合のとき局所的に小さい(locally small)と呼び、更にも集合のとき小さい(small)と呼ぶ。どちらでもないときは大きい(big)という。
前章までの内容より現れる圏の例を挙げる。以下は環、はベクトル空間とする。
- 空圏(empty category)とは、対象も射も無い圏である。
- 一点圏(one-point category)とは、一点からなる対象及びその上の恒等射のみからなる圏である。
- 集合の圏とは、対象を集合、射を写像とする圏である。
- 群の圏とは、対象を群、射を群の準同型とする圏である。
- アーベル群の圏とは、対象をアーベル群、射を群の準同型とする圏である。
- 環の圏とは、対象を環、射を環準同型とする圏である。
- 体の圏とは、対象を体、射を体準同型とする圏である。
- -加群の圏とは、対象を-加群、射を-加群準同型とする圏である。
- -ベクトル空間の圏とは、対象を-ベクトル空間、射を線型写像とする圏である。
- -代数の圏とは、対象を-代数、射を-代数準同型とする圏である。
注意 は有限とは限らないベクトル空間(線形空間)の圏、は可換とは限らない代数の圏に対して用いられるのが普通である。
空圏と一点圏は小さな圏である。それ以外に挙げた例は局所的に小さい。
圏の反転圏(opposite category)とは、対象をの対象とし、射はの射の向きを逆にしたものである。
射の性質
続いて射に対して定まる幾つかの性質を考えよう。
定義 に対して以下を定める。
- に対してならが成り立つとき、はモノ(monomorphism)と呼ぶ。
- に対してならが成り立つとき、はエピ(epimorphism)と呼ぶ。
- モノかつエピであるときバイ(bimorphism)と呼ぶ。
モノとモノの合成はモノである。またがモノならはモノとなる。同様にエピとエピの合成はエピである。またがエピならはエピとなる。
勘の良い人は、上の性質が写像の単射や全射が持つ性質と似ていることに気付くだろう。実際モノの定義は単射の定義とよく似ている。しかしエピは全射との類似性が見えないだろう。エピの定義は反転圏におけるモノの定義に一致するため圏論的な定義である。一方で全射性は元を取るため圏論的な発想に合わない。集合の圏においては偶然一致する。
演習 集合の圏においてモノと単射は同値、エピと全射は同値であることを示せ。また上記の圏において、モノ、エピに対応する概念を求めよ。
定義 圏においてに対して以下を定める。
- が存在してを満たすときを切断(section)と呼ぶ。
- が存在してを満たすときを引込(retraction)と呼ぶ。
- が存在してを満たすときをイソ(isomorphism)と呼ぶ。
上のは存在するならば一意的であり、これをと書く。またイソが存在するとき、とは同型(isomorphic)と呼びと書く。
イソとイソの合成はイソである。イソならバイであるが、逆は一般に成り立たない。射のドメインとコドメインが一致するとき自己射(endomorphism)と呼ぶが、特にイソのとき自己同型(automorphism)と呼ぶ。
定義 圏において以下を定める。
- 対象は、任意の対象に対しを一元集合とするとき始対象(initial object)と呼ぶ。
- 対象は、任意の対象に対しを一元集合とするとき終対象(terminal object)と呼ぶ。
- 始対象かつ終対象であることを零対象(zero object)と呼ぶ。
始対象及び終対象は(従って零対象も)存在すれば同型を除き一意的となる。
圏に零対象が存在するとき、対象の間に一意的な射が定まる。これを零射(zero morphism)と呼びと書く。
演習 以下を示せ。
定義 射に対し以下を定める。
対象及びなる射が次の普遍性を満たすとき、をの核(Kernel)と呼ぶ。任意の対象及びなる射に対して、図式を可換にする射が一意的に存在する。
反転圏における核を余核(Cokernel)と呼ぶ。つまり対象及びなる射が次の普遍性を満たすとき、をの余核と呼ぶ。任意の対象及びなる射に対して、図式を可換にする射が一意的に存在する。
核も余核も存在すれば同型を除き一意的である。このときはモノ、はエピとなる。
定義 射に対し核及び余核が存在するとする。
- の核をの像(Image)と呼びで表す。
- の余核をの余像(Coimage)と呼びで表す。
普遍性より、自然な射が得られる。
線型圏とアーベル圏
加群の構造が入った特殊な圏を考える。考えている対象がアーベル圏を為すかどうかを考えることは研究において重要である。
定義 を対象とする。
- 対象及び射の組がとの積(product)であるとは、任意の対象及び射に対し、が存在してを満たすことをいう。
- 対象の余積(coproduct)とは、反転圏における積のことをいう。つまり対象と射がとの余積であるとは、に対しが存在してを満たすことをいう。
積も余積も存在すれば同型を除き一意的であり、と表す。
集合の圏において、積は集合の積に相当する。一方で余積はそれぞれ別物と見なした和(例えば)になる。
ややこしいが、加群の直和は、加群の圏における余積である。(下で述べるように圏における直和は別に定義されにおいては同型になる。)
積、余積の定義は自然に個に拡張でき、それぞれ有限積、有限余積と呼ぶ。特にと及びは同型(結合性)であり、同様なことが余積に対しても成り立つ。(もちろん普遍性による定義とも同型になる。)
定義 を環、を圏とする。が-加群であり、射の合成
が-双線型であるとき、圏は-前線型圏(pre-linear)と呼ぶ。
例えば、-代数は、対象を一点、射をとして合成をにおける積で定めると-前線型圏となる。
定義 を-前線型圏、をその対象とする。対象及び射及び射がとの直和(direct sum)であるとは、及びを満たすことをいう。
直和も存在すれば同型を除き一意的であり、で表す。
有限直和も有限積などと同様に定義でき、結合性も成り立つ。
一般に-前線型圏が零対象を持てば、積、余積、直和の存在は同時に成り立ち、特に存在すれば同型となる。特にが成り立つ。
定義 -前線型圏は、零対象を持ち、任意の有限積が存在(従って有限余積、有限直和も存在)するとき-線型(linear)であると呼ぶ。
-線型圏において、任意の射に対し核及び余核が存在し、(従ってその像及び余像も存在し)自然な射がイソとなるとき、-アーベル圏(abelian category)と呼ぶ。
-加群の圏は-アーベル圏である。このとき加群における核、余核、像、余像は圏における各々の定義と一致し、特に
は準同型定理そのものである。
所感
今回はひたすら定義をするだけ。アーベル圏は元々加群の理論を圏に一般化する目的で導入されたらしいが、実は加群の圏に埋め込めることが知られていて、本質的に加群の理論に落ちる(つまり元が取れる)。しかし今後述べていくことだが、完全列に対する蛇の補題などが、射の性質のみから従うという点は押さえておきたい。