継続を使う例として空リストを受け取るなり脱出するflattenの例がよく挙げられるが、その動機がよくわからずやる気が出なかったので別の例を考えた。
引数の総積を求める関数はSchemeで次のように書ける。
(define (prod x . xs) (if (null? xs) x (* x (apply prod xs))))
(prod 1 2 3 4 5 6 7 8 9 10)
3628800
複雑にネストした数のリストにも適用したければ次のようにすればよかろう。
(define (prod-nest x . xs)
(let prod-aux ((y x) (ys xs))
((lambda (p) (if (list? y) (p (prod-aux (car y) (cdr y))) (p y)))
(lambda (a) (if (null? ys) a (* a (prod-aux (car ys) (cdr ys))))))))
(prod-nest '(1 ((2) 3 4 5) 6) 7 '((8 9) 10))
3628800
だが、総積は引数にゼロが発見され次第ゼロを返せばよろしい。さもなくばゼロに数を掛け続けるというシーシュポスもびっくりな行いをし続けなければならない!ゼロを発見次第ゼロを返すというのは、ゼロを発見次第継続にゼロを渡すということである。
これには次のように式を加えてやれば良い。ちゃんと中断していることがわかるように経過をprintした。
(define (prod-nest-cc x . xs)
(call/cc (lambda (cc)
(let prod-aux ((y x) (ys xs))
((lambda (p) (if (list? y) (p (prod-aux (car y) (cdr y)))
(begin (print y) (if (zero? y) (cc 0) (p y)))))
(lambda (a) (if (null? ys) a (* a (prod-aux (car ys) (cdr ys))))))))))
(prod-nest-cc '(1 ((2) 0 4 5) 6) 7 '((8 9) 10))
1
2
0
0
なお、即座にゼロを返すようにする、だけでは上手くいかない。
(define (prod-nest-x x . xs)
(let prod-aux ((y x) (ys xs))
((lambda (p) (if (list? y) (p (prod-aux (car y) (cdr y)))
(begin (print y) (if (zero? y) 0 (p y)))))
(lambda (a) (if (null? ys) a (* a (prod-aux (car ys) (cdr ys))))))))
(prod-nest-x '(1 ((2) 0 4 5) 6) 7 '((8 9) 10))
1
2
0
6
7
8
9
10
0
あくまで同一階層内の脱出に止まっていることがわかる。
avatar mo equevo
keyword:プログラミング,linux,親指シフト,(物理),TeX,emacs,など々々
初心者のパソコン関係の備忘録。
環境はおもにVine -> Debian -> Gentoo -> Debian -> Gentoo -> FreeBSD
最近は研究室のサーバーを使って遊んだり。
2016年1月25日月曜日
xyjaxが機能しないとき
mathjax およびxyjaxをそれぞれのドキュメントを参照して正しくインストールしたはずなのにxyjaxが機能しないとき(コンパイル後にダイアグラムが消えてしまう)、mathjax.jsをロードする際にconfig=TeX-AMS_CHTMLを渡しているのが問題かもしれない。これは設定を省略するために渡しているので、extentionにxyjax.jsを追加せよとの記述を上書きしてしまう。xyjaxを使うためには手で設定を書かねばならないのでconfig=TeX-AMS_CHTMLを渡す必要はない。
2015年11月18日水曜日
Weierstraß の楕円関数と楕円曲線上の点の加法
楕円曲線$C$上の加法は無限遠点を原点$O$として曲線$C$と$y$軸に平行な直線との二交点を$P$、$P'$として$P+P'=O$、また曲線$C$と適当な直線$\ell$との三交点を$A$、$B$、$C$として$A+B+C=O$で定義される。
楕円曲線上の点はWeierstrassßの$\wp$関数とその微分を用いて表わされるが、次の$\wp$関数に対する恒等式が楕円曲線上の点の加法に対応する。
\[
\begin{pmatrix}
\wp(a) & \wp'(a) & 1 \\
\wp(b) & \wp'(b) & 1 \\
\wp(c) & \wp'(c) & 1
\end{pmatrix}=0
\]
ただし$a+b+c=0$。また$A=(\wp(a),\wp'(a))$、$B=(\wp(b),\wp'(b))$、$C=(\wp(c),\wp'(c))$で$A+B+C=O$。
楕円曲線上の点はWeierstrassßの$\wp$関数とその微分を用いて表わされるが、次の$\wp$関数に対する恒等式が楕円曲線上の点の加法に対応する。
\[
\begin{pmatrix}
\wp(a) & \wp'(a) & 1 \\
\wp(b) & \wp'(b) & 1 \\
\wp(c) & \wp'(c) & 1
\end{pmatrix}=0
\]
ただし$a+b+c=0$。また$A=(\wp(a),\wp'(a))$、$B=(\wp(b),\wp'(b))$、$C=(\wp(c),\wp'(c))$で$A+B+C=O$。
2015年7月27日月曜日
CentOS7 on DELL にてmaple をアクティベート
問題:maple18 を centos7 on DELL T620にインストールしパーチェスコードを入力したら"missing host id for license server"と出てユーザー登録に進めなかった。
原因:NICの名前がeth0でないこと。
解決:
原因:NICの名前がeth0でないこと。
解決:
- biosdevnameをアンインストール
- /etc/sysconfig/network-scripts のifcfg-em1 をifcfg-eth0に変え、DEVICE=... NAME=... の右辺をeth0 に変更する。無ければ作成。
2015年5月14日木曜日
メモ・harmonic superspace とtwistor
※あまり自信がありません。
{++},D^+_{\alpha}]=0$と等価。ここで$D^{++}=u^{+i}\partial/\partial u^{-i}$、$D^+_{\alpha}=u^{+\dot{\alpha}}D_{\alpha\dot{\alpha}}$、$u$は$S^2\simeq\mathbb{C}P^1$の座標である。(twistorの文脈でコホモロジーが色々出てくるのは高次元版Cauchy—Riemann conditionを処理するためとも言える。)この式はclassical master equationでもあり、ここからさらなる普遍性への扉が開かれる。
Twistor Theory
R. Penrose はMinkowski空間上のnull line をspinorでパラメトライズするという発想からtwistor理論を創始した。(complexified compactified) Mikowski space $\mathbb{M}$上のnull line (plane) はtwistor space $\mathbb{T}=\mathbb{C}P^3$上の点に対応し、$\mathbb{M}$上の点はそれを通るnull line (plane)全体と対応する$\mathbb{T}$内の部分空間$\mathbb{C}P^1$を定める。(このsphere $S^2\simeq \mathbb{C}P^1$は$S^2\simeq SL(2,\mathbb{C})/B$、$B$は$SO(1,3)\simeq SL(2,\mathbb{C})$のBorel subgroup、という形でもとのLorentz群と関連するらしい。)なお(compactified) Euclid space $S^4$に対してはnull なobjectが存在しないので単なる$\mathbb{C}P^1$ fibration $\mathbb{C}P^3 \rightarrow S^4$ が定まる。twistor space $\mathbb{C}P^3$上の正則なベクトル束が$S^4$上のself-dual Yang—Mills equation の解と対応することを明らかにしたのがWard transformation でありADHM構成であった。このようにしてtwistor はself-duality と密接なかかわりを持っている。Harmonic Superspace
Harmonic superspace はその上のsuper fieldがある種の$\mathcal{N}=2$ supermultiplet を導くような空間であり、$\mathbb{R}^{4|8}\times S^2$である。ここで$\mathbb{R}^{4|8}$は$(x^a,\theta^{\alpha}_i,\bar{\theta}^{\dot{\alpha}i}),i=1,2$でパラメトライズされる空間で、$S^2\simeq SU(2)/U(1)$である。この$SU(2)$は$\mathcal{N}=2$超ポアンカレ代数に作用する。最初に「ある種の」といったのは、$S^2$方向における微分がharmonic superspace上の関数に対するCauchy—Riemann conditionを与えるからである。すなわちharmonic superspaceは“性質の良い”$\mathcal{N}=2$ 超対称性理論を与える。TTとHS
$S^2$を付すことによって理論に構造をあたえるこの両手法の関連はとりもなおさずself-duality とCauchy—Riemann conditionとの関係に帰すことができる。Cauchy—Riemann condition $\partial/\partial\bar{z} f(z,\bar{z})=0$の形式は一般にchiral condition と言ってもよかろう。一方でself-dual condition もこのchiral conditionの形に書くことができる。$F_{\dot{\alpha}\dot{\beta}}=0$は$[D^{++},D^+_{\alpha}]=0$と等価。ここで$D^{++}=u^{+i}\partial/\partial u^{-i}$、$D^+_{\alpha}=u^{+\dot{\alpha}}D_{\alpha\dot{\alpha}}$、$u$は$S^2\simeq\mathbb{C}P^1$の座標である。(twistorの文脈でコホモロジーが色々出てくるのは高次元版Cauchy—Riemann conditionを処理するためとも言える。)この式はclassical master equationでもあり、ここからさらなる普遍性への扉が開かれる。
参考文献
- R. S. Ward and R. O. Wells jr, "Twistor Geometry and Field Theory", Cambridge University Press, 1990
- A. S. Galperin, E. A. Ivanov, V. I. Ogievetsky and E. S. Sokatchev, "Harmonic Superspace", Cambridge University Press, 2001
2015年3月29日日曜日
unshuffle
$L_\infty$-algebra の定義にunshuffleというのが出てきてすこし時間をとられたのでメモ。参考にしたのは nLab。
定義 $\sigma \in \mathfrak{S}_{n,k}$がunshuffle であるとは、$0\leq k\leq n$であって$\sigma(1)<\cdots<\sigma(k)$かつ$\sigma(k+1)<\cdots<\sigma(n)$。
例
\[
\left(
\begin{array}{ccc|cc}
1& 2 & 3& 4 & 5 \\ 1&3&5&2&4
\end{array}\right) \in \mathfrak{S}_{3,5}
\]
\[
\left(
\begin{array}{c|c}
1& 2 \\ 2&1
\end{array}\right) \in \mathfrak{S}_{1,2}
\]
\[
\left(
\begin{array}{cc|}
1& 2 \\ 2&1
\end{array}\right) \not\in \mathfrak{S}_{2,2}
\]
定義 $\sigma \in \mathfrak{S}_{n,k}$がunshuffle であるとは、$0\leq k\leq n$であって$\sigma(1)<\cdots<\sigma(k)$かつ$\sigma(k+1)<\cdots<\sigma(n)$。
例
\[
\left(
\begin{array}{ccc|cc}
1& 2 & 3& 4 & 5 \\ 1&3&5&2&4
\end{array}\right) \in \mathfrak{S}_{3,5}
\]
\[
\left(
\begin{array}{c|c}
1& 2 \\ 2&1
\end{array}\right) \in \mathfrak{S}_{1,2}
\]
\[
\left(
\begin{array}{cc|}
1& 2 \\ 2&1
\end{array}\right) \not\in \mathfrak{S}_{2,2}
\]
2015年1月16日金曜日
コンピュータリテラシー
情報リテラシーと言った場合かなりコンピュータリテラシーと混同されているように思われる。情報~コンピュータという構図は奇妙だ。ちゃんと分けてそれぞれの趣旨や目的を明確にして学習してほしい。とくに「コンピュータが使える」というのなら、しれっと英文にマルチバイト文字を混ぜたり、異なる改行コードを混在させたり、フォーマットを統一しているふりして適当なデータをよこしたりしないでほしい。なぜコンピュータを用いるのか?その根本は機械的処理にあったのではないか。機械的処理にコンピュータを使えないのならそれは「コンピュータが使える」とは言えないし、機械的処理にふさわしいデータとはどのようなデータなのか考えられないのなら、「コンピュータについて知っている」とすら言えない。そして機械的処理を行わないのならコンピュータを使用する必要すら無い!
問い:ウェブブラウジングと機械的処理との関係を述べよ。
問い:ウェブブラウジングと機械的処理との関係を述べよ。
登録:
投稿 (Atom)