2012年12月4日火曜日

hyperrefとgraphicxの組み合わせでエラー

追記:2016/0519 TeXWikiによると,この現象に対応していただけたようです.

MacBook Air (mid 2012)にMacTeX2012をインストールして使っています。

例えば次のようなソースをタイプセットすると、test.pdfがソースと同じフォルダにあるにも関わらず、testというファイルが見つからないとエラーが出て止まってしまいます。
\documentclass[a4paper,11pt]{article}

\usepackage[dvipdfmx,colorlinks,linkcolor=blue]{hyperref}
\usepackage[dvipdfmx]{graphicx}

\begin{document}
\begin{equation}
\label{eq1}
 \int_M d\omega = \int_{\partial M} \omega
\end{equation}
式(\ref{eq1})をストークスの定理という.
\includegraphics{test}
\end{document}
hyperrefパッケージを読み込む順番を変えてみてもエラーが出たままでした。

しかしhyperrefパッケージのcolorlinksオプションを外すとタイプセット可能です。
\usepackage[dvipdfmx]{hyperref}

でもこれではハイパーリンクの色づけが出来ないのでどうしたものかと思っていたのですが、次のように図をインクルードする際に拡張子を明示するとタイプセット出来ることに気づきました。
\includegraphics{test.pdf}

うーん。ちょっと面倒かも。エラーが出る原因は何なのかわかっていません。


2012年9月19日水曜日

Ubuntu 12.04で付箋アプリ

Ubuntu 12.04では以前に標準でインストールされていた付箋アプリケーションのTomboyがインストールされていません。手動でインストールしてみたところ、付箋っぽい体裁をしていなかったので、見た目がいかにも付箋っぽいものを探してみたところXpadというものが見つかりました。
Ubuntuのリポジトリにあるので、

$ sudo apt-get install xpad

などでインストールします。

そのままの状態では自動起動しないので、手動で自動起動するアプリケーションとして設定しなければなりません。Unityパネルの右端のボタンから「自動起動するアプリケーション」を選択して、設定します。

また、xpadを起動をしてみてもUnityのインジケーターパネルに何も表示されないのですが、こちらを参考に登録してみました。最初は記事にあるようにgconf-editorを起動してみても、該当する項目がなかったので、

$ sudo apt-get install dconf-tools

でdconf-toolsをインストールし、端末でdconf-editorを起動します。

$ dconf-editor

「desktop」→「unity」→「panel」と辿って、「systray-whitelist」の値にxpadを書き込んで、ログインし直せば、Unityのパネルにxpadの付箋型のインジケーターが表示されるようになりました。

2012年9月6日木曜日

MacPortsで導入したinkscapeのUIのフォント変更

先日Ubuntu 12.04をインストールしたウチのメインPCが暑さのためかお亡くなりになりました。
現在はMacBook Air (Mid 2012)を中心に使っています。OSはOS X 10.7.4です。

MacPortsを使ってUbuntuを使っていたときとほぼ同じ環境を構築することが出来ているのでそこそこ快適です。MacPortsはインストール時に一々ソースからコンパイルするのが厄介ですが。

Macはやはり見た目がきれいなのですが、X11を使ったgimpやinkscapeのインターフェイスに使われているフォントがジャギーで違和感があります。gimpはapp版を導入したので直ぐにフォント変更の情報を探すことが出来ました。Inkscapeもapp版を導入してみたものの、textextがうまく使えなかったためMacPortsのものをインストールしました。
Inkscape.appの設定ファイルをいじる方法はググってすぐに見つかったのですが、MacPortsから導入した場合の設定ファイルの場所がわからなくて困っていました。
結果としては、こちらを参考に"~/.gtkrc-2.0"というファイルを作成し、これに

gtk-font-name="Hiragino Maru Gothic ProN W4 10"

の一文を書き込んでおくだけでした。ファイル名からしてinkscapeだけの設定ではないので他に影響が出るかもしれませんが、とりあえずinkscapeのインターフェイスの見た目は改善されました。

2012年6月10日日曜日

シュヴァレー リー群論

最近はリー群論の勉強がなおざりになっていますが、リー群論の古典的名著と呼ばれているChevalleyのTheory of Lie Groupsがちくま学芸文庫から邦訳されて出版されたようです。
筑摩書房の紹介ページはこちら
まさか邦訳が出るとは思っていなかったのですが、読むかどうかは別として(汗),これは購入せねば。
ちなみにWarnerのLie群の教科書は3.37節あたりで停滞しています。Warnerの本はリー群の1パラメータ部分群の存在と一意性の証明のためにFrobeniusの定理を用いているのですが、これが初学者である私には相当重い内容でした。証明はフォローしたもののまだ理解している気になれていません。このあたりは杉浦さんのLie群論のほうが分かりやすそうなので目移りしている状態です。

2012年5月28日月曜日

SyncTeXの設定。 Emacs(YaTeX) + Evince

Ubuntu 12.04 64bitにTeXLive 2011+tlptexliveをインストールした環境を使っています。この環境はSyncTeXに対応していて、platexに-synctex=1 オプションを付けてタイプセットしたのち、dviファイルをdvipdfmxで処理することで、pdfファイルとtexファイル間の該当部分を互いに行き来することが出来ます。


EvinceやSyncTeXのバージョンで設定方法が変わってくるようなので要注意です。
ここではSyncTeXはTeXLive2011のものを、Evinceのバージョンは3.4.0, Emacsのバージョンは23.3です。EvinceとEmacsはUbuntu 12.04のリポジトリにあるのもです。



2012年5月20日日曜日

Ubuntu 12.04のevinceでpdfを開くと明朝体もゴシック体で表示されるのを直す

タイトルが長いですが、Ubuntu 12.04 64bitのevinceでフォント埋め込みでない日本語pdfファイルを開くと、明朝体で表示されるべき部分までゴシック体で表示されてしまうようです。普段LaTeXでノートを作るときにはフォントを埋め込むことが多いので気づきませんでした。

解決策はいつもお世話になっているこちらを参考に~/.fonts.conf というファイルを作成し、そこに


<fontconfig>
<match target="pattern">
<test name="family" qual="any">
<string>Ryumin</string>
</test>
<edit binding="strong" mode="prepend" name="family">
<string>fontname</string>
</edit>
</match>
</fontconfig>


と記述しておきます。ここでのfontnameという文字列は、terminalで

$sudo fc-list | grep Mincho

として表示されるものの中から選んでおけばよいのだと思われます。私はIPAMinchoとすることで、evinceを再起動後明朝体がきちんと表示されるようになりました。最近のリリースではこの辺はあまり気にしなくてよくなっていたように思ったのですが...。日本語環境をubuntu-defaults-jaから入れたことや64bit OSを使っているのが原因なのかな? ググッてみても、同様の問題を上げている人があまりいないようなので、私の環境に固有の状況なのかも知れません。

2012年5月17日木曜日

あの人はいま3

私にとってMSGといえばMcAuley Schenker Groupなのですが、vocalのRobin McAuleyが何しているのか気になって検索してみました。すると2011年までSurvivorでvocalを務めた後、2012年にはMSGに参加してライブを行なっているようです。声質が1980年代の産業ロック(?)によく合っていて、歌唱力も安定しているので安心して聴いていられます。音質&歌唱のよさそうな音源をピックアップしてみました。

MSGのライブでは、McAuley Schenker名義の曲はSave Yourselfのみのようでした。他の曲も聴きたいなぁ。










Survivorのギターの人って結構動くんですね。

歌唱から熱のようなものはあまり感じられないのですが、なんか好きなんです。
10年くらい前にソロ名義でアルバムを出したのを買ったのですが、それが現時点でまとまった最後の音源らしいです。音源を出してくれないかな。

2012年5月11日金曜日

AsymptoteでCyclideを描く

リー微分の模式図を描きたいのですが、曲面としてトーラスよりは複雑だけれども複雑過ぎないような曲面を探していました。
このページを見ていたところ、丁度良さそうな曲面としてcyclideという曲面がありました。これは$(u, v)$を$[0, 2\pi]\times [0,2\pi]$上を動く媒介変数、$a, b, c, d$を定数として、
\[
\begin{align}
h &=  a - c \cos(u)\ cos(v)\\
x &= (d (c - a \cos(u)\cos(v)) + b^2 \cos(u))/h\\
y &= (b \sin(u) (a - d \cos(v)))/h\\
z &= b \sin(v) (c \cos(u) - d)/h
\end{align}
\]
size(500,0);
import graph3;
currentprojection=orthographic(2,1,3);

real a=3;
real b=2.9;
real c=0.7;
real d=1.7;
real h(pair z){return a-c*cos(z.x)*cos(z.y);}
real X(pair z){return (d*(c-a*cos(z.x)*cos(z.y))+b^2*cos(z.x))/h(z);}
real Y(pair z){return (b*sin(z.x)*(a-d*cos(z.y)))/h(z);}
real Z(pair z){return b*sin(z.y)*(c*cos(z.x)-d)/h(z);}

triple F(pair z){return (X(z),Y(z),Z(z));}
surface s=surface(F,(0,0),(2pi,2pi),50,50);

draw(s,paleblue,mediumblue,nolight);



定数の値をかなり微調整しないと意図した図になりませんでした。
それにしても上記のサイトの図の配色は綺麗ですね。Asymptoteでは、光の効果を入れると図が黒っぽくなってしまいます。
光の具合を変えることが出来るようなのですが、イマイチ把握できていません。
3DCG作成用のソフトを使ったほうがよいのかも。

この曲面に接平面を引いたりするのは難しそうだなぁ…。

Asymptoteでレムニスケートを描く2

少し前にレムニスケートの媒介変数表示が実数全体で定義されているため、Asymptoteでの描き方が分からないというような浅学であることがバレバレの投稿をしてしまいました。
レムニスケートを極形式で表せば一発で解決してしまうのですね。
\[
r^2 =a^2 \cos 2\theta
\]
size(500,0);
import graph;

//レムニスケート
real lem=1.2;
real r(real th){
  if(cos(2*th)>=0){return lem*sqrt(cos(2*th));}
  else{return 0;}
}
pair Z(real th){return (r(th)*cos(th),r(th)*sin(th));}
draw(graph(Z,-pi/4,pi/4,100));
draw(graph(Z,3pi/4,5pi/4,100));


動径$r$の定義式に条件分岐してありますが、描画する部分で$\cos 2\theta$が負の値を取らないような範囲に制限しているためあまり意味はありません。
この媒介変数表示を用いて$\sqrt{z(z-1)}$のRiemann面の模式図を描いてみました。


うーん。まだ見づらいですね。透過させてみたところで、手前にあるものと奥にあるものを自動で判別して描画してくれるわけではないようでした。

2012年5月1日火曜日

Ubuntu 12.04でYouTubeを見ると青色人間になるバグを修正する

Ubuntu 11.10のときからYouTubeの動画で人物が青色になるバグがあったのですが、こちらに修正の方法が載っていました。端末で次を実行すれば直りました。

sudo mkdir /etc/adobe
echo -e "EnableLinuxHWVideoDecode=1\nOverrideGPUValidation=true" | sudo tee /etc/adobe/mms.cfg > /dev/null

Promise Ring 再結成ライブ映像

Promise Ringが再結成ライブが2月に行われたようで、その様子がyoutubeに動画で上がっていました。Daveyの喉の調子が良くなく、どの映像もあまり歌えていなかったようです。今回貼り付けておくのはFM放送用のスタジオライブです。ライブよりも声は出ていますが、音程がふらついています。
新しい音源も作ってくれないのかな〜。



Promise Ringのように元気な曲調のなかにも陰りが見えるような音楽性が好きだったのですが、現在はEMOといえばナヨナヨしているのが一般的なようです。なんかきれいにまとまり過ぎているというか、ノイジーさや芋臭さ、青臭さが足りないんです。old fashioned EMOを演っているバンドはEmpire Empireくらいしか知らないのですが、現在は廃れてしまったのでしょうか。

2012年4月28日土曜日

Ubuntu 12.04にTeXLive2011+tlptexliveをインストール

Ubuntu 12.04を導入したので、TeXLive2011+日本語追加パッチ環境を、TeXLive2011+tlptexliveリポジトリに変更してみました。

まずはTeXLiveの本家このへんからtexlive2011-20110705.iso をダウンロードし、インストールします。このインストール方法は省略します。

以下はTeXLiveの本家のページやtlptexliveのWikiに記述がある内容です。
まず、
$ sudo su
でrootになり、~/.bashrc を編集するなどしてTeXLiveの実行ファイルがあるディレクトリにパスを通しておきます。以下はrootの状態で操作を行いました。 

$ tlmgr option repository http://mirror.ctan.org/systems/texlive/tlnet

として、tlmgrを使う際には近くのCTAN mirrorを使うように設定します。
そこで

$ tlmgr update --self --all

とすることでTeXLive2011のパッケージを最新のものとしておきます。
私の場合はアップデートが700件ほどあり、この段階に最も時間が掛かりました。
またかなりの割合でアップデートに失敗するパッケージがあるので、そのときは
tlmgr に起因するトラブル(Luminescence)を参考に

$ tlmgr update --reinstall-forcibly-removed --all

を実行し再インストールしました。
次にtlptexliveのリポジトリをアップデートします。

$ tlmgr --repository http://www.tug.org/~preining/tlptexlive/ update --all

これでptexやdvipdfmxなどのバイナリがアップデートされます。
 最後にpxdviなどのパッケージをインストールします。

$ tlmgr --repository http://www.tug.org/~preining/tlptexlive/ install pmetapost pxdvi uptex

これまでに比べて非常にインストールが簡単になりました。関係者の皆様に感謝します。

次に、TeXLive2011のasymptoteはバージョンが2.13だったので、最新の2.15をインストールしました。こちらのコンパイルにはbuild-essentialとzlibをインストールしておけばよいと思われます。make installする際にtexi2dviがないと怒られますが、こちらからasymptote.pdfをダウンロードして作業ディレクトリ内のdocディレクトリに入れておけばインストール出来ました。

それで、 端末でplatexを実行してみると
$ platex
This is e-pTeX, Version 3.1415926-p3.2-110825-2.3 (utf8.euc) (TeX Live 2012/dev)
restricted \write18 enabled.

と表示されます。TeXLive2011+日本語追加パッチの場合には、pdfの図をLaTeX文書に貼り付ける際にextractbbを自動で実行するようにするために、texmf.cnfのshell_escape_commandsを書き換える必要があったのですが、そのような手間がいらなくなっていました。platexに-shell-escape または-shell-restricted オプションを付けるだけでよいようです。うーん便利だ。

tlmgrでアップデートに失敗する割合が減れば言うことはないのですが、現状では頻繁にアップデートを行うとトラブルの元になりそうです。

2012年4月23日月曜日

Asymptoteでレムニスケートを描く

レムニスケートは$(x^2 +y^2)^2 =a^2 (x^2 -y^2)$で定義される曲線($(\pm a, 0)$は$x$軸との交点を表す)です。例えば$a=1$として$(x^2+y^2)^2=x^2- y^2$を媒介変数表示すると
\[
x(t)=\frac{t(t^2+1)}{t^4+1},\qquad y(t)=-\frac{t(t^2-1)}{t^4+1}
\]
と表せることが知られていますが、媒介変数表示でレムニスケートのグラフを描こうとすると$t$は実数全体を動かす必要があるのでどのように描いたらよいのかわかりませんでした。

Asymptoteで用意されているcontourモジュールを使えば、$x, y$について陽に解かれていない陰関数$f(x, y)=0$の形のグラフを描くことが出来ます。

size(500,0);
import contour;

real a=1; //レムニスケートのx軸との交点座標
real[] c={0};
real f(real x,real y){return (x^2+y^2)^2-(a^2)*(x^2-y^2);};
draw(contour(f,(-1,-1),(1,1),c));
ここでは$f(x, y)=(x^2+y^2)^2 -a^2(x^2-y^2)$とし、$f(x, y)=0$のグラフを描かせています。

 contourでは2変数関数$f(x, y)$と$x$-$y$平面の矩形を指定するための2点(ここでは$(-1,-1)$, $(1,1)$を指定しているので$(x,y)$は$\{(x, y)\in \mathbb{R}^2 \,|\, -1\leq x\leq 1,\quad -1\leq y\leq 1\}$で表される矩形上を動く)、それに実数値の配列を指定する必要があります。配列を指定することで、等高線を描くことが出来るようになっています。

$x$-$y$平面上の曲線が媒介変数表示で$\ell(t)=(x(t),y(t))$の形で表されるならば、曲面$z=g(x, y)$上の曲線で$x$-$y$平面上に射影した像が$\ell(t)$になるものが$\varphi(t)=(x(t),y(t),g(x(t),y(t))$のように簡単に定義出来ます。

しかし$f(x, y)=0$を満たす曲線$\ell$に対して、曲面$z=g(x, y)$上にのっている曲線で$x$-$y$平面に射影すると$\ell$になるようなものの描き方がよくわかりません。

contourやcontour3モジュールでは解決出来なさそうに思えるので、別の方法を考える必要がありそうです。

何故こんなことをしたいかというと、次のような図を完成させたいからです。

この図では曲面上に媒介変数表示のレムニスケートを描いています。ぱっと見はうまくいっているように見えますが、視点を変更して上から見ると、曲線が始点に戻る前に途切れていることがわかります。

これでも十分なように思えますが、曲線の定義域やノードの数を非常に多くしないと形が崩れてしまい、コンパイルにも時間がかかるので、定義式のimplicitな形から描かせたいと思案しています。

2012年4月20日金曜日

Asymptote シルクハット型$C^\infty$級関数

前回$t\leq 0$で$g(t)=0$, $0\leq t\leq 1$で$0\leq g(t)\leq 1$, $t\geq 1$で$g(t)=1$を満たす
$C^\infty$級関数を使いました。今回はこの関数を使って半径$1$の閉円板上で$\varphi(x, y)=1$, 半径2の開円板の外部で$\varphi(x, y)=0$となる関数$\varphi : \mathbb{R}^2 \to \mathbb{R}$の図を書いてみました。
初めて挑戦したことと言えば、関数を条件分岐で定義したくらいです。


シルクハット型というほど立ち上がっていません。次は真横から見た状態です。
かなり綺麗な曲線になっています。$e^{-1/t}$という関数の$t=0$付近での挙動はあまり問題にならないのでしょうか。


size(500,0);

import graph3;
currentprojection=orthographic(2,-1,0.5);

real f(real t){
  if(t>0)
    {return exp(-1/t);}
  else {return 0;}
};
real g(real t){return f(t)/(f(t)+f(1-t));}
real h(real t){return g(t+2)*g(2-t);}

triple F(pair z){return (z.x,z.y,h(abs(z)));};
surface s=surface(F,(-2.5,-2.5),(2.5,2.5),50,50,Spline);
draw(s,lightgray,meshpen=0.01+gray,nolight);
$\sqrt{z}$や$\log z$のRiemann面についての例がこちらで見つけられます。 バネの作図例もあるようでした。さすがにどれも手馴れている感じだなあ。

2012年4月18日水曜日

Asymptoteで$\sqrt{z(z-1)}$のRiemann面を作図する2

引き続き$f(z)=\sqrt{z(z-1)}$のRiemann面について。
今度は双曲線関数の代わりに、多様体論で1の分割を作る際などに用いられる関数を使ってみました。
つまり
\[
f(t)
=
\begin{cases}
e^{-1/t} &(t>0)\\ 0 & (t\leq 0)
\end{cases}
\]
と置き、$g(t)$を
\[
g(t)=\frac{f(t)}{f(t)+f(1-t)}
\]
と定義します。$g(t)$は$g(0)=0$, $g(1)=1$を満たしているので、2つの関数を滑らかにつなぐときに便利です。さらに
\[
\varphi(x)=
\begin{cases}
-\tanh x &(x<0)\\ 0 &(0\leq x\leq 1)\\ \tanh (x-1) &(x>1)
\end{cases}
\]
と定義、$F(x,0)=\varphi(x)$, $F(x,1)=1$を満たす$F(x, y)$を
\[
F(x, y) = (1-g(y))\varphi(x) +g(y)
\]
と定義します。この関数を使い、今回作図したものは次のようになりました。


今回もパーツを寄せ集めて描画しているので、滑らかであって欲しい部分が滑らかでないという問題が残っていますが、前回よりはマシになったのではないでしょうか。曲面をもう少しうまく定義すれば、より滑らかに出来そうです。

2012年4月17日火曜日

Asymptoteで$\sqrt{z}$のRiemann面を作図する。

$f(z)=\sqrt{z}$のRiemann面を作図してみました。
作図しているのは、$(r, \theta)$を独立変数として
\[
\begin{pmatrix}
x(r, \theta)\\ y(r, \theta)\\ z(r, \theta)
\end{pmatrix}
=
\begin{pmatrix}
r\cos \theta \\ r\sin \theta \\ \tfrac{r}{2}\cos \tfrac{\theta}{2}
\end{pmatrix}
\]
という曲面です。$\theta =\pi, 3\pi$が負の虚軸上に対応していて、$\theta =4\pi$で元に戻ります。同様にして、$z(r, \theta)=\tfrac{r}{2}\cos \tfrac{\theta}{n}$などとすれば、$f(z)=\sqrt[n]{z}$に対応するRiemann面が作図出来ます。



size(7cm);
import graph3;
currentprojection=orthographic(2,-3,3);

triple R(pair z) {return ((z.x)*cos(z.y),(z.x)*sin(z.y),(z.x/2)*cos((z.y)/2));};

real a=10;
real b=4;
pen p=black;
pen q=lightgray;
surface s=surface(R,(0,0),(a,b*pi),8,24,Spline);
draw(s,q,meshpen=p);

2012年4月16日月曜日

Asymptoteでバネを描く

Asymptoteで2次元のバネを描いてみます。
まず螺旋$\ell$を$\ell(t)=(a\cos t, a\sin t, t)$と定義し、$\ell$を$y$軸周りに回転したものを$z$軸の正の側から眺める($x$-$y$平面に射影する)と、バネに見えるはずです。
$y$軸周りを$z$軸を$x$軸に向ける向きに角度$\theta$だけ回転する回転行列は
\[
R_y(\theta)
=\begin{pmatrix}\cos \theta & 0 &\sin \theta \\0 & 1 & 0\\-\sin \theta & 0 & \cos \theta\end{pmatrix}
\]
で与えられるので、$\ell(t)$を$R_y(\theta)$で回転させると
\[
\begin{pmatrix}
x \\ y\\ z
\end{pmatrix}
= \begin{pmatrix}\cos \theta & 0 &\sin \theta \\0 & 1 & 0\\-\sin \theta & 0 & \cos \theta\end{pmatrix}
\begin{pmatrix}
 a\cos t \\ b\sin t \\ t
\end{pmatrix}
=
\begin{pmatrix}
a\cos \theta \cos  t + t\sin \theta \\
a\sin t \\ -a\sin\theta \cos t + t \cos \theta
\end{pmatrix}
\]
となります。したがってこの螺旋を$x$-$y$平面に射影したものは
\[
\begin{pmatrix}
x \\ y
\end{pmatrix}
=
\begin{pmatrix}
a\cos \theta \cos  t + t\sin \theta \\
a\sin t
\end{pmatrix}\]
です。これをAsymptoteで描画してみたのが次の図です。


size(10cm);

import graph;
real a=10; // 螺旋の半径
real b=70pi/180; // y軸周りの回転角度
real c=7;

//螺旋 l(t)=(a\cos t, a\sin t, t)をy軸周りに角b回転させたものをx-y平面に射影した図形
pair l(real t) {return (a*(cos(b))*cos(t)+t*sin(b),a*sin(t));};
draw(graph(l,-(2c-1)*pi,(2c)*pi,400,operator ..));


ここでは、400個の点をベジエ曲線で補間したグラフを描いています。200個よりも少ないと歪みが顕著に見えるようになりました。点の数を指定しないと、定義域を広げるほど歪みが激しくなっていきます。
以前にinkscapeでのバネの描き方を紹介しましたが、inkscapeでも数学関数が使えるので同様の方法でバネを描くことが出来ます。バネを伸ばしたり縮めたりするのはinkscapeのほうが楽ですね。

2012年4月14日土曜日

Asymptoteの練習 Log zのRiemann面的な何か

graph3モジュールを使って$\log z$のRiemann面っぽいものを作図してみました。
アイディアはMathematicaのチュートリアルを参考にしました。
配色はColor Scheme Designerを参考に色々試してみましたが、結局グッとくるものができませんでした。Tikz and PGF exampleには配色のセンスのよい図表が沢山あり、あんなふうにしてみたいのですがセンスはどうにもならなさそうです。TikzはTeXをゴリゴリ使える人が使っているという印象があります。以前にTikzを使って花火を打ち上げていた人もいたような。
Asymptoteの用例集も配色にこだわれば使用人口が増えると思うのですが…。
見た目って大切ですよね。

メッシュの数を減らしすぎると意図している曲面にならないようでした。
影を付けるとドス黒い色になったので却下しました。
欲を言えば、Mathematicaのチュートリアルのように矩形に切り取ったものを表示させたいのですが、今のところ方法がわからないのでとりあえず。




size(10cm);
import graph3;
currentprojection=orthographic(3,1,1);

triple R(pair z) {return ((z.x)*cos(z.y),(z.x)*sin(z.y),z.y);};

real a=12;
real b=6;
pen p=rgb("29467F");
pen q=rgb("4575D4");
surface s=surface(R,(0,0),(a,b*pi),6,30,Spline);

draw(s,q,meshpen=p,nolight);

graph3モジュールでは、$x$-$y$平面上の曲面$z=f(x, y)$の他に、$u, v$を独立変数とした$(x, y, z)=(x(u, v), y(u, v), z(u, v))$タイプの曲面を扱うことが出来ます。
今回は後者の方法で$z=(x,y)$を独立2変数として$(x\cos y, x\sin y, y)$を$(x,y)\in [0,12]\times [0,6\pi]$の領域で描画しています。独立変数$(x,y)$はsurfaceを定義する際に定義した、2点$(0,0)$, $(12,6\pi)$を頂点とする矩形上を動きます。

今度は$\sqrt{z}$のリーマン面に挑戦だ。

2012年4月12日木曜日

Asymptoteの練習 無理関数の分岐

無理関数 $f(z)=\sqrt{z(z-1)}$ の分岐(branch cut)についての説明図。
以前にAblowitz & FokasのCOMPLEX VARIABLESという本で読んだ時にわかりやすいと思ったので載せておきます。

$z=r_1 e^{i\theta_1}$, $z-1= r_2e^{i\theta_2}$と置けば、$f(z)=\sqrt{r_1 r_2}\exp(\frac{i}{2}(\theta_1+\theta_2))$と表せる。$\Theta =\frac{1}{2}(\theta_1 + \theta_2)$と置けば、$f(z)=\sqrt{r_1 r_2}e^{i\Theta}$であるが、これを$0\leq \theta_i < 2\pi$ ($i=1,2$)の範囲で考えると、下図のように、矢印方向から$z$の実軸に近づくときに$\Theta$の値が図に書き込んだ値に近づく。

 $\mathrm{Re}\, z>1$や$\mathrm{Re}\, z<0$では実軸の上から近づいても下から近づいても$\Theta$の値が$\bmod 2\pi$で変わらないので、$f(z)$の値は連続であるが、$0<\mathrm{Re}\, z<1$においては実軸の上から近づけた$\Theta$の値と下から近づけた値とが$\bmod 2\pi$で一致しないため、$f(z)$はここで不連続となる。

さらに$2\pi \leq \theta_i < 4\pi$ $(i=1,2)$で同様のことを考えてみると、これら2枚のz平面をつなぎ合わせることで$f(z)$が1価正則となるような面(Riemann面)が構成出来る。

さらに、$-\pi \leq \theta_1 <\pi$, $0\leq \theta_2 <2\pi$とすれば、branch cutは$0$から負の実軸上を通り、$\infty$を通って$1$に至るような形になることが示せるという話。多くの本ではここまで細かく書いていないので、頭の悪い私には有りがたかったです。 さらに$z=u^2$なる変数変換を行なって$g(u)=f(u^2)=\sqrt{u^2(u^2 -1)}$とすれば、$u$平面で考えたときに$z=0$や$z=1$に対応する$u=0$や$u=1$における分岐点が解消されており、例えば$g$は$u=0$を除いた$u=0$の近傍で正則なので、$u=0$を中心とするLaurent展開が可能(puiseux展開)。





size(6cm);
defaultpen(fontsize(10pt));

dot((0,0));
dot((1,0));
label("$0$",(0,0),SW);
label("$1$",(1,0),SE);

real b=0.6;
draw((-b,0)--(1.05+b,0),Arrow(SimpleHead,7));
label("$\mathrm{Re} z$",(1.55,0),S);

pen dashed=linetype("4 4");
real r1 =0.2;
draw(arc((0,0),r1,0,360),dotted,ArcArrow(SimpleHead));
draw(arc((1,0),r1,0,360),dotted,ArcArrow(SimpleHead));

real a=0.6;
draw((0,a)--(0,-a),dashed);
draw((1,a)--(1,-a),dashed);
draw((0,0)--(1,0),1.2+black);
draw((0.5,a/2)--(0.5,0.02),0.3+black,Arrow(SimpleHead,5));
label("$\Theta =\frac{1}{2}\pi$",(0.5,a/2),N);
draw((0.5,-a/2)--(0.5,-0.02),0.3+black,Arrow(SimpleHead,5));
label("$\Theta =\frac{3}{2}\pi$",(0.5,-a/2),S);
draw((-0.35,a/2)--(-0.35,0.02),0.3+black,Arrow(SimpleHead,5));
label("$\Theta =\pi$",(-0.35,a/2),N);
draw((-0.35,-a/2)--(-0.35,-0.02),0.3+black,Arrow(SimpleHead,5));
label("$\Theta =\pi$",(-0.35,-a/2),S);
draw((1.35,a/2)--(1.35,0.02),0.3+black,Arrow(SimpleHead,5));
label("$\Theta =0$",(1.35,a/2),N);
draw((1.35,-a/2)--(1.35,-0.02),0.3+black,Arrow(SimpleHead,5));
label("$\Theta \equiv 0$",(1.35,-a/2),S);
label("$(\mathrm{mod}\,\, 2\pi)$",(1.35,-a/2)+(0.1,-a/2.5));

2012年3月27日火曜日

Asymptoteの練習 積分と和の比較

$\sum\limits_{k=1}^\infty \dfrac{1}{k^s} (s>1)$が収束することを$\displaystyle \int_1^\infty \frac{1}{x^s}\,dx$の収束性から証明するときのグラフ

任意のべき乗を扱う関数はないようで、$x^s=\exp(s\log x)$を用いて描画しています。
(追記2012/4/23: べき乗はx^sと書いておけばよいようです。)

ここで描画しているのは$x^{-\frac{6}{5}}$のグラフです。
マニュアルを読むと、べき乗根は三乗根まで用意されているようです。
軸のスケールの変え方がよくわからないので、n分の1倍したりn倍したりで調整しています。

size(7cm);
texpreamble("
\usepackage{amssymb}
\usepackage{amsmath}
");// \dotsbを使うため


import graph;
import patterns;
defaultpen(fontsize(10pt));

xaxis("$x$",Arrow(SimpleHead));
yaxis("$y$",Arrow(SimpleHead));

real n=2;
real f(real x) {return 1/exp((6/5)*log(n*x));};
pair F(real x) {return (x/n,f(x/n));};

draw(graph(f,0.25,4,operator ..));

add("hatch",hatch(3,dir(45)));

for(int i=1; i<7; ++i){
  draw(((i-1)/n,F(i).y)--F(i)--(F(i).x,0));
  filldraw(((i-1)/n,F(i).y)--F(i)--(i/n,0)--((i-1)/n,0)--cycle,pattern("hatch"));
  label(format("$%i$",i),(i/n,0),S);
}

label("$y=\dfrac{1}{x^s}$\ $(s >1)$",F(1.5),NE);
label("$\dotsb\dotsb$",(6.8/n,0.1/n));
label("$\dotsb$",(7/n,0),S);

2012年3月25日日曜日

Asymptoteの練習 円環領域

Laurent展開の説明に出てくる円環領域の作図。
領域を斜線で表すのに初めてpatternsモジュールを用いた。
hatchが斜線を表す。
円周上に矢印を描くために小細工がしてある。
arcで描いた円周の内部を塗ろうとすると、pathがcyclicでないと怒られた。
cyclicにするにはどうするのだろう。

size(6cm);

import patterns;
defaultpen(fontsize(10pt));

real r1=3.2;
real r2=1.8;
path p2=arc((0,0),1,0,360);
path g2=scale(r2)*unitcircle;
path g1=scale(r1)*unitcircle;
path p1=arc((0,0),4,0,360);
path g2a=arc((0,0),r2,45,360,direction=CW);
path g2b=arc((0,0),r2,-135,180,direction=CW);
path g1a=arc((0,0),r1,0,45,direction=CCW);
path g1b=arc((0,0),r1,180,225,direction=CCW);

add("hatch",hatch(3,dir(45),gray(0.5)));
filldraw(g1^^g2,pattern("hatch")+evenodd);

label("$r_2$",(r2,0),(0.8,-1),Fill(white));
label("$\gamma_2^{-}$",(r2+0.65)*dir(140),Fill(white));

draw(p2);
draw(g2a,MidArcArrow(SimpleHead));
draw(g2b,MidArcArrow(SimpleHead));
draw(g1a,MidArcArrow(SimpleHead));
draw(g1b,MidArcArrow(SimpleHead));
draw(g2);
draw(g1);
draw(p1);


label("$z$",((r1+r2)/2-0.1)*dir(60),E,Fill(white));
dot(((r1+r2)/2-0.1)*dir(60));
label("$O$",(0,0),SW);
label("$\rho_2$",(1,0),(0.5,-1));
label("$r_1$",(r1,0),(0.7,-1));
label("$\rho_1$",(4,0),(0.7,-1));
label("$\gamma_1$",(r1+0.36)*dir(110));
draw((0,-5)--(0,5),Arrow(SimpleHead));
draw((-5,0)--(6,0),Arrow(SimpleHead));
label("$\mathop{\mathrm{Im}}z$",(0,4.5),W);
label("$\mathop{\mathrm{Re}}z$",(6,0),S);

Asymptoteの練習 簡単なグラフ

Jordanの補題の証明に出てきそうなグラフ。
サイズのことがあまりよくわかっていないので、微調整しまくりで綺麗ではない。
あと、各軸のスケールの変更の仕方もよくわからない。

size(7cm);

import graph;
defaultpen(fontsize(10pt));

xaxis("$x$",Arrow(SimpleHead));
yaxis("$y$",-0.3pt,2.15pt,Arrow(SimpleHead));

real f(real x) {return abs(sin(x));};
real g(real x) {return 2*abs(x)/pi;};
pair F(real x) {return (x,f(x));};
pair G(real x) {return (x,g(x));};

pen dashed=linetype(new real[] {5,5});
draw(graph(f,-2,2,operator ..));
draw(graph(g,-2,2,operator ..),dashed);
draw(F(pi/2)--(pi/2,0),dotted);
draw(F(-pi/2)--(-pi/2,0),dotted);
dot(F(pi/2)); dot(F(-pi/2)); 
label("$\frac{\pi}{2}$",(pi/2,0),S);
label("$-\frac{\pi}{2}$",(-pi/2,0),S);
label("$y=|\sin x|$",F(1)+(0,0.27));
label("$y=\frac{2}{\pi}|x|$",G(1)+(0,-0.3));

2012年3月20日火曜日

Asymptoteの練習2 三角形とその分割

コーシーの積分定理の証明中に出てくる三角形の図をAsymptoteを使って作図してみました。
未だに使い方がよくわかっていないのと、プログラミングの素養が全くないので
こんな図を書くのにも数時間かかってしまいました。

size(4cm);

defaultpen(fontsize(12pt));

int n=3;
pair[][] a = new pair[n][n];
path p=(-0.5,0)--(0.5,0);

// 三角形の頂点
a[0][0]=(3,7);
a[1][0]=(0,0);
a[2][0]=(8,3);

// 三角形の線分の中点
for(int i=1; i<n; ++i){
  for(int j=0; j<n; ++j){
    a[j%n][i]=(a[(j+1)%n][i-1]+a[(j+2)%n][i-1])/2;
  }
}


// 分割された三角形の辺の描画
for(int j=0; j<n; ++j){
  draw(a[j%n][0]--a[(j+2)%n][1],MidArrow(SimpleHead,3.5,angle=25));
  draw(a[j%n][1]--a[(j+2)%n][0],MidArrow(SimpleHead,3.5,angle=25));
  draw(a[j%n][1]--a[(j+2)%n][1]);
}

// 中央の三角形の矢印
for(int j=0; j<n; ++j){
draw(shift(a[j%n][2]+rotate(90)*(unit(a[(j+1)%n][1]-a[(j+2)%n][1])/3))*rotate(degrees(a[(j+1)%n][1]-a[(j+2)%n][1]))*p,Arrow(SimpleHead,3.5,angle=25));
draw(shift(a[j%n][2]+rotate(90)*(unit(a[(j+2)%n][1]-a[(j+1)%n][1])/3))*rotate(degrees(a[(j+2)%n][1]-a[(j+1)%n][1]))*p,Arrow(SimpleHead,3.5,angle=25));
}


label("$a$",a[0][0],N);
label("$b$",a[1][0],SW);
label("$c$",a[2][0],E);
label("$a^\prime$",a[0][1],0.1SE);
label("$b^\prime$",a[1][1],NE);
label("$c^\prime$",a[2][1],WNW);

2012年3月19日月曜日

Ubuntu 11.10のemacs23を半透明化

Ubuntu 11.10を使い始めてからEmacs23の半透明化が効かなくなってしまったのが残念だったのですが、こちらによると半透明化が可能のようなので実行してみました。

「CompizConfig 設定マネージャ」からカテゴリの「アクセシビリティ」を選択し、 「不透明度・明度・彩度」の項目を選択、「不透明度」のタブから「新規」を選択し、ウィンドウ欄に「class=Emacs」を、ウィンドウの値に 「 85」を入力すればOKです。
 
見た目って大事ですよね。

2012年3月5日月曜日

Team Meのdebut albumがいい感じ

以前にEPをタワーレコードで試聴し衝動買いしたのですが、新しい音源が出ていないか調べてみたところ日本版が既に発売されているようでした。
EPもよい曲が満載ですが、デビューアルバムからの曲の動画を見ると非常に期待されます。
明日にでもCD買いに行こう。


2012年1月30日月曜日

cygwinでtexlive2011日本語追加パッチ

Windows 7環境にcygwin1.7.9-1をほぼフルインストールし、さらにtexlive2011をインストール後、texlive2011日本語追加パッチ tl11supp-120120.tar.xz を試して見ました。
以前にも書いたように,コンパイルはエラーなく終わる(しかし非常に時間がかかる)のですが,インストールしてみるとシンボリックリンクが機能していません.
具体的には、texlive2011を/usr/local/texlive/2011 以下に,日本語追加パッチによるものを/usr/local/texlive/p2011 以下にインストールした仮定すると,通常/usr/local/texlive/p2011/ 下のtexmf-distやtlpkgがそれぞれ/usr/local/texlive/2011 の同名のディレクトリにシンボリックリンクが貼られているはずなのですが、それが機能していません.
とりあえずこのシンボリックリンクを貼り直すとplatexやdvipdfmx, pxdviがきちんと機能することが確認出来ました.他にも不具合があるかもしれないのですが,あまり使いこなしている訳ではないので,私の普段の用途からすると問題なさそうです.ただ私のPCではcygwinのxが非常に重く,pxdviではページごとの描画に数秒の時間を取られるためdvioutやsynctexを使う努力をしてみたほうが良いかも知れません.

またcygwinのemacsを使わずにgnupackで配布されているntemacsを使おうと思ったのですが,こちらはcygwinのシンボリックリンクを認識してくれないようで困っています.またcygwinのx上のターミナルから起動すると挙動がおかしかったりもしました.
シンボリックリンクについてはw32-symlinks.elを使えばwindowsのショートカットはきちんと認識出来ているようなので,とりあえずはなんとかなるかな.

ubuntuのものと環境をなるべく変えたくないのですが、正統的にw32texを使うべきなのかなぁ.
windows上で自分好みのTeX環境を作るのはしんどいです.

2012年1月28日土曜日

テオ・アンゲロプロスが亡くなった。

ギリシャの映画監督テオ・アンゲロプロスが事故で亡くなったというニュースを見ました.
家の近所のビデオ屋には永遠と一日とユリシーズの瞳しか置いていなくて、未だにそれしか見ていないのですが、永遠と一日は非常に好きな映画でした.ご冥福をお祈りします.

超対称性と超重力

素粒子論を勉強していた人にとっては超有名な教科書であるJulius WessとJonathan Bagger著の"Supersymmetry and supergravity"の和訳書が丸善から出版されていました.
買ってはみたものの、原著は文章による説明がほとんどないようなものなので、果たして和訳する価値があったのでしょうか.最初の代数の部分が全然わからなくて消化不良のまま読んだ記憶が有ります.

代数の部分ならHaag-Lopuszanski-Sohniusの定理で有名なLopuszanskiの本が詳しそうなので、誰か和訳してくれないかな.数学の人が書く超対称代数の話は物理の人が使っているN=1とかN=2とかの表現の話とどのようにつながっているのかがよくわかりません。良い解説がないかなあ.