Emacs と LaTeX についてのメモ

詳細は各項目の参考URLを参照のこと

Emacs (素晴らしく便利なエディタ)についてのメモ

ウィンドウのタイトル変更

以下のコマンドを実行する。

M-x set-frame-name <RET>タイトルを入力<RET>

参考URL: Emacsのウィンドウタイトルをコマンドで変更する方法

LaTeX についてのメモ

enumerate パッケージ
\usepackage{enumerate}

により使用可能。例えば以下のようにすると

\begin{enumerate}[(1)]
\item
<内容>
\end{enumerate}

(1), (2), ... という箇条書きになる。(手動で \item[(1)] などとするのと同じ効果である。)同様に、 a) とすると a), b), ... また (i) とすると (i), (ii), ... となる。これの難点は、このパッケージを読み込むのをやめるときは、 [(1)] の部分を全て削除しなければならなくなることである。また、元の enumerate 環境とは空白の配置が異なることにも注意。
参考URL: 25 LATEX の enumerate 環境の拡張 (enumerate.sty vs. enumitem.sty)

aligned 環境

数式の中で、途中から複数行にしたいときは、 aligned 環境を使う。 align 環境と使い方は大体同じ。なお、複数行の数式にひとつの数式番号をつけることもできる。

TeX で条件分岐

TeX で条件分岐を使うと、例えば詳細な記述を表示したりしなかったりできて便利である。これについて簡単に述べる。

例えば次のように変数を定義して、この変数の値を変更することで表示するかしないか切り替えることにする。("%"以降はただのコメントである。)

\newcommand{\myflag}{1} % 0=off, 1=on

そうすると、以下のように条件分岐させることができる。

\if \myflag 0
簡単な説明
\else
複雑な説明
\fi

ここで、 \if コマンドは2つの値が等しいかどうかの分岐である。

maxima でグラフを描く

概要

フリーウェアの maxima で2次元グラフを描くときの主要なオプションについて説明する。詳しくはマニュアル参照のこと。

例1

2次元グラフを描くときは plot2d() を使う。通常は横軸を x で、縦軸を y で表す。関数と変数 x の動く区間を指定するのが基本である。

plot2d(cos(x),[x,0,2*%pi]);

f:id:mathhashimoto:20211206082100p:plain:w400

例2

縦軸の範囲を指定することもできる。

  • nticks : グラフが角張っているときなど、変数 x の区切りを細かくしたいときは nticks を調整する
  • grid2d : グラフの格子
  • box : 外枠の有無
  • title : グラフのタイトル
  • axes : 軸を実線にするなど
plot2d(cos(x),[x,0,2*%pi],[y,0,1],
 [nticks,100],grid2d,[box,false],[title,"my graph"],[axes,solid]);

f:id:mathhashimoto:20211206085009p:plain:w400

例3

複数のグラフを描きたいときは、第1引数をリストにする。

plot2d([exp(x),1+x+x^2/2],[x,-1,2]);

f:id:mathhashimoto:20211206085612p:plain:w400

例4

関数と式のどちらを使ってもよい。関数を使う場合は、関数名が表示される。

  • logx, logy : 横軸や縦軸を対数にする
  • xlabel, ylabel : 横軸や縦軸の名前
F(x):=exp(x);
G:1+x+x^2/2;
plot2d([F,G],[x,-1,2],logy,[xlabel,"x"],[ylabel,"log(y)"]);

f:id:mathhashimoto:20211206090346p:plain:w400

例5

ラベルや色などの指定は、リストの最後の次は最初に戻る。 legend は false を指定することもできる。

  • legend : 凡例(各グラフのラベル)
  • color : 色
plot2d([sin(x),x,x-x^3/6,x-x^3/6+x^5/120,x-x^3/6+x^5/120-x^7/5040],
 [x,-4,4],[y,-1.5,1.5],
 [legend,"even","odd"],[color,red,blue]);

f:id:mathhashimoto:20211206091653p:plain:w400

例6

離散2次元データのグラフを描くこともできる。その場合は discrete を使う。以下に示すように、3通りの形式がある。(なお、例えば「リスト+1」とするとリストの各成分に1を加えたリストが得られる。)

  • style : 2次元データを線で結ぶなど
  • point_type : 2次元データの点として使う記号
plot2d(
 [
  [discrete,[1,4,9]+1],
  [discrete,[[0,0],[1,1],[2,4],[3,9]]],
  [discrete,[0,1,2,3],[0,1,4,9]-1]
 ],
 [style,lines,points,linespoints],[point_type,nabla,lozenge]);

f:id:mathhashimoto:20211206091721p:plain:w400

例7

パラメーター付き曲線を描くときは parametric を使う。パラメーターが動く区間を指定する。

  • style : 線の太さなどスタイルをまとめて指定
plot2d(
 [
  [parametric,t,t^2,[t,0,2]],
  [parametric,t,t^2,[t,-2,0]],
  [parametric,t,abs(t),[t,-2,1]]
 ],
 [style,[lines,2,blue],[lines,3,red],lines]);

f:id:mathhashimoto:20211206092502p:plain:w400

例8
  • yx_ratio : 出力結果の縦横比の調整
plot2d(x^2,[x,-5,5]);
plot2d(x^2,[x,-5,5],[yx_ratio,5]);

f:id:mathhashimoto:20211206092622p:plain:w300f:id:mathhashimoto:20211206092636p:plain:w300

例9

2項分布の正規近似をグラフで表す。 binomial() は2項係数(の正確な値)であるが、状況によってはガンマ関数の近似値を計算する bffac() を使うことを検討してもいいかもしれない。

p:1/3;
n:30;
f(i):=float( p^i*(1-p)^(n-i)*binomial(n,i) );
xy:makelist([i,f(i)],i,0,n)$
plot2d(
 [
  [discrete,xy],
  (1/sqrt(2*%pi*n*p*(1-p)))*exp(-(x-n/3)^2/(2*n*p*(1-p)))
 ],
 [x,0,n],[style,points,lines],[legend,false]);

f:id:mathhashimoto:20211206093526p:plain:w400

例10
  • same_xy : x軸とy軸の比率を一致させる
a:1/5;
b:-5/8;
f_x:cos(t)+a*cos(b*t);
f_y:sin(t)+a*sin(b*t);
plot2d([parametric,f_x,f_y,[t,0,16*%pi]],same_xy,[color,red]);

f:id:mathhashimoto:20211206093851p:plain:w600

補足

オプション png_file, pdf_file などを使うことで、グラフを表示する代わりにファイルとして保存することができる。保存フォルダは変数 maxima_tempdir により指定される。

対称群の多項式への作用

n 次対称群が n 文字の集合に左から作用している流儀の場合、
n 変数の集合  \{ x_1,\ldots,x_n \} を n 文字の集合と同一視すると、
この集合への作用
 \sigma \cdot x_i=x_{\sigma(i)}
も左からということになる。
一般の多項式  f(x_1,\ldots,x_n) への作用は
 (\sigma \cdot f)(x_1,\ldots,x_n)=f(x_{\sigma(1)},\ldots,x_{\sigma(n)})
で与えられ、これも左からの作用となる。

そうすると、ここが紛らわしいのだが、対応する n 次元アフィン空間への作用
 (x_1,\ldots,x_n) \cdot \sigma=(x_{\sigma(1)},\ldots,x_{\sigma(n)})
は右からでなければならない。
実際、基本ベクトルを  e_i=(0,\ldots,0,1,0,\ldots,0) ( i 番目のみ 0 )と書くことにすると、
 e_i \cdot \sigma=e_{\sigma^{-1}(i)}
となる。
この作用を使って多項式への作用を表すと、
 (\sigma \cdot f)(x)=f(x \cdot \sigma)
[tex: (\tau \cdot (\sigma \cdot f))(x)=(\sigma \cdot f)(x \cdot \tau)=f*1=((\tau \sigma) \cdot f)(x)]
となり、確かに多項式への作用は左からの作用になっていることがわかる。

そういうわけで、作用を  \sigma \cdot x_i=x_{\sigma(i)} \sigma \cdot e_i=e_{\sigma(i)} で定義してしまうと、
整合的ではなくなってしまう。

*1:x \cdot \tau) \cdot \sigma)=f(x \cdot (\tau \sigma

環の被約化

可換環 A について、その冪零根基を  \operatorname{nil} A と書くと  A_{\operatorname{red}}=A/\operatorname{nil} A は被約な環となる。
つまり  \operatorname{nil} A_{\operatorname{red}}=(0) が成立する。
これを A の被約化という(と思う)。
スキームについても、それぞれの開集合に対応した環の被約化をとることにより得られる環の前層を層化することにより、被約化が得られる。
ここで、層化が必要なのかという疑問が出てくるが、例えば
 \operatorname{Spec} k[x]/(x^n)
 n=1,2,\ldots についての直和をとると(  k は体)、関数  (0,x,x,x,\ldots) (の像)は層化する前は0ではない。
一方で、このスキームの被約化は無限個の普通の点の直和になっているので、被約化の後ではこの関数は0になっている。
もう少し微妙な例があると面白いのだが、よくわからなかった。

互いに素な整数と約分

 a_i,h_i を正の整数として、  r=a_i/h_i が成立しているとする(ここで  i=1,\ldots,n )。
さらに  h_i たちは互いに素であるとする。
(実は coprime と pairwise coprime は意味が違うが、今は前者の意味である。)
そうすると実は r は整数であることがわかる。
これは、整数の素因数分解の一意性を仮定すると明らかだが、それとは微妙に違った
やり方で示すこともできる。

まず、ある  b_i という整数たちにより  \sum_i b_i h_i=1 となることに注意する。
(実際はこの条件と素因数分解の一意性は同じようなものではある。)
よって
 \sum_i b_i \times \frac{a_i}{r}=1
となり、結局  r=\sum_i a_i b_i を得る。

この議論には別の応用があって、つまり以下の主張を示すときに使われる。
可換環 A (整域でなくてもよい)について、  \operatorname{Spec} A の上で局所的に定義された関数を
貼りあわせて大域的な関数を作ることができる。
簡単な状況だと、  a_i,h_i \in A があって(  i=1,\ldots,n )、
 a_i h_j=a_j h_i, \qquad \sum_i b_i h_i=1
となる(  b_i \in A )。
 r=\sum_i a_i b_i とすると、
 r h_j=\sum_{i} a_i h_j b_i=\sum_{i} a_j h_i b_i=a_j
となるので、  \operatorname{Spec} A_{h_j} 上で r と  a_j/h_j は等しい。

次数付き環の斉次素イデアル

(未完成記事)

次数付き可換環  S=\bigoplus_{k \in \mathbb{Z}} S_k を考える。
ここで、環 S が f という可逆な元を含んでいて、 f の次数は0ではないとする。
斉次イデアル I について、次数 k の部分を  I_k=I \cap S_k とおくと、
 I_0 S_0イデアルになっている。
一般に、 I_0 S は I に含まれるイデアルではあるが、 I に一致するとは限らない。
しかし  \sqrt{I_0 S}=I は成立する。
実際、任意の I の斉次の元 a について、 a^n f^m \in I_0 という正の整数 n と整数 m が存在するが、
f は可逆なのでこれは  a^n \in I_0 S を意味する。

逆に、  S_0 の素イデアル  P_0 について、  P=\sqrt{P_0 S} と定めると、
P は(斉次)素イデアルであって、その次数0の部分は  P_0 に一致する。

以上の議論より、( f についての仮定の下に) S の斉次素イデアル
 S_0 の素イデアルの間の自然な全単射が存在する。

 P_0 S=P が成り立たない例:
 R=\mathbb{C}[x,y,\sqrt{x+y}] を普通のやり方で(  \frac{1}{2}\mathbb{Z} による)次数付き環だと考える。
( R は環としては2変数多項式環になるが、それはそれとして次数付き環としての構造は異なる。)
何でもいいので斉次多項式  f \in \mathbb{C}[x,y] をとり、  S=R[\frac{1}{f}] とする。
ただし f は  x+y では割り切れないとする。
このとき  S_k \mathbb{C}[x,y,\frac{1}{f}] の次数 k の部分となり( k は整数)、また  S_{k+1/2}=\sqrt{x+y} S_{k} である。
 \sqrt{x+y} で生成されるイデアルを P とすると、これは(斉次)素イデアルであって、
 P_0=(x+y) S_{-1} P_{1/2}=\sqrt{x+y} S_0 がわかる。
一方で、イデアル  P_0 S の次数 1/2 の部分は  P_0 S_{1/2}=(x+y)\sqrt{x+y} S_{-1} になる。
 (x+y) S_{-1} \neq S_0 より、  P_0 S は P に真に含まれる。