2014年12月18日木曜日

代数的トポロジーの勉強ノート

今回,昔つくっていた勉強ノートを元に復習を兼ねてTeX化してみました.
ここに置いておきます.

追記:2016/05/02 定理の引用番号がおかしくなっていたのを修正しました.

追記:2016/04/16 定理環境の枠囲みをmdframed.styからtcolorbox.styに変更しました.文章中の妙な改ページが無くなっていると思います.

追記:2016/03/07 フォントの大きさを変更しました。内容はほとんど変わっていません。商空間についての記述が若干増えたくらいです。

追記:2015/09/26 ホモトピーの定義域についての図と、被覆空間についての模式図を幾つか追加しました。可換図が上手く書けなくて保留中だった被約ホモロジー群のMayer-Vietoris完全列の証明を追加しました。

追記:2015/04/13 被覆空間と被覆変換群の項目を少し追加しました.少しダレてきたので,気分を変えるために一様位相空間についての勉強を始めたため,1月くらいは進捗がありません.Trevesのノートは一様空間を導入すれば,線型性を使っていない部分が一様空間の話として片付くようなので,整理のし直しです.最初は宮島さんの関数解析の本と岩波の数学辞典を参考にしていましたが,ブルバキを買ったほうが良さそうなのでブルバキの位相と位相線型空間を購入して勉強しています.局所凸空間の族の帰納極限なんかもブルバキの記述の方がすっきりしてそうなので,Trevesの記述で不満なところをブルバキで補いながら進めたいと考えています.リーマン積分を復習して,多変数複素関数論の初歩的なところを勉強し,正則関数の成す関数空間の話も取り入れたいところです.
被覆空間の一般論をすれば,Forsterのリーマン面の本がある程度読めるようになるかもしれないな.

追記:2015/02/28 普遍被覆空間の項目を追加しました.河澄さんの講義ノートでは,普遍被覆空間の定義がよくみる教科書とは異なっていて,基本亜群を使った定義のためややこしそうで敬遠していたのですが読んでみると面白いです.
普遍被覆空間の構成法についてはきれいさっぱり忘れなさいと書いてあるし.
被覆空間の定義についてもシンガー・ソープや松本さんのトポロジー入門と比べて制限がきつそうに見えたのだけれど,普遍被覆空間の項目を読んでこれで良さそうに思えたので全面的に書き直しです.適宜絵も作って入れていかないとな.

追記:2015/02/15 ホモトピー群の定義と基本亜群の定義などを追記しました.ホモトピー群の積を直接でなくH空間経由で扱っている部分がややこしいです.やっぱり直接定義したものも計算しておくべきですね.次は被覆空間だ.

追記:2015/01/31 貼り合わせの補題の証明がちょっと何言ってんのか分かんない状態だったのを修正しました.ついでに基本群の定義あたりまでの内容を追加しました.

追記:2014/12/28 pdfの索引のハイパーリンクがずれまくっているのを修正しました.




最近は大昔に作った代数的トポロジー(位相幾何学)のノートを整理していました.
教科書も何冊か持ってはいるのですが,どれも興味ある結果にたどり着くまでの過程が長く,代数が苦手なこともあってあまり勉強が進みません.

東大の河澄さんが講義を担当されている期間に講義ノートを公開されていますが,位相幾何学の講義ノートは興味を持続させるように話題が上手く配列されていると思います.

序盤にホモロジー群の持つ性質を仮定して,そこから導かれる面白そうな性質を幾つか証明をし,その後ホモロジー群の持つ性質の証明に移っています.目の前に餌をちらつかせておいて,苦行を乗り越えさせる構成になっているので,代数嫌いの私でもそこそこ忍耐力が続きました.

以前に勉強していたときには,Mayer-Vietoris完全列の証明で力尽きて,その後ホモトピー論に再挑戦して松本幸夫さんの教科書を併読しながらvan Kampenの定理の証明まで進むものの,全く記憶に残っていない状態です.基本群と被覆空間についても,昔にLie群の単連結被覆群の存在証明を行うためにかいつまんで勉強したのですが,あまり身になっていないようです.

ノートの位相空間論の部分はLebesgue積分のノートと共通しています.
河澄さんの講義ノートは行間が少ないのでほとんど丸写しになっているところも多いと思います.環や加群などの代数の話題についても書き足す予定です.幾つかの超球面のホモトピー群の決定や,Euler数,多様体の基本類あたりの話題まではなんとかたどり着きたいと思います.代数はツラい….

加群の構造定理についても松坂さんの「代数系入門」を勉強してノートを作ったのですが,まだモヤモヤ感が強いので勉強し直しです.

2014年11月14日金曜日

KETpicで陰影をつけた立体図を作る

「陰影を付けた立体図のKETpicによる描画」という論文に書いてあるコードを使って図を作成してみました.論文の図が見辛かったので.


R=2;    //球の半径
Th0=60;Phi0=-20;//光のくる方向
Th=Th0/180*%pi;Phi=Phi0/180*%pi; //(theta=60, phi=-20)
Vd=[sin(Th)*cos(Phi),sin(Th)*sin(Phi),cos(Th)]; //光線の方向ベクトル
Ve=[1,0,0]; //視線の方向ベクトル
Shd=1; Shd0=0.2; Shd1=0.45; Shd2=0.35; Spw=2; //明度を計算する定数
K0=50; K1=100; //theta, phiの2方向の分割数
//thetaはx軸と動径のなす方向,phiはyz平面への正射影とy軸とのなす角を表す.

Dth=%pi/2/K0; Dph=2*%pi/K1; //分割された角度 dtheta, dphi

Openfile('shade3.tex'); Beginpicture('1cm');
Dth0=0; R0=R*sin(Dth0); // 初期値 theta_0=0, r_0=0
for j=1:K0,
    Dph0=0;Dth1=Dth0+Dth; R1=R*sin(Dth1);
        //phi_0=0, theta_1=theta_0+ dtheta, r_1=R sin theta_1
    P0=R0*[cos(Dph0),sin(Dph0)]; P1=R1*[cos(Dph0),sin(Dph0)];
    for k=1:K1,
        Dph1=Dph0+Dph;
        P2=R1*[cos(Dph1),sin(Dph1)]; P3=R0*[cos(Dph1),sin(Dph1)];
        G=Listplot(P0,P1,P2,P3,P0); //閉曲線を作成
        P0=P3; P1=P2; Dph0=Dph1;
        Vn=[cos(Dth0),sin(Dth0)*cos(Dph0),sin(Dth0)*sin(Dph0)]; 
        Kd=Dotprod(Vn,Vd); //Vnは球面の法線ベクトル 
        Vs=2*Kd*Vn-Vd; //Vsは反射光の方向ベクトル
        if Kd<0 then Kd=0; end
        Ks=Dotprod(Ve,Vs); if Ks<0 then Ks=0; end // Veは視線方向
        Mc=Shd0+Shd1*Kd+Shd2*Ks^Spw; //明度
        Mc=Shd*(1-Mc); //塗りつぶす濃さ
        Texcom('{\color[cmyk]{0,0,0,'+string(Mc)+'}'); //色指定(黒の濃さ)
        Shade(G,1); Drwline(G); //Gの内部と境界線を塗りつぶす
        Texcom('}');
    end
    R0=R1; Dth0=Dth1; //次のループのための初期設定
end
Endpicture(0);Closefile();

領域を微小領域に分割して,対応する微小曲面を塗りつぶすという方法を取ったもの.色の付け方はPhong shadingという技法を用いているそう.次のWikipediaの項目を参照.

2014年11月6日木曜日

真空中でのボーリング球と羽毛の落下実験

ここまで大規模にやると説得力がありすぎる.They came down exactly the same!

2014年10月24日金曜日

OS X YosemiteでのEmacs 24.4の不具合

MacBook Air(Mid 2012)のOSをYosemiteにアップグレードしました.
XQuartzやMacUIMは再インストールすることで日本語入力可能になりましたし,
MacPortsも古いものを一旦削除してYosemite対応のものをインストールしました.

ScilabもYosemite対応の5.5.1をインストールし,Java for  OS XをAppleのサイトからインストールすることで起動できました.Oracleのサイトから入手したJava SE Runtime Environment 8では起動しなかったのでご注意ください.

全体的に軽快になった気がしますが,メモリの使用量はMavericksの時よりも増えたように思います.

MavericksのときにEmacs 24.4.50をコンパイルして使っていたのですが,Yosemiteで日本語変換がことえりからJapaneseIMに変更されたことが理由なのかEmacsでの日本語入力に不具合があります.
Emacsの開発版を使っていることが原因なのかとも思ったので,最近リリースされた
Emacs 24.4のEmacs.appをMacPortsから

$sudo port install emacs-app +inline

としてインストールしてみましたが,不具合の状況は同じようです.

今見つかっている不具合は,Emacsで日本語入力した直後に英数キーを2回連打すると,直前に日本語入力した語句のローマ字が入力されるというものです.画像を貼り付けておきます.
TeXファイルの編集をするときに,Karabinerを使ってドル記号$を入力すると英数にトグルしてドル記号を入力するように設定しているのですが,この現象のせいでドル記号を入力すると直前に入力した日本語のローマ字がついでに入力されてしまうという事態に陥ってしまいます.


これ以外にも,Emacsを起動した直後はTeXファイルをYaTeXでタイプセットするときに,メインファイルを入力する必要があるのですが,これまではミニバッファにファイル名を入力すればよかったものの,ミニバッファで入力するのではなくFinderのウィンドウが自動的にポップアップしてメインファイルを選択しなければならない状況になりました.以下がその画像です.

キーボードから手を離す必要があるのでかなりイライラします.今の所vagrantの仮想マシン上にインストールしたUbuntuのmozcを使って入力を行うと,以上のどちらの現象も起こらないのでどうにか凌いでいます.同様の症状に困っている人はいないんでしょうか.



追記:この現象は,JapaneseIMの再変換機能がEmacs上でうまく働いていないということのようです.ことえりのときにも再変換機能がついていたようですが,初めて気づきました.

「ことえり「英数」キー2回押し再変換の無効化」の記事を参考に再変換の無効化設定を行いました.まず,「システム環境設定」からキーボードを選び,「入力ソース」の項目を選択します.最初は次の画像に示すように,入力モードの英字部分がグレーアウトしていてチェックが外せません.
そこで左下の+をクリックして英語の言語の中からU.S.を選択し追加します.
 その後先ほどの画面に戻ると,英字部分のチェックが外せるようになっています.
このチェックを外すと日本語から英字への再変換が行われなくなりました.
同時に,Finderウィンドウのポップアップも起こらなくなりました.これで一安心です.
再変換は使えると便利そうではあるのですが,これだけ不具合が起きるのはキツイっす.

追記:2014/10/28 安定版のemacs-24.4をmacportsから導入していたのですが,TeXファイルを編集するときにRefTeXのlabel検索速度が開発版に比べてかなり遅くなっていました.Plamo Linux 日記さんのパッチファイルを使ってソースファイルからビルドしてみたものでも検索速度は変わりませんでした.emacsはTeXファイルを作成することくらいにしか使っておらず,開発版で不具合がなかったため,emacs-24.4.50に戻しました.

2014年9月3日水曜日

KETpicで標準的単体の描画

久々にKETpicを使って作図をしてみました.
作図したのは2次元の標準的単体
$\Delta^2=\Big\{\,(x_0, x_1, x_2)\in \mathbb{R}^3 \mid x_0\geq 0, x_1\geq 0, x_2\geq 0,\, x_0+x_1+x_2=1\,\Big\}$
です.

KETpicでは3次元の曲面に斜線を入れたりする場合に,一度2次元の領域を3次元空間に埋め込む関数を作成して,2次元空間の閉曲面で囲まれた領域に斜線を引いたものを3次元空間に埋め込むといった操作を取る必要があるようでした.

3次元の座標系に矢印を付けることは出来ないですし,文字のラベルを入れるときに,3次元の座標で指定出来ないので,視点の変更をした場合などにラベルの位置を調整するのが面倒など不満点もあります.

追記:2014/09/07
ラベルを入れたい点の3次元座標を投影した点に名前をつけておけば、視点の変更を行っても望みの点付近にいラベルが表示されます。

今回作成したのは次のようになりました.

この図のソースであるsceファイルは次の通りです.

//四面体の頂点の定義
PO=[0,0,0]; PA=[1,0,0];
PB=[0,1,0]; PC=[0,0,1];

//頂点のリスト
VL=list(PO,PA,PB,PC);

//多面体の面の添字リスト
FL=list([1,2,3],[1,2,4],[1,3,4],[2,3,4]);

//アングルなどの設定
Setwindow([-1,2],[-1,2]);//ウインドウの設定
Setangle(70,-25);//視点の設定


//陰線処理された四面体の3次元データを作成する
P4=Phparadata(VL,FL);//四面体の3次元データ?
PHi=PhHiddenData();//陰線のデータを抜き出す
Pp4=Projpara(P4);//四面体の平行投影された2次元データを作成
PpHi=Projpara(PHi);//陰線データを平行投影した2次元データに直す



//空間の曲面に直接斜線を入れることが出来ないので,
//2次元の閉曲線で囲まれた部分に斜線を入れたものを3次元空間に埋め込む

//埋め込み関数の定義 XY平面をX+Y+Z=1で表される平面に埋め込む
deff('Out=Em(X,Y)','Out=[X,Y,1-X-Y]');

//平面側の曲線を定義 ここでは3点を結んでいった三角形の周囲
L1=Listplot([[0,0],[1,0],[0,1]]);

//平面の曲線で囲まれる領域に斜線を入れる
L1H=Hatchdata('i',list(L1),-30,0.5);

//斜線を入れた領域を埋め込み関数で3次元に埋め込んで得られたデータ
SH=Embed(L1H,Em);

PSH=Projpara(SH);//斜線を入れた領域を平行投影した2次元のデータを作成




//Xyzax3data 座標軸のPD3dのlistを作成
Sax=Xyzax3data('x_0=[-1,2]','x_1=[-1,1.8]','x_2=[-0.3,1.8]');

//空間曲線を面により陰線処理されたデータを作成
//ここでは四面体により隠れる座標軸のデータを作成
Pf=Faceremovaldata(list(VL,FL),Sax,'para');
Ppf=Projpara(Pf);//座標軸を平行投影した2次元データ作成
//このあとPhHiddenData()により,陰線部分のデータを抽出できるが,ここでは必要ない

//四面体の頂点を平行投影した点
PpA=Projpara(PA);
PpB=Projpara(PB);
PpC=Projpara(PC);

//ウィンドウに表示
Windisp(Pp4,PpHi,Ppf,PSH,'c');


//ここからTeX用のデータ作成
Openfile('simplex.tex');//データを収めるTeXファイルを開く
Setunitlen('2*10/12cm');//単位長を指定
Beginpicture('');//\begin{picture}コマンドを単位長を指定して書き出す
//平行投影した2次元データを書き出す
Drwline(Ppf,0.5);//実線はDrwline
Drwline(Pp4,0.7);
Drwline(PSH,0.5);
Setpen(0.7);//Invdashlineでは線の太さを変更出来ないので,Setpenコマンドで太さ指定
//両端がギャップになっている破線を描く,数字は実線部分とギャップ部分間隔
Invdashline(PpHi,0.5);

//3次元座標軸の名前
Xyzaxparaname('x_0=[-1,2]','x_1=[-1,1.8]','x_2=[-0.3,1.8]');

//図に書き入れたい数式など
Expr([0,0],'sw','O');
Expr(PpA,'sw','(1,0,0)');
Expr(PpB,'se','(0,1,0)');
Expr(PpC,'ne','(0,0,1)');

//斜線部分に白い円を描画して,その中に文字を入れる
C1=Circledata([0.42,0.3],0.14);//円のデータ
Shade(C1,0);//白い円を描画
Expr([0.42,0.3],'c','\Delta^{\!2}');//円の中に入れる文字
Endpicture(0);//picture環境を終了
Closefile();//ファイルを閉じる

うーん.図形に隠れる線の描画なんかは手動でも出来そうなので,このくらいの図だったらasymptoteで描いたほうが簡単かもです.多面体の書き方や,曲面の埋め込みなんかの練習になったからよしとしますか.

2014年6月28日土曜日

MacとUbuntuでのLaTeX実行速度の違い

私が所有しているMacBook Air mid2012はCPUをcore i7のものに変え,メモリは8G積んでいます.Mac上ではMacTeX 2014, 外付けSSD上のUbuntu 14.04上ではTexLive 2014をインストールして,MacではEmacs 24.4.50上のYaTeXから,Ubuntu上ではEmacs 24.3上のYaTeX上からタイプセットを行っています.

Lebesgue積分と関数解析のノートを作っているのですが,ノートが肥大化するにつれてMac上のplatex+dvipdfmxの速度が気になるようになってきました.そこでいま1000ページちょっとあるファイルのタイプセット時間を測ってみると,Macでは118秒, Ubuntuでは35秒と大きな差が出ました.Warningがたくさんでるため,その表示に時間がかかっているのもあるかと思いますが,特にdvipdfmxの実行時間に大きな差があるようです.それにしてもなぜこんなに処理時間が違ってくるのでしょうか.TeXLiveのインストール時間なども,Ubuntuのほうが体感的に速いような気がするのですが,ファイルシステムの違いが大きいのかもしれません.

Ubuntuのターミナル上で「platex --shell-restricted -synctex=1」でタイプセットすると31.2秒, dvipdfmxの処理時間は2.2秒ほどでした.

MacではEmacsでのRefTeXの動作も遅い気がします.Macではラベルのスキャンに要する時間が遅くイライラが募りますが,Ubuntu上のEmacsでは一瞬で終わりストレスがありません.これはMacの方はEmacs 24.4の開発版を使っているのも関係しているのでしょうか.

こんな感じなので,最近はLaTeX文書を書くときにはもっぱら外付けSSDにインストールしたUbuntuを使っています.

追記:2014/07/711:mdframed.styでtikzを使っているのが原因でタイプセットがかなり遅くなっていました.tikzを使わない形式に戻した所,あるファイル(B5のpdfで150ページほど)のタイプセット(YaTeXでplatex+dvipdfmx)はMac上では13〜14秒かかっていたものが7秒弱に,外付けSSD上のUbuntuでは6〜7秒ほどかかっていたものが3秒に,ほぼ倍速になりました.Mac上でもストレスが大分軽減されるようになりましたが,それでもUbuntuのほうが倍速です.

2014年6月20日金曜日

Ubuntu 14.04でのEmacsの設定(mozc, YaTeX, SyncTeX, フルスクリーン)

最近MacBook Air (mid 2012)の外付けSSDにUbuntu 14.04をインストールしたので,久しぶりに設定をゴニョゴニョしております.

Emacsの日本語入力では,以前はAnthyを使っていましたが,TeXフォーラムの「emacs, mozc, TeX入力」を見て,mozcでもドル記号を入力したときに自動で直接入力に切り替えることが出来そうだったので設定をしてみました.「~/.emacs.d/init.el」に次のように設定しています.
;;; 言語環境の指定
;;mozcの設定
(require 'mozc)
(set-language-environment "Japanese")
(setq default-input-method "japanese-mozc")

;;ドル記号を入力したときに直接入力に切り替える。
(define-key mozc-mode-map "$" 'YaTeX-insert-dollar-or-mozc-insert)
(defun YaTeX-insert-dollar-or-mozc-insert ()
  (interactive)
  (if (eq major-mode 'yatex-mode)
      (YaTeX-insert-dollar)
    (mozc-insert)))

その他にも,SyncTeXの設定がしばらく見ない間に変わっていたので,TeXWikiを参考に設定も行いました.
synctex-for-evince-yatex.el」をダウンロードしてemacsが読める場所に置きます.
init.elには次のように書き込んでおきます.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; synctex関連
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;inverse search
(require 'dbus)

(defun un-urlify (fname-or-url)
  "A trivial function that replaces a prefix of file:/// with just /."
  (if (string= (substring fname-or-url 0 8) "file:///")
      (substring fname-or-url 7)
    fname-or-url))

(defun evince-inverse-search (file linecol &rest ignored)
  (let* ((fname (un-urlify file))
         (buf (find-file fname))
         (line (car linecol))
         (col (cadr linecol)))
    (if (null buf)
        (message "[Synctex]: %s is not opened..." fname)
      (switch-to-buffer buf)
      (goto-line (car linecol))
      (unless (= col -1)
        (move-to-column col)))))

(dbus-register-signal
 :session nil "/org/gnome/evince/Window/0"
 "org.gnome.evince.Window" "SyncSource"
 'evince-inverse-search)



;;forward-serach

  (require 'synctex-for-evince-yatex)
  (synctex-for-evince-dbus-initialize)
  (add-hook 'yatex-mode-hook
            '(lambda ()
               (YaTeX-define-key "f" 'synctex-for-evince-yatex-forward-search)))
これでUbuntuでも快適にLaTeX生活を送れるようになりました.

追記:2014/06/23: フルスクリーンの設定を書くのを忘れていました.
以下のように記述しておけば,F11キーでフルスクリーンモードに移れます.
;;フルスクリーンモード
(defun toggle-fullscreen ()
  "Toggle full screen on X11"
  (interactive)
  (when (eq window-system 'x)
    (set-frame-parameter
     nil 'fullscreen
     (when (not (frame-parameter nil 'fullscreen)) 'fullboth))))

(global-set-key [f11] 'toggle-fullscreen)

複数の文書で共通して使いたい文書の置き場所(LaTeX)

LaTeXでLebesgue積分のノートと複素解析のノート,Lie群のノートを作成しているのですが,実数関数についての微積分の内容をすべてのノートに共通させたいと以前から考えていました.

サブフォルダに置いてある文章ならば,import.styを使って読み込むことも可能ですが,同水準のフォルダ間の文章の読み込みは望みの挙動をしてくれる解決策を知りませんでした.
import.styを使うと,サブディレクトリ以外の他ディレクトリのファイルも読み込むことが可能なようです.しかし私が試した限りでは,警告やエラーが出ないものの,期待したファイルを読み込んでいない結果が得られました.またimport.styを使うと,YaTeX側で認識をしてくれないという問題があります(個人的にはこれが一番の問題).


仮に共有したい微積分のノートが「$HOME/notes/calculus」に置いてあるとします.

  • \inputコマンドを使うのであれば,これは相対パスを理解してくれるようなので,\input{../calculus/integral}といった記述をしても問題なくタイプセットを行うことが可能です.

しかし\includeコマンドを使おうと思うと,相対パス表記はLaTeX側で解釈してもらえないようで,エラーが出てしまいます.大規模の文章を扱うときには,\includeonlyコマンドを使って分割タイプセットを行いたいので,\inputしか使えないのは不満が残ります.

  • 別の解決策として1つのPC(OS)しか使わないのであれば,共通させたい文書を入れるフォルダを作って,その他の各文書のフォルダにはシンボリックリンクを貼っておけば良さそうです.
しかしこれにも問題点があって,私はLaTeXのノートをDropboxに保存して複数のPCで共有しているのですが,シンボリックリンクを使った方法だとDropbox上で実ファイルとして認識されてしまうようで,他のPCでは実ファイル化してしまい余計に扱いがややこしくなりました.

現在はMacやLinuxの環境では
  • ~/.bashrcなどに変数TEXINPUTSを
    export TEXINPUTS=$HOME/notes/calculus:$TEXINPUTS
    と記述してTeX側から共有したいファイルの場所が見えるようにする.
という解決策に落ち着きそうです.この方法だと,\include{integral}といった形で読みこめばよく,また\includeonlyコマンドも用いることができます.多くのディレクトリを追加すると,同じファイル名のものがあるときにかなりまずいことが起こりそうな予感がするので,ファイル名には慎重になる必要がありそうです.

YaTeXでincludeonlyの自動補完機能を使うとフルパスを記述されてしまうので,その点がなんとかならないかなとは思いますが,大分やりたいことに近づいたと思います.


2014/06/28:追記: TEXINPUTSを書き換える方法では,上記のように書き換えた場合,$HOME/notes/calculus内にauxファイルがあると,mainファイルに作成されたauxファイルよりもそちらを先に読みにいってしまうため,目次や式番号などが正しく作成されません.共有する文書を入れたディレクトリ内からはauxファイルを削除しておくようにしましょう.

他にも色々な解決法があるようです.
のあたりが参考になります.
\let\include=\inputとするものや,texmf.cnfの中のopenout_any, openin_anyという変数をa (any)にするものもありました.後者はカレントディレクトリの上位ディレクトリの読み書きを許すことになるので,セキュリティー上よろしくないようです.野良TeXファイルをタイプセットしないのであればこれでよいのかも.

    Ubuntu 14.04をMacBook Airの外付けSSDにインストール

    久しぶりにブログタイトルに則した内容です.

    私はMacBook Air (Mid 2012)をメイン機として利用しており,先日TranscendのJetDrive 520を購入してSSDを480GBのものに換装し,純正のSSD(250GB)が余ったので久しぶりにUbuntuをインストールしてみました.

    以前にも外付けHDDにUbuntuインストールしたことがあったのですが,USB 2.0接続のものだったため動作が緩慢で,Lubuntuに入れ替えてようやく耐えられるような状況だったのと,いつのまにか起動できなくなってしまったこともあり,その後試していませんでした.

    今回インストールしたのはUbuntu 14.04 Desktop Japanese Remixです.以前にUbuntuを外付けHDDにインストールしたときに,日本語入力のibusが非常に使いにくくなっており,Fcitxをインストールして設定したのですが,Japanese RemixバージョンではFcitxを採用していてそのあたりの調整を行わなくてよさそうだったため選んでみました.

    インストールの手順はほぼkanzメモさんの「Mac+外付けHDDにUbuntu 13.04をインストール」の記事の通りに行いました.

    以下では,外付けSSDは/dev/sdbとして認識されているものとします.

    他の人の記事ではBoot用パーティションを分けないでインストールしているものも多く,最初は私もブートローダをインストールするデバイスとして外付けSSD(/dev/sdb)を指定してインストールしてみました.最初はきちんと起動したのですが,カーネルのアップデートをしたのが原因なのか,すぐに起動できなくなりました.これまではこの点で何度も失敗していたように思います.

    ですので,上記の記事を元に再インストールを試みました.

    さて,私が最初に外付けSSDにUbuntuをインストールしようとした際には,上記記事のEFI領域を作成していなかったものの,インストール後のパーティションをみるとEFI領域が作成されていました.最初のインストールでブートローダを/dev/sbdにインストールしたのが原因かと思います.このEFI領域はUbuntuの再インストールの際に使わないように設定を行ったので,もし作成されていないのであれば作る必要はないと思います.ということで,パーティションは

    • rEFInd用(HFS+)  1GiB (32MiBで十分だそうですが,OSをMavericksにしてから,ディスクユーティリティからは小さなパーティションが作成できなくなった(?)ようでした)
    • Boot用パーティション (Fat32) 100MiB
    • Ubuntuインストール用パーティション(ext4) 50GiB
     のように分割しました.SSDの残り部分はFat32のデータ保存用パーティションにしました.ここで,(HFS+)はMac用のパーティションであり,Ubuntuのインストールディスクに付属しているパーティションエディタ「gparted」では作成できなかったので,Macのディスクユーティリティから作成しました.OSX Lionのときには小さなパーティションが作成できていたのですが,Mavericksでは小さなサイズのパーティションが作成できず,かなり無駄ができてるのが気にかかります.残りのパーティションはgpartedで作成しました.

    後の手順は上記の記事に従って行いました.今度はカーネルのアップグレードを行ってもきちんと起動しています.

    Ubuntu 14.04では発熱量がMavericksに比べてかなり大きいようで,電源をつないでいないとバッテリーがすぐに尽きてしまいそうです.

    Emacs24.3やTeXLive 2014をインストールして使ってみましたが,SSDの読み書きの速度が内蔵SSD並であるためか,Mavericksに比べて挙動が爆速です.pdfで230ページほどの文書をYaTeXからplatex+dvipdfmxでタイプセットしてみたところ,Mavericksでは14秒ほどかかっていたのが,外付けSSD上のUbuntuでは8秒でした.

    あまりに快適なので,VMware Fusion 6の試用品をインストールしてこちらにもUbuntuを入れてみたところ,同じファイルをタイプセットすると10秒で済みました.LaTeXを使うのならやっぱりLinuxがよいのかな.VMware Fusionに入れたUbuntuは,Emacs上でアンダースコアとバックスラッシュの設定の仕方がよくわからないため,使わなくなりそうです.一時勢いで購入しかけましたが買わなくてよかった….

    2014年6月14日土曜日

    TranscendのMacBook用SSD交換キットJetDrive 520を購入

    AppleのWWDC 2014では新しいハードウェアの発表がありませんでした.
    もし新しいMacBook Airが発表されたら購入を考えようかと思っていたのですが,肩透かしを食らった状態になりました.

    現在MacBook Air (mid 2012)を所有しているのですが,内蔵SSD(256GB)の容量が気になりだしていたので,Transcendから最近発売されたMacBook Air用のSSDアップグレードキットであるJetDrive 520の480GBタイプを購入してみました.
    純正のSSDは512GBで7万円くらいが相場のようでとても手を出せないでいたのですが,こちらはAmazonで4万円となっておりかなり求め易くなっています.

    換装に必要なデータコピー用のケーブルや精密ドライバーも付属していて,他に何かを用意する必要のない親切なキットです.またUSB3.0対応の外付けアルミケースも付属しており,交換した後のSSDを入れて外付けドライブとして再利用出来るのも嬉しい点です.

    換装はTranscedのサイトで見られる動画を見ながら行えば非常に簡単でした.ちょっと迷ったことは,ネジが右ネジなので外すときに左にまわすのですが,あまり力を入れすぎるとネジ穴を潰してしまいそうなのでどちらにまわしてよいのか最初は不安になりました.

    Blackmagic Disc Speed Testを使って読み込み,書き込みのスピードテストをしてみました.

    まずは交換前の純正SSDです.Write 402.4MB/s, Read 448.2MB/sでした.購入の際に参考にしたmakkyon webさんの記事「MacBook Air (Mid 2012) のSSDをJetDrive 520に交換!驚きのベンチマーク結果は…」ではWriteが250MB/sくらいのようなので,元々かなり速い部類だったようです.


    次は換装後のテストです.Write 435.8MB/s, Read 493.0MB/sとなり,どちらも1割ほど増加しています.すげー.


    最後は取り外した純正SSDを外付けケースに入れたもののテストです.Write 359.2MB/s, Read 396.8MB/sで,書き込みも読み込みも内蔵の場合よりも1割くらい減っていますが,それでも現在使っているバックアップ用のUSB3.0接続の2TBのHDDが書き込み,読み込みとも150MB/sほどであるのに比べると驚異的です.

    交換したJetDriveの容量は現在479.24GBと認識されています.これで残りの容量を気にすることなく音楽CDの取り込みなどが出来るようになりました.

    外付けのアルミケースは質感もよく,小さくて持ち運びもし易そうです.外付けのSSDにはLinuxでも入れて遊んでみようかと思います.

    2014年6月11日水曜日

    Lebesgue積分と位相ベクトル空間の勉強ノート 6

    Lebesgue積分と位相ベクトル空間の勉強ノートを更新しました.
    こちらに置いておきます

    追記:2016/10/10 広義積分の項目は杉浦氏の解析入門を参考にしていたのですが、変数変換公式の証明中に体積確定(またはJordan可測)であることを確かめなければならない集合について体積確定かどうか調べていないところがあり、これを証明するには修正点が非常に多くなるので、宮島氏の微分積分学IIの証明を参考に大幅に書き換えをしました。

    追記:2016/07/27 広義積分の項目を追加しました。ルベーグ空間の積分に対するMinkowskiの不等式の証明が中途半端だったので証明のし直しをし、その他にタイプミスを修正しました。複素解析のノートと結合する試みを始めました。上極限と下極限について成り立つ関係式は、複素解析のノートに載せていた証明に不備があったので修正しました。とりあえず今後は初等関数やガンマ関数、ベータ関数を定義して、変数変換の項目を整備するのと、複素線積分をきちんと定義して多変数解析関数の初歩を取り込みたいです。

    追記:2016/05/02 定理の引用番号がおかしくなっていたのを修正しました.

    追記:2016/04/16 定理環境の枠囲みをmdframed.styからtcolobox.styに変更しました.文章中の妙な改ページが無くなっていると思います.

    追記:2016/2/19 読み返してみると何を言っているのか意味不明だったので、柴田氏のルベーグ積分論定理7.3.3(ヘルダーの不等式の逆)に対応するFolland氏のReal Analysis theorem 6.14の証明部分を修正しました。

    追記:2016/01/19 符号付き測度と複素測度、Lebesgueの微分定理の部分を書き直しました。これでほぼ複素数値関数への書き換えが終わったのではないかと思います。変数変換の具体例や原始関数の存在などの話も加えていく予定です。フォントサイズと余白を変更したのでページ数が1000ページ未満に収まっています。

    追記:2014/12/28 索引のリンクがずれまくりなのを修正しました

    追記:2014/10/09 Lebesgue積分のノートを書き直しました.これまでのノートでは,異なる値を取る点が1つでもあれば異なる関数と見なしていたので証明がごちゃごちゃしていましたが,ほとんど至る所等しい関数の同値関係を使うことで,証明が大分すっきりしたと思います.まだ簡素化出来る部分はあると思います.
    無限大に値を取る関数についての記述は極限操作と相性がよいという理由で残してありますが,その極限操作で得られる関数が可測関数になっているという事実をほとんど使っていないので,残す必要もないのかも知れません.
    今回作ったpdfは久しぶりに一部分を印刷をしたので,印刷仕様でハイパーリンクに色がついていません.

    追記:2014/09/24 Trevesの本のHilbert空間の残り部分とLF空間の性質を少し加筆しました.現在は東大の河澄さんのホモロジー論の講義ノートの勉強ノートとLebesgue積分のノートの改訂をしています.Lebesgue積分のノート部分は見直すとかなり無駄な記述が多いので,同値関係「ほとんど至る所で等しい」を早めに導入して記述をもっとすっきりさせる予定です.結果としてFollandのReal Analysisの書き方に寄っていくと思います.柴田さんのLebesgue積分論の内容を複素数値関数に拡張するのは結構面倒なので,Folland本のほうがオススメかな.


    主な変更点は,

    • $L^p$空間の双対空間についての話題を追加
    • Hilbert空間の正規直交系の性質あたりまでの話題を追加
    • 位相空間論の辺りを追記し,ノート全体の整合性を高めた
    • 複素数値関数でも使えるように命題の幾つかを一般化した
    といったところです.Fubiniの定理や微分定理なども複素数値関数に使える形に書き直していかないとな.

    双対空間のところでFollandのReal Analysisでは複素数値関数には適用出来ないと思えるような証明を採用していて,その修正をするのに時間を取られてしまいました(結局Web上で見つかった講義ノートを参考にした).

    また位相ベクトル空間の完備化に関連した直感的には自明に思える細々した命題の証明(2つの位相ベクトル空間$X_1$と$X_2$の完備化$\hat{X}_1$, $\hat{X}_2$の直積空間$\hat{X}_1\times\hat{X}_2$と直積空間$X_1\times X_2$の完備化$\widehat{X_1\times X_2}$の間の自然な同型の存在など)に時間を取られたりしてキツいものがありました.

    柴田氏のルベーグ積分論の定理7.3.3(ヘルダーの不等式の逆)の証明で変な所が見つかりました.この定理は或る性質を持つ可測関数$g$が$g\in L^q$であることを証明する命題であるものの,証明の最初に$g$がその1つ前の命題7.3.2を満たすので云々という点で$g\in L^q$であることを仮定してしまっています.実際は命題7.3.2そのものが必要でなく,その性質を定理7.3.3の証明の中で使っていません.柴田さんの本の種本は上述のFollandの本なので,Follandの本にある命題をそのまま引きずってしまったのだと思われます.Follandの本では上述したように,柴田さんの定理7.3.3に相当する定理を複素数値関数に対して証明してありますが,その証明法は実数値関数にしか使えないと思われるので注意が必要です.柴田さんの本は実数値関数に制限して証明してあるので,命題7.3.2を除けば正しい証明になると思います.
    追記:2016/02/09 やはりFollandの本のTheorem 6.14の証明は正しかったです。

    TrevesのHilbert空間の章も山場は越したのではないかと思います.
    しかしTrevesの本のHilbert空間の章は他の章に比べて雑な印象を受けました.pre-Hilbert空間の閉部分ベクトル空間が完備だと思っているような記述があったり,非可算集合かもしれない集合$S$に関する級数$\sum_{e\in S}$が出てくるものの和の定義をしていなかったりで,ちょっとイラッとします.

    とうとう総ページ数が1000を超えました.
    それを記念して(?),現代数学社から出ている「やさしい線形代数の応用」(仁平政一著)の表紙デザインをパクって表紙をつけてみました.タイトルは適当です.

    解析ばかりで疲れてきたので,昔少し作った代数的トポロジーのノートを整理しようかと考え中です.はやく具体的な対象が扱えるようになりたいな.

    2014年5月28日水曜日

    OS X MavericksのXQuartzで日本語入力

    結構多くの方が,XQuartzの日本語入力関係で検索してこられているようなので,MavericksのXQuartzで日本語入力を可能にする手順を簡単に報告しておきます.

    私もMavericksにアップグレードしたときに,これまで日本語入力出来ていたものが出来なくなったのですがしばらく放置していました.web上でXQuartzとMacUIMの再インストールを行うと再び日本語入力が可能になるという情報を見かけたので試したところ,実際に日本語入力可能になりました.webでは上書きインストールでOKということでしたが,私は一度インストールしたファイル群を一旦消去しました.

    色々な手順を混ぜながら作業を行ってしまったため,必要最小限の情報は何なのかがちょっとよくわかっていません.

    おそらくXQuartzとMacUIMを再インストールしたあとは,以前に紹介したMattintosh noteさんのXQuartzで日本語入力(MacUIM Mozc)の手順を辿ればよいと思います.

    私はこの作業の後で日本語入力が出来なかったため,あっきぃ日誌さんのmikutter Advent Calendar 2013 Day2の記事のMacUIMに関する記述を参考にごにょごにょしましたが,やはり日本語入力出来ませんでした.

    しかし「システム環境設定」のMacUIMにおける「一般」タブのフォント部分がHelveticaになっていたので,日本語フォント選択しとかなきゃダメなんじゃね?と思いヒラギノフォントを選択したところ,日本語入力が可能になりました.

    ですので,後半のごにょごにょ部分は必要なかった可能性があります.参考までに.

    2014年5月24日土曜日

    可測関数と無限大

    現在Lebesgue積分論と関数解析を勉強中です.
    多くのLebesgue積分の教科書で関数値に無限大を取ることを許して理論を展開していますが,勉強を進めるにつれてその優位性がどこにあるのかわからなくなってきました.

    最初は特異点のある関数,例えば$x=0$で発散する$f(x)=1/x^2$といった関数を$\mathbb{R}$全体で定義された関数として扱うことが出来るようにするのが目的かと思っていたのですが,そうすると$f(x)=1/x$などはそもそも$x=0$で値を確定出来ないので無限大を許容するよりも$x=0$では例えば$f(x)=0$とするなど特異点での値を無理矢理定義し直した関数を考えればよいような気もします.

    実際可積分な関数を扱うようになると,測度を変えない場合は測度零の集合上での関数値を変更しても積分値に影響がないため,上記のような特異な点の数が少ない場合は特異な点での値を修正して有限値関数に置き換えてやればよいことになり,関数に無限大値を許す必要性が無くなってくるように思います.

    また無限大を許すことで定理や命題の証明が変に複雑になっています.

    現時点での理解では,関数値に無限大を許すことの利点は可測関数の極限関数や上極限,下極限が自動的に可測関数になることが保証されることくらいしか思いつきません.
    あまりきちんと考えていないのですが,これってそんなに大きな利点なのかな?と思っています.

    これまでに見た教科書では関数値に無限大を許容したほうが都合がいいとは書いてあるものの,どのように都合が良いのかを明記してある本がありませんでした.誰か説明してくんないかな.

    2014年5月22日木曜日

    mdframed.styとpicins.styの競合

    LaTeXの話です.
    定理環境の装飾にmdframed.styを用いていますが,Lebesgue積分のノートだけいつの頃からかフレームがページを跨いで分割されなくなっていました.重い腰をようやく上げて何が原因になっているのか探っていたところ,図の回り込みに使うpicins.styを読み込んでいると現象が起こることがわかりました.

    picins.styは定理環境の中でも文章を図に回り込ませられる希少なパッケージなので代替策が見つからずどうしようかと考えています.emathのemathMw.styは色々な場面で文章を図に回り込ませることの出来るパッケージですが,環境前後の空きが変なのと,自前のコマンド名と競合するコマンドが大量に出てくるのであまり使いたくないなあといったところです.

    追記:2016/04/19 mdframedとpicinsの競合の問題は、mdframedのマニュアルにばっちり載っていました。マニュアルを読もう。

    2014年5月20日火曜日

    emacs内でTeX文書の作成からpdf閲覧まで行う

    TeX WikiのEmacsに関する記述を見ていると,sheepheadさんのblog記事:Emacs上のPDFでisearch,occur,imenuとかなんでもしてしまうpdf-toolsの紹介が紹介されていました.Emacs23を導入したときに,EmacsでPDFファイルを表示するDocViewを試したことがありましたが,使い勝手が悪かったためすぐに使わなくなりました.

    まずdoc-view-modeの基本的な操作法をまとめておきます.
    キーコマンド機能
    n'doc-view-next-page次のページ
    p'doc-view-previous-page前のページ
    C-n'doc-view-next-line-or-next-page1行下方へスクロール
    C-p'doc-view-previous-line-or-previous-page1行上方へスクロール
    SPACE'doc-view-scroll-up-or-next-page下方スクロールまたは次のページ
    DEL'doc-view-scroll-down-or-previous-page上方スクロールまたは前のページ
    k'doc-view-kill-proc-and-bufferプロセスを終了しバッファを閉じる
    g'revert-bufferバッファを閉じる
    +'doc-view-enlarge拡大
    -'doc-view-shrink縮小
    カーソルキー -上下左右方向へスクロール
    M-g M-g 'doc-view-goto-page指定したページへ移動
    M->'doc-view-first-page最初のページへ移動
    M-<'doc-view-last-page最後のページへ移動

    上述の記事ではEmacsのdoc-view-modeの使い勝手を良くするEmacs拡張アプリであるpdf-toolsを紹介していたので,早速試してみました.環境はMac OS X MavericksでEmacs 24.4.50を使用しています.

    pdf-toolsを検索してみたのですが,検索上位に現れるGitHubのpolitza/pdf-toolsはLinux環境を前提としているようで,そのままソースをコンパイルしてみるとエラーが出ます.ソースコードを少し書き直すとMacでも使えたという情報も見かけたものの,ソースコードをいじる技術力がないので,誰かMacに対応したものを作っていないか他力本願で探してみるとGitHubにありました.

    axot/pdf-toolsからzipファイルをダウンロードして展開し,ソースをコンパイルしてみるとすんなり通りました.するとソースを展開したフォルダにpdf-tools-0.20.tarというファイルが出来たので,Emacs上で
    M-x package-install-file RET pdf-tools-0.20.tar RET
    
    としてインストールしました.これでdoc-view-mode上で動作する色々なマイナーモードが使用可能になります.

    M-x pdf-tools-helpで各マイナーモードや用意されている関数の説明を見ることができます.


    EmacsからC-x, C-fでpdfファイルを選択して開き
    • pdf-isearch-minor-mode
    • pdf-sync-minor-mode
    • pdf-link-minor-mode
    を試しました.まずdoc-view-modeはimagemagickのconvertコマンドを使ってpdfファイルをpngファイルに変換してEmacsのウィンドウ内に表示します.数ページのpdfファイルであればその変換にかかる時間が気にならないと思いますが,私は普段から数百ページのファイルを扱うことが多いため変換に時間が掛かり,LaTeXファイルのタイプセットの度にpdfファイルを再読み込みして変換をしなければならないため,この時点ですでにげんなりしてしまいます.画像ファイルの解像度が粗いのも気になりました.

    pdf-toolsで今回試したマイナーモードはいずれもよく働きます.
    isearchでは,検索した語句がハイライトされました.

    pdf-links-minor-modeをonにすると,pdfのhyperlinkでジャンプ出来るようになりました.またpdf-sync-minor-modeでは,pdfのダブルクリックした部分に該当するTeXソースファイルの内容が表示されることを確認できます.
    逆にソースファイルからpdfへジャンプする機能については,helpを見ると設定のための関数が用意されているので出来るとは思いますがそこまでは試していません.

    ページの遷移がコマンドで済むことやisearchが出来ることは便利なのですが,ページ数の多いファイルをタイプセットする毎にpdfファイルを読み直して画像ファイルへ変換するという手間がかかることを考えるとあまり実用的ではないかなぁ.

    2014年5月2日金曜日

    tikzを用いた部,章,節のカスタマイズ

    TeX Stack Exchangeのサイトを眺めていて,tikzを使った各種見出しのデザイン変更の仕方でとても格好の良いものが幾つかあったため,リンクをまとめてみます.

    tikzを使えばこんなことも出来るのかと感心させられました.

    2014年5月1日木曜日

    mdframedを用いた定理環境の修飾(platex+dvipdfmx, tikz)

    追記:2016/04/19 定理環境をmdframedを使ったものからtcolorboxを使ったものに変更しました。

    以前にplatexではmdframedでtikzを使った描画はうまくいかない風なことを書きましたが,あれはウソでした。すみません。

    mdframedパッケージを読み込む前に,graphicxパッケージにdvipdfmxオプションを付けて読み込んでおけば使えました。

    前回記事にした定理環境では,定理の番号に章番号や節番号を付けて出力したり参照したりするときに不便なため,書き直しをしました。次のように記述しておけば,platex+dvipdfmxできちんとした出力が得られます。
    \documentclass[a4paper,10pt,papersize]{jsarticle}
    \usepackage{amsmath,amssymb,mathrsfs}
    \usepackage{etoolbox}
    \usepackage[svgnames]{xcolor}
    \usepackage[dvipdfmx]{graphicx}
    \usepackage[framemethod=tikz]{mdframed}
    
    \newcounter{theo}
    \numberwithin{theo}{section}
    \newenvironment{theo}[1][]{%
    \refstepcounter{theo}%
    \ifstrempty{#1}%
    {\mdfsetup{%
    frametitle={%
    \tikz[baseline=(current bounding box.east),outer sep=0pt]
    \node[anchor=east,rectangle,fill=blue!20]
    {\strut 定理~\thetheo.};}}}%
    {\mdfsetup{%
    frametitle={%
    \tikz[baseline=(current bounding box.east),outer sep=0pt]
    \node[anchor=east,rectangle,fill=blue!20]
    {\strut 定理~\thetheo.~#1};}}%
    }%
    \mdfsetup{innertopmargin=5pt,linecolor=blue!20,%
    linewidth=2pt,topline=true,
    frametitleaboveskip=\dimexpr-\ht\strutbox\relax,}
    \begin{mdframed}[]\relax%
    }{\end{mdframed}} 
    
    
    \begin{document}
    
    \section{Riemann積分}
    \begin{theo}[Riemann積分の線型性]
    \label{theo:riemann}
    $\mathscr{R}(I)$を$\mathbb{R}^n$の有界閉区間$I$上でRiemann可積分な実数値関数全体
     の集合とする.$\mathscr{R}(I)$は実ベクトル空間であり,$I$上の積分は
    $\mathscr{R}(I)$から$\mathbb{R}$への線型写像である.即ち
    \begin{equation}
     f, g\in \mathscr{R}(I),\ c\in \mathbb{R}\text{ならば}
    f+g\in \mathscr{R}(I),\ cf\in \mathscr{R}(I)
    \end{equation}
    であり,なおかつ
      \begin{gather}
      \int_I (f+g)(x)\, dx
     =\int_I f(x)\, dx + \int_I g(x)\, dx, \\
      \int_I cf(x)\, dx 
     = c\int_I f(x)\, dx
     \end{gather}
    が成り立つ.
    \end{theo}
    
    定理\,\ref{theo:riemann}は凄い!
    
    \end{document}
    


    これを使って数学ノートのプリアンプルを書き換えました。現在は定理環境が次のような体裁になっています。

    2014年4月24日木曜日

    OS X Mavericksにemacs 24.4.50を導入

    追記:2014/11/04
    emacs24.4がリリースされたためか,この記事へのアクセスが多いようですが,内容はemacs24.4の安定版がリリースされる前のものなので情報が古く,下記に紹介してあるインラインパッチはリリース版に当ててもビルドできません.新しい情報は,Plamo Linux日記さんの方で確認してみてください.



    これまでemacs-23.4を日本語入力時にクラッシュが連発するのに耐えながら長らく使ってきました.

    以前に何度かemacs 24系統をビルドしてみたものの,愛用しているwiden-window.elが使えなかったり,フルスクリーンがCocoaのnativeなものだけになってしまい別画面に移動するのが気持ち悪かったり,フルスクリーンで上部に文字が表示されないラインが残ったり等々,日本語入力の不具合を補って余りある不具合があったので,導入を断念していました.

    最近フルスクリーンの問題や日本語入力時のクラッシュが解決されたという噂を聞きつけたので,試してみました.

    まず,こちらから開発版のemacs-24.4.50.tar.gzをダウンロードしました.
    日付は2014-04-23 09:02:25のものを用いました.

    23.4ではフルスクリーンのパッチを当てる必要がありましたが,emacs24ではフルスクリーンをnativeで使えるようになっているので必要ありません.

    あとは日本語インライン入力のためのパッチの入手ですが,本家のMacEmacs JPで正式にリリースされているのはemacs-24.3のものなので,Plamo Linux 日記さんの2014-04-17で配布されているemacs-24.4-20140417-inline.patchを拝借しました.
    最初はこちらで配布されているバイナリを試してみたのですが,文章編集中に謎のリージョン指定が起こり,Ctrl-eを打つとそのリージョンの末尾まで飛ばされるという不具合が生じたので,自分でビルドしてみた訳です.

    emacs-24.4.50.tar.gzとemacs-24.4-20140417-inline.patchを同じディレクトリに置き,ターミナルから
    $ tar xvzf emacs-24.4.50.tar.gz
    と打ちこんでemacs-24.4.50のソースを展開します.出来たemacs-24.4.50というディレクトリに移動し,
    $ patch -p1 < ../emacs-24.4-20140417-inline.patch
    としてパッチを当てます.後は
    $ ./configure --with-ns --without-x
    $ make -j2
    $ make install
    とすれば,nextstepというフォルダ内にEmacs.appが作成されるので,これをアプリケーションフォルダに移動させます.makeのオプション-j2は,プロセッサのコア数です.


    さて,後は初期設定ファイル~/.emacs.d/init.elの編集です.
    まず,分割されたウィンドウの大きさを自動で設定してくれるwiden-window.elの設定ですが,emacs-24になってwindow.elが大きく書き直されているそうで,bw-get-treeといった関数に始まり,色々な関数が無くなっているためemacs 23.4のときの設定では動きませんでした.解決策として,こちらからやや古めのwindow.elをダウンロードして,init.elでロードしてやると使えるようになります.少なくとも私の使い方では今の所不具合は見当たらないので,このままでいこうと思います.設定は次の通りです.
    (load "window.el") ;widen-window.elではemacs24以上で存在しない関数が必要
    
    ;; widen-window フォーカスのある window のサイズが自動的に大きくなる
    (require 'widen-window)
    (global-widen-window-mode 1)
    (setq ww-ratio 0.7)
     ;window widening が機能してほしいタイミングを追加
    (setq ww-advised-functions
          (append ww-advised-functions
           '(;recenter
      windmove-up
      windmove-down
      windmove-right
      windmove-left)))

    後は,emacs-24からcolor-themeを使わなくともthemeの設定が出来るようになりました.幾つか試してみたものの,イマイチピンと来るものがなかったので,githubのreplace-colorthemesでdesert-theme.elをダウンロードして設定をしました.
    (setq custom-theme-directory "~/.emacs.d/themes/");themeファイルを入れるディレクトリ
    (load-theme 'desert t t)
    (enable-theme 'desert)


    後は,TeX Stack Exchangeの”RefTeX broken in Emacs 24.3.1?"にあるように,
    reftex-modeでreftex-referenceを動作させるとselect reference formatという画面が出てきて,referenceの選択画面にいくまでに変なワンステップが入るようになってしまいました.これはinit.elに
    (setq reftex-ref-macro-prompt nil)
    と記述しておけばよいそうです.

    また,フルスクリーンの設定は
    (setq ns-use-native-fullscreen nil)
    (global-set-key [f9] 'toggle-frame-fullscreen)
    
    と記述しています.上の一行でCocoaのnativeなフルスクリーンを用いるのではなく,emacs-23でのns-toggle-fullscreenのような動作になります.

    emacs23に比べて若干動作が重いような気がしますが,今の所日本語入力でのクラッシュが起こっていないのでしばらく使い続けてみます.

    スクリーンショットはこんな感じです。参照名がやたら長かったり、英語が怪しいのはご愛嬌ということで。

    2014年4月3日木曜日

    LaTeXで3本線のノルムを表示

    数学のノートを作っていて,縦3本線のノルム記号を表示したくなったので調べてみました.nath.styというパッケージを導入すると使えるようになるそうなのですが,プリアンプルに記述すると他のパッケージと競合してしまったので,別の方法を探していました.

    TeX StackExchangeの"Spacing between triple vertical lines"でよさげな解決法を見つけたので転記しておきます.

    プリアンプルに以下を記述します.
    \makeatletter
    \newcommand{\opnorm}{\@ifstar\@opnorms\@opnorm}
    \newcommand{\@opnorms}[1]{%
      \left|\mkern-1.5mu\left|\mkern-1.5mu\left|
       #1
      \right|\mkern-1.5mu\right|\mkern-1.5mu\right|
    }
    \newcommand{\@opnorm}[2][]{%
      \mathopen{#1|\mkern-1.5mu#1|\mkern-1.5mu#1|}
      #2
      \mathclose{#1|\mkern-1.5mu#1|\mkern-1.5mu#1|}
    }
    \makeatother
    
    \opnormという命令で,mathtoolsパッケージで定義されているのと同様の記述の仕方で,3本線のノルムを使用することが出来ます.
    \opnorm{a}        % normal size
    \opnorm[\big]{a}  % slightly larger
    \opnorm[\Bigg]{a} % largest
    \opnorm*{a}       % \left and \right
    
    出力結果は次の通りです.

    2014年3月20日木曜日

    ルベーグ積分と線型位相空間の勉強ノート part 5

    久しぶりの勉強ノート更新です.
    ここに置いておきます.

    追記:2014/06/12 新しいノート作成に伴い,旧版の公開を取りやめました.
    新しいノートはラベルの「勉強ノート」もしくは「関数解析」からどうぞ.


    細かい部分を色々変更し過ぎて変更点が全て把握出来ていませんが,

    1. 微分法とリーマン積分の項目を大幅増加
    2. 拡張された実数のボレル集合を定義,可測関数の定義をより一般的なものに
    3. ほとんど至る所等しい関数の同値類を定義
    4. 自分の納得のいく範囲で$0\cdot\infty =0$の正当化の説明を追加
    5. 集合関数改め,符号付き測度と複素測度の項目を充実.Lebesgue-Stieltjes積分を追加
    6. 位相空間論で始位相や終位相の項目を追加
    7. 多変数複素関数論を見据えて,二重数列の内容を多重数列・多重級数にアップグレード
    8. Trevesの本の10章Frechet空間を追加
    くらいでしょうか.位相ベクトル空間の勉強はあまり進んでいませんが,ページ数が900ページを超えました(汗).
    Frechet空間の例で多変数正則関数の空間の項目があり,それを勉強するためにリーマン積分やら何やら色々復習しなおしています.載せる内容が発散してきており,収拾がつかなくなりつつあります.

    $0\cdot \infty=0$の正当化をするために,積測度の項目をFubiniの定理の直前から測度論の部分に移しました.結果的に伊藤清三氏の本の配列に近くなりました.この議論は,ルベーグ積分を勉強している人にとっては多分有名な服部哲弥氏の講義ノートを参考にしました.拡張された実数上のボレル集合の定義も同講義ノートを参考にしています.

    多重数列・多重級数の部分は,二重数列の記述に比べてかなりゴチャゴチャしたものになってしまったので,もう少しなんとかならないものかと考えています.

    また,柴田良弘氏のルベーグ積分論の本は,FollandのReal Analysisを初等的なものに書き直したような雰囲気があります.そのためか柴田さんの本は被積分関数を基本的に(拡張された)実数値関数に限って議論していたり,Banach空間の双対空間の話題が無いなど,勉強を進めるにつれて,項目の配列はFollandの本のほうが個人的にしっくりくることが増えてきたので,Follandの本の流れに沿ってノートの再構築をしようと思案中です.

    電子化しているとこういう点で融通が利くのでいいですね.
    超関数の勉強を終える頃には2000ページくらいになっているかもしれません….

    2014年1月29日水曜日

    OS X MavericksにScilabを導入

    Mac OS X 10.9 MavericksにScilabをインストールしました.
    公式ページのこちらからScilab-5.4.1.dmgをダウンロードします.
    こちらのページの記述にあるように,起動時に警告が出ますがMavericksでもScilab 5.4.1を使うことが出来ます.

    ただこのままインストールしただけでは起動はするものの,使用することが出来ませんでした.ScilabはJavaを利用しているようで,それが原因のようでした.Javaで動いているソフトを幾つかインストールしているので,そこはてっきり問題がないものと思い込んでいました.解決方法は,アップルのこちらのサポートページからJava for OS Xをダウンロードしインストールすることです.

    Java for OS Xをインストール後Scilabを起動させると使用可能になりました.

    2014年1月26日日曜日

    KETpicでcyclideを描く

    以前にAsymptoteで描いたcyclideをKETpicを使って描画してみました.
    Asymptoteで描いたものはこちら
    今回は3パターンの図を作ってみました.

    まずは境界線と稜線のみ
    境界線を消すにはどうすればいいのだろう?

    次は稜線・境界線にワイヤデータを加えたものです.


    穴だと思っていた部分に曲線が入り込んでいて,何か変だなと思いつつ,曲面に隠れた曲線も描画してみました.

    なるほど.穴に見えていた部分は穴ではなかったようです.以下はこの図を描画するのに書いたScilabのsceファイルのソースです.
    輪郭線線データの分割数を150にしていますが,時間がかかるので30くらいにして試すほうがよいと思います.

    currentdir=pwd()
    //パラメータの定義
    a=3;
    b=2.9;
    c=0.7;
    d=1.7;
    
    //関数の定義
    function z=H(u,v)
    z=a-c*cos(u)*cos(v)
    endfunction
    
    function x=CX(u,v)
    x=(d*(c-a*cos(u)*cos(v))+b^2*cos(u))/H(u,v)
    endfunction
    
    function y=CY(u,v)
    y=(b*sin(u)*(a-d*cos(v)))/H(u,v)
    endfunction
    
    function z=CZ(u,v)
    z=b*sin(v)*(c*cos(u)-d)/H(u,v)
    endfunction
    
    //視点の設定
    Setangle(60,30);
    
    //関数のデータリスト
    FD=list('p','x=CX(U,V)','y=CY(U,V)','z=CZ(U,V)','U=[0,2*%pi]','V=[0,2*%pi]');
    
    //平行投影した輪郭線データの作成
    Sb=Sfbdparadata(FD,150);
    
    //平行投影したワイヤデータの作成
    Sw=Wireparadata(Sb,FD,8,8);
    
    //平行投影したワイヤデータの内,曲面に隠れる部分のデータを作成
    Swh=WireHiddenData();
    
    //曲面データリストの3次元ワイヤフレームデータを作成
    //Out=Sf3data(FD,200);
    
    //空間曲線の平行投影による2次元射影プロットデータを作成
    PSb=Projpara(Sb);
    PSw=Projpara(Sw);
    PSwh=Projpara(Swh);
    
    Setwindow([-6,6],[-4.5,4.5]);//ウィンドウ範囲を設定
    
    Windisp(PSb,PSw,'c')//ウィンドウに表示
    
    cd(currentdir);
    
    //稜線,境界線のみ
    Openfile('cyclide_bd.tex')//書き出し用ファイルを開く
    Beginpicture('10/12cm');//picture環境を始める
    Drwline(PSb,1.2);
    Endpicture(0);//picture環境を終える(座標軸を書かない)
    Closefile();//書き出し用ファイルを閉じる
    
    //稜線,境界線+ワイヤデータ
    Openfile('cyclide1.tex')
    Beginpicture('10/12cm');
    Drwline(PSb,1.2);
    Drwline(PSw,0.5);
    Endpicture(0);
    Closefile();
    
    //稜線,境界線+ワイヤデータ+陰線
    Openfile('cyclide.tex')
    Beginpicture('10/12cm');
    Drwline(PSb,1.2);
    Drwline(PSw,0.5);
    Dottedline(PSwh,0.5,0.7);
    Endpicture(0);
    Closefile();
    

    追記:2015/04/03: 境界線を消した絵をつくってみました.
    関数のlistで境界の設定のオプションを設定すればよいみたいです.
    //関数のデータリスト
    FD=list('p','x=CX(U,V)','y=CY(U,V)','z=CZ(U,V)','U=[0,2*%pi]','V=[0,2*%pi]',' ');
    パラメータの範囲のあとに,半角スペースをシングルクォートで挟んだものを入れておけばよいようで,ここを'e'とすれば境界が描画されます.

    2014年1月25日土曜日

    KETpicを試してみました.

    KETpic(けとぴっく)は,Scilabなどの数値計算システムを用いたTeXのグラフ描画のためのツールです.色々なところでセミナーや研究会での発表を行って宣伝しているようで,Web上で論文などの断片的な情報が手にはいりますが,マニュアルが充実していないので敷居が高い印象がありました.

    最近興味をもって「KETpicで楽々TeXグラフ」という書籍を購入たので,試用してみました.自分が試したのはScilabバージョンです.

    上記の書籍は中の人が書いているようで,KETpic唯一のマニュアルみたいなものです.事情はわかりませんが,配布の際にマニュアルとしてpdfで添付したほうが研究会での報告よりも利用者の増加や普及が見込めるのではないでしょうか.何故そのような形態を取らなかったのかが不思議です.

    さて,のっけから文句になりましたが,web上で幾つか見ることの出来るKETpicについての論文から,モノクロの図の出力がきれいだということで以前から興味を持っていました.ただScilabのMacへのインストールの仕方がよくわからなかったので試せていませんでした.曲面を2次元面に投影した際の稜線を描画したり,曲面に隠れた線の処理が出来るなど,通常の描画ソフトでは見かけない機能が特徴です.

    今回はFriedrichsの軟化子の定義に使う釣鐘型関数(bell-shaped function)の描画を行ってみました.
    座標軸は,曲面の外部は実線,内部は点線で描画するようにしてあります.また稜線描画の機能を使って,縁の部分を少し太い線にしてあります.曲面に隠れている奥の部分のフレームも描画出来ますが,今回は見苦しい出力になったのでやめました.

    上の図を描くためのScilabのsceファイルのソースを貼付けます.
    currentdir=pwd()
    
    //eps=0.5;
    
    //釣鐘型関数の定義
    function z=F(x,y)
        t=x^2+y^2
        
        if t<1 then
            z=5*exp(-1/(1-t))
        else
            z=0        
        end
    endfunction
    
    
    //関数のデータ
    Rad=2;
    Fd=list("z=F(x,y)","x=R*cos(T)","y=R*sin(T)","R=[0,Rad]","T=[0,2*%pi]","");
    
    //視点の設定
    SetstereoR(20,40,40,0);
    
    //FDのワイヤフレームデータを一点投影した2次元データ
    Sb=Sfbdpersdata(Fd,60);
    //一点投影して2次元データ化
    PSb=Projpers(Sb);
    
    //ワイヤフレームの本数
    N=8;
    M=12;
    R=Rad/N;T=2*%pi/M;
    
    RL=[1:N]*R;
    TL=[0:M-1]*T;
    
    //ワイヤデータの作成
    Sw=Wirepersdata(Sb,Fd,RL,TL,50);
    
    
    //陰線の3次元データ
    //Swh=WireHiddenData();
    
    PSw=Projpers(Sw);
    //PSwh=Projpers(Swh);
    
    //Xyzax3data 座標軸のPD3dのlistを作成
    Sax=Xyzax3data("x=[-2.5,2.5]","y=[-2.5,2.5]","z=[0,2.3]");
    
    //曲面外に出ている座標軸のデータ
    Sax1=Crvsfpersdata(Sax,Sb,Fd);
    //曲面によって隠される座標軸のデータ
    Saxh1=CrvsfHiddenData();
    PSax1=Projpers(Sax1);
    PSaxh1=Projpers(Saxh1);
    
    //スケルトンデータ
    //Skax=Skeletonpersdata(list(Sax),list(Sb,Sw));
    
    Setwindow([-3,3],[-2,2.3]);//ウィンドウ範囲を設定
    
    Windisp(PSb,PSw,PSax1,"c")//画面を開き,PD(プロットデータ)列を表示 cは現在の画面を消去して表示
    
    
    cd(currentdir);
    Openfile("bell_shaped_function.tex")//書き出し用ファイルを開く
    Beginpicture("10/12cm");//picture環境を始める
    Drwline(PSax1,0.7);
    //Invdashline(PSaxh1,0.5);
    Drwline(PSw,0.5);
    //Dottedline(PSwh,0.5,0.7);
    Drwline(PSb,0.7);
    Xyzaxpersname("x=[-2.5,2.5]","y=[-2.5,2.5]","z=[0,2.3]");
    
    //一点投影で,各軸のラベルを書き入れる
    Expr([1.5,1.8],"e2","\displaystyle z=\exp\Bigl(-\frac{1}{1-\lvert x\rvert^2}\Bigr)");
    Endpicture(0);//picture環境を終える(座標軸を書かない)
    Closefile();//書き出し用ファイルを閉じる
    
    KETpicの公式ページには図のサンプルはありますが,ソースのサンプルがなく,書籍を買わない場合は添付されているコマンドリファレンスを見たり,Webで検索して論文にあるわずかな記述を参考にするしかなく,非常に使い辛いです.せめて公式ページに特徴的な図のソースのサンプルがおいてあれば,もっと使い易くなるのではないかと期待しています.

    実線の描画では線の太さを指定出来るのに,破線は指定出来ない仕様は直して欲しいかな.
    追記:2014/09/06
    破線を描く命令DashlineやInvdashlineでは線の太さを指定できないので、破線の太さを調整するにはSetpenコマンドを使います。