2013年11月21日木曜日

ホッジ双対の計算(n=2の場合)

 外積代数の本を読んでいると、3次元でのクロス積との関連でホッジ双対の概念が紹介されることがある。「微分形式と接続」の本で、3次元のときの基底のホッジ双対が計算例として紹介されていた。3次元以外の計算も試すことで、理解を深めてみたい。そこで今回は、ブログを書くリハビリもかねて計算手順を整理してみた。

ホッジ双対の定義

実際の計算に入る前に、まずホッジ双対を定義する。ベクトル空間をVとする。λ∈ΛpVに対してホッジ双対*λ∈Λn-pVを、次の式がすべてのν∈ Λn-pVについて成り立つように定義する。

ここでσ∈ΛnVは、Vの基底に対応するΛnVの基底である。


n=2の場合の計算

この定義のもとに、2次元のときの基底のホッジ双対を計算してみる。
V=R2、σ=e1Λe2とし、λ=e1に対する*λ∈Λ2-1R2 (= R2)を計算する。*λ=ae1+be2とおくと、


ν=e1とすると、


ここで、<e1|e1>=1、<e2|e1>=0なので、



よって、a=0。
次にν=e2とすれば、


ここで、<e1|e2>=0、<e2|e2>=1なので、


よって、b=1。
これらより、


 同様に、λ=e2とすると

  がいえる。


  以上で基底についてのホッジ双対を計算することができた。次回は、ここで現れた作用素*が線形であることを述べる。線形なら、R2の任意ののベクトルについてホッジ双対が計算できるためである。


※ 以下は追記内容

n=2でp=2の場合

V=R2、σ=e1Λe2とし、λ=e1Λe2に対する*λ∈Λ0R2 (≅ R)を計算する。*λ=kとおくと、


μ∈Λ0R2(≅ R)のため、μ=1とするとホッジ双対定義式の左辺は、


ここで k ∈ R と u ∈ R2 について、kΛu = ku (実数とベクトルのウェッジ積は、ベクトルの実数倍とすること)を使った。
一方、ホッジ双対定義式の右辺は、


ここでは、<1|1>0 = 1 を使った(以前に定義した記事)。
これらより、

したがって、

これは、2次元ベクトル空間の外積になっているのがおもしろい。a, b ∈ R2 について、a = a1e1 + a2e2、b = b1e1 + b2e2とすると、

となる。これは2次元ベクトル空間の外積と同じである。この外積の双線形性と交代性は、ウェッジ積の多重線形性と交代性、ホッジスター作用素の線形性から分かる。

2011年6月12日日曜日

Code::BlocksでD言語のデバッグもできるようにする

前回のままではデバッグがうまくいかない。
ブレイクポイントを設定して実行しても、
Dwarf Error: Missing children for type unit
と表示されブレイクポイントで停止せずに実行される。

http://www.digitalmars.com/d/archives/digitalmars/D/Doesn_t_work_Ubuntu_10.10_DMD_2.049_GDB_7.2_119346.htmlを見ながら設定したらできたので、ここに残しておく。

Settings > Compiler and debugger...を選択。
Compiler FlagsタブのCompile in debug code [-debug]をチェックを入れる。

Other optionsタブに-gcと入力。
OKを選べば、ブレイクがかかるようになった。

UbuntuにCode::Blocksを入れてみる

この記事ではD言語のIDEであるCode::BlocksをUbuntuにインストールしてみる。

インストール

Synapticのクイック検索にcodeblocksと入力する。
codeblocks欄の左の□をインストール指定。
適用ボタンを押せばインストールが進む。

設定

Code::Blocks IDEを起動。
Compilers auto-detectionダイアログでDigital Mars D Compilerが検出されたので、
これをデフォルトのコンパイラにするため、選択、Save as defaultボタンをクリック、そしてOK。

リンカの設定

Settings > Compiler and debugger...を選ぶ。
左から Global compiler settings を選ぶ。
Linker settingsタブのLink libraries:の中に

phobos2とrtをAddボタンから追加。

ためしにプロジェクトの作成

プロジェクトの作成

File > New > Project...を選ぶ。
Empty projectを選択、そしてGo。
Empty projectダイアログが現れる。Nextで進め、
のようにProject titleなど入力。さらにNextで進め、Finish。

ファイルを作成し、プロジェクトに追加

File > New > Empty fileを選択。
アクティブなプロジェクトに追加するか聞いてくるので
はいを選択。Save fileダイアログで
名前をhello.d、ファイルの種類はD filesにする。
さらにターゲットを聞いてくるので、DebugとReleaseにチェックがあることを確認しOK。

ビルドと実行

hello.dは前回と同じコードにして、Build > Buildからビルド。
エラーがなかったのでDebug > Startで実行。

2011年6月4日土曜日

UbuntuにD言語(D 2.0)をインストールした

UbuntuにD言語をインストールする流れをまとめてみた。

コンパイラのインストール

http://www.digitalmars.com/d/download.htmlからコンパイラ(DMD) dmd_2.053-0_i386.deb をダウンロード。
ダウンロードしたファイルのダブルクリックで、Ubuntuソフトウェアセンターのダイアログが開くので
「インストール」ボタンをクリック。ログイン時のパスワードを求められるので、入力して進める。これでコンパイラ(DMD)のインストールは終了。


試しにコンパイル

以下の内容をhello.dとしてutf-8で保存。
//-------------------------------------
import std.cstream;

int main(char[][] args)
{
  dout.writeLine("Hello World");
  return 0;
}
//-------------------------------------

端末で
$ dmd hello.d
と入力してコンパイル。

実行ファイルhelloができるので、
$ ./hello
で実行できる。