- 超弦理論を垣間見る(Calabi-Yau多様体)。
カラビ・ヤウ多様体と呼ばれる3次元コンパクト多様体。実際は複素次元なので実数次元では6次元多様体である。1990年代から数学及び物理学の双方から注目を集めた物である。しかしながら数学、特にトポロジを理解できる高度な数学知識が無ければ暗号のような数式の羅列であり一般人(自分も含めて)には理解を超えている。
巷には「究極の理論」とか「最終理論」とかで賑わいを見せている「超弦理論」つまり「スーパーストリング理論」と関係が深いらしい。ネット上での読み物としてはhttp://www-het.ph.tsukuba.ac.jp/study/ftast02.htmlが参考になるだろう。
さて、そんな難しい数学は専門家に任せて何とかして、そのカラビ・ヤウ多様体を垣間見てみようと思う。以前ツイスター理論を可視化したので興味のある方はご覧下さい。とにかく曲面式を手に入れれば可視化できるはずである。しかし冒頭でも述べたように複素多様体なのでそのままでは可視化できません。また複素3次元(実6次元)多様体(6次元カラビ・ヤウ多様体)の断面はフェルマー最終定理と関連していてるらしい。この時、複素数つまり
Z = u + i vの(u,v)をパラメトリック曲面のパラメータと考えて定式化する方法をアンドリュー・ハンソンが示している。
でもって、N=5の複素代数曲面(x^N
+
y^N==z^N)をスクリプトを書いて実行してみたが、複素関数の評価でlog(0)がきてしまい例外を飛ばされてしまいました。現在のCCTLでは曲面評価中に特異点に遭遇した場合にその特異点を踏まないように自動的に計算ステップを調整するような高度な技を持っていません。そこでlog(0)を評価しようとした場合は
log(凄く0に近い値)を評価するように修正することにしました。曲面が連続であれば正しいはずですし特異点を踏まないように自動的に計算ステップを調整するのと(ほとんど)等価な計算ができるようになるはずです。結果が下の(すばらしぃー!!)グラフィックです。なんかスゲーって感じです。ここまで綺麗に出来るとは思ってもいなかったのですこし感動です。
ついでに言っておくとフェルマーの定理はこの曲面上のどんな座標(x,y,z)を探しても(x,y,z)が整数値になるような箇所が決して現れないという事である。これまた数学の面白いところであろう。整数値座標を見事にかわした曲面と言う事もできる。また超弦理論がフェルマーの定理と関係しているというのも不思議である。
※ということでCCTLの最新版でないとこの絵は出力されません。
画像はクリックで大きく表示できます。
この曲面は25個のパラメトリック曲面からなる複合曲面であります。
#%
# Calabi-Yau
Cross-Section
#
sub foo(num, uv)
{
a =
uv[0];
b = uv[1];
U1 = 0.5*(zexp([a,b]) +
zexp([-a,-b]));
U2 = 0.5*(zexp([a,b]) -
zexp([-a,-b]));
Z1k =
zexp([0,kK1*2*pai/nN])*zpow(U1,[2/nN,0]);
Z2k =
zexp([0,kK2*2*pai/nN])*zpow(U2,[2/nN,0]);
xX =
Z1k{0};
yY = Z2k{0};
zZ = cos(alpha)*Z1k{1} +
sin(alpha)*Z2k{1};
f.ret = xX;
return (
f.ret);
}
extern alpha;
extern xX;
extern
yY;
extern zZ;
extern nN;
extern kK1;
extern
kK2;
nN = 5;
alpha = 0.25*pai;
num =
(nN-1)*(nN-1)+20;
i = 0;
for ( kK1 = 0; kK1 <= nN-1;
kK1++){
for ( kK2 = 0; kK2 <= nN-1;
kK2++){
put
0;
uvmesh(10,10);
put
1;
Color = 255*value2color(0,
num,i+10);
modalcolor(Color{0},
Color{1}, Color{2});
Susr[i] =
({"u_=domain(-1,1,u);v_=domain(0,pai/2,v);u[0]=u_;u[1]=v_;$foo(2,u[]);xX",
"yY", "zZ"});
etrgmesh(Susr[i]);
i++;
modalcolor();
put
0;
}
}
end;
| インタプリタが遅いので一服できます。緻密な表現が欲しいときはuvmeshの引数を上げてください。メッシュ作成せずにワイヤー表現であればすぐに見ることが出来ます。その場合は
for ( kK1 = 0; kK1
<= nN-1; kK1++){
for ( kK2 = 0; kK2 <= nN-1;
kK2++){
put 0;
#
uvmesh(10,10); put
1;
Color = 255*value2color(0,
num,i+10);
modalcolor(Color{0},
Color{1}, Color{2});
Susr[i] =
({"u_=domain(-1,1,u);v_=domain(0,pai/2,v);u[0]=u_;u[1]=v_;$foo(2,u[]);xX",
"yY", "zZ"});
#
etrgmesh(Susr[i]);
i++;
modalcolor();
put
0;
}
}
| としてください。
|