現実と数学の区別が付かない

数学ネタのブログです

x²+y³ のb関数を手計算する

今日は b 関数というものの定義を紹介し,さらに x^2+y^3b 関数を手計算で求めてみます.

x^2+y^3 は擬斉次孤立特異点多項式と呼ばれるクラスに属する多項式で,b 関数は簡単に計算できることが知られています.詳しく知りたい人は次の本の第6章などを参照してください.www.iwanami.co.jp

b 関数

微分作用素

\mathbb{C}[\boldsymbol{x}]=\mathbb{C}[x_1,\dots,x_n]n 変数多項式環D_n=S\langle \partial_1,\dots,\partial_n\rangle多項式係数微分作用素の環とします.ただし,\partial_k=\cfrac{\partial}{\partial x_k}x_k に関する偏微分作用素です.

D_n の要素としての多項式 ff写像のことです.

D_n 内での \partial_kx_k の積である  \partial_k x_k は 「x_k 倍してから x_k偏微分する」という作用素で,関数 \varphi に作用させると,関数の積の微分法則により\begin{align} (\partial_k x_k)(\varphi)=\cfrac{\partial}{\partial x_k}(x_k \varphi)=\varphi+x_k\cfrac{\partial \varphi}{\partial x_k}=\left(1+x_k \partial_k\right)(\varphi) \end{align} となります.つまり,\begin{align}\partial_k x_k=1+x_k \partial_k\end{align}であり,x_k\partial_k の積は非可換で,D_n は非可換環です.

b 関数の定義

sD_n 上の不定元として,多項式  f\in \mathbb{C}[\boldsymbol{x}] の形式的なべき f^s を考えます.D_nf^s に形式的な微分として作用します:\begin{align} \partial_k (f^s) =s f_{x_k} f^{s-1}\end{align}ここで  f_{x_k}=\partial_k(f) であり,f^{s-1}=f^s/f です.

ある微分作用素 P(s)\in D_n[s] に対し\begin{align} b(s) f^s=P(s)(f^{s+1})\end{align}となる b(s)\in \mathbb{C}[s] 全体からなる \mathbb{C}[s] のイデアルの生成元を f b 関数と呼び,b_f(s) で表します.

b_f(s)\neq 0 であり,その根はすべて負の有理数であることが知られています. b 関数の選び方には定数倍の自由度がありますが,モニックという条件を付けると一意に定めることができます.

 b_f(s) f^s=P(s)(f^{s+1})s=-1 を代入すると \cfrac{b_f(-1)}{f}=P(-1)(1) となり,これが成り立つには b_f(-1)=0 である必要があります.よって b_f(s) は必ず s+1 で割り切れ,\begin{align}\tilde{b}_f(s)=\cfrac{b_f(s)}{s+1}\end{align}とおいて 被約 b 関数と呼びます.

形式的随伴作用素

 \displaystyle P=\sum_{\alpha =(\alpha_1,\dots,\alpha_n)\in \mathbb{Z}_{\ge 0}^n} a_{\alpha}(\boldsymbol{x}) \partial_1^{\alpha_1}\cdots\partial_n^{\alpha_n} に対し\begin{align} P^*
=\sum ({-}\partial_1)^{\alpha_1}\cdots({-}\partial_n)^{\alpha_n} a_{\alpha}(\boldsymbol{x}) \end{align}を P形式的随伴作用素と呼びます.例えば x_1\partial_1 の形式的随伴作用素は \begin{align}(x_1\partial_1)^*=(-\partial_1) x_1=-x_1\partial_1-1\end{align}です.

任意の P,Q\in D_n に対し \begin{align}(P^*)^*=P,~(P+Q)^*=P^*+Q^*,~(PQ)^*=Q^*P^*,~1^*=1\end{align}であり,随伴を取る写像D_n からその反対環 D_n^{\mathrm{op}} への環同型になっています.

なぜ P^*P の随伴と呼ぶかというと,次のようなことが成り立つからです.

\mathbb{R}^n で定義された無限階微分可能な関数 \varphi:\mathbb{R}^n\to\mathbb{R} で,任意の多項式係数微分作用素 P\in D_n に対し \lim_{|\boldsymbol{x}|\to\infty} P(\varphi(\boldsymbol{x}))=0 となる関数を急減少関数と呼びます.\varphi(x)=e^{-x_1^2-x_2^2-\dots-x_n^2} や,\{\boldsymbol{x}\in \mathbb{R}^n\mid \varphi(\boldsymbol{x})\neq 0\}有界となる無限階微分可能関数 \varphi(\boldsymbol{x}) などが急減少関数の例となります.

多項式 f(\boldsymbol{x})\in \mathbb{R}[\boldsymbol{x}] と急減少関数 \varphi(\boldsymbol{x}) に対し,\begin{align}\langle f, \varphi\rangle:=\int_{\mathbb{R}^n} f(x) \varphi(x) d\boldsymbol{x} \end{align}と書くことにします (気分としては「内積っぽいもの」です).繰り返し部分積分を使うことで任意の P\in D_n に対して,\begin{align} \langle P(f), \varphi\rangle=\langle f, P^*(\varphi)\rangle\end{align}が成り立つことが示せます.

n=1,~P=x^r\partial_x\in D_1 の場合を見てみましょう.部分積分より\begin{align}\langle P(f), \varphi\rangle&=\int_{-\infty}^\infty x^r\partial_x(f(x)) \cdot \varphi(x) dx=\int_{-\infty}^\infty f'(x)\cdot x^r\varphi(x)dx\\
&=[f(x)x^r\varphi(x)]_{-\infty}^\infty-\int_{-\infty}^\infty f(x)\cdot \partial_x(x^r\varphi(x))dx\\
&=\int_{-\infty}^\infty f(x)\cdot (-\partial_x)(x^r\varphi(x))\\
&=\langle f, P^*(\varphi)\rangle\end{align}が確かに成り立っています.

擬斉次孤立特異点多項式 (quasi-homogeneous isolated singularity polynomials) の b 関数

擬斉次孤立特異点多項式

w=(w_1,\dots,w_n) を正整数のベクトルとし,\mathbb{C}[\boldsymbol{x}]=\mathbb{C}[x_1,\dots,x_n] の次数付けを  \mathrm{deg}~ x_i =w_i で定めます.この次数付けに対して斉次な多項式擬斉次多項式または重み付き次数多項式と呼びます.

例えば,\mathbb{C}[x,y],~\mathrm{deg}~ x=3,~\mathrm{deg}~ y=2 の場合,x^2+y^3 は次数 6 の擬斉次多項式x^4+3x^2y^3-y^6 は次数 12 の擬斉次多項式です.

ここで \displaystyle Y=\sum_{k=1}^nw_k x_k \partial_k という微分作用素を導入します.Y(\boldsymbol{x}^\alpha)=(w\cdot \alpha)(\boldsymbol{x}^\alpha) であり, Y は単項式をその次数倍する微分作用素です.f\in \mathbb{C}[\boldsymbol{x}] を次数 d の擬斉次多項式とすると,Y(f)=df となるので \begin{align}X=\cfrac{1}{d}Y=\sum_{k=1}^n \cfrac{w_k}{d} x_k \partial_k \end{align}とおくと,\begin{align}X(f)=f \end{align}が成り立ちます.

f\in \mathbb{C}[\boldsymbol{x}] に対し,その偏微分  f_{x_k}:=\partial_k(f) で生成されるイデアル \begin{align}J_f:=\langle f_{x_1},\dots,f_{x_n}\rangle\end{align}をヤコビイデアルと呼び,剰余環 \begin{align}M(f):=\mathbb{C}[\boldsymbol{x}]/J_f\end{align}をミルナー代数と呼びます.

f を擬斉次多項式とすると,X(f)=f より f\in J_f であることが分かります.ミルナー代数 M(f)\mathbb{C} 上有限次元のとき,f擬斉次孤立特異点多項式と呼びます.これは超曲面 \{f=0\}特異点が原点のみであることと同値です.

擬斉次孤立特異点多項式b 関数

擬斉次孤立特異点多項式b 関数は次の定理で計算できます.

\mathbb{C}[\boldsymbol{x}]=\mathbb{C}[x_1,\dots,x_n] の次数付けを  \mathrm{deg}~ x_i =w_i>0 とし, f(\boldsymbol{x})\in \mathbb{C}[\boldsymbol{x}] を次数 d の擬斉次孤立特異点多項式\displaystyle X=\sum_{k=1}^n \cfrac{w_k}{d} x_k \partial_k とする.

このとき,被約 b 関数  \tilde{b}_f(s)X^*ミルナー代数 M(f) への作用の最小多項式である.

この定理についていくつかコメントをしておきます.まず,X の形式的随伴は\begin{align}X^*=\sum_{k=1}^n \cfrac{w_k}{d} (-\partial_k)x_k=\sum_{k=1}^n \cfrac{w_k}{d} ({-}x_k\partial_k{-}1)=-X-\cfrac{w_1+\cdots+w_n}{d} \end{align}であり,擬斉次多項式  g に対する作用は\begin{align}X^*(g)=-\cfrac{\mathrm{deg}~g+w_1+\cdots+w_n}{d} g\end{align}となります.つまり X^* は擬斉次多項式に対しては定数倍として作用します.

任意の J_f の元は f_{x_k} の単項式倍の線形和として書け,x^\alpha f_{x_k}X^* で定数倍されるだけなので, X^*(J_f) \subset J_f が成り立つことが分かります.よって X^*M(f) 上の線形作用素としてちゃんと定義されています.

M(f) も次数付き環で,その次数 j の成分を A_j で表すと,\mathbb{C} ベクトル空間としての直和分解 \begin{align}M(f)=\bigoplus_j A_j\end{align}が得られます.X^*A_j 上に  -\cfrac{j+w_1+\cdots+w_n}{d} 倍として作用するので, X^*M(f) への作用の最小多項式である \tilde{b}_f は \begin{align}\tilde{b}_f(s)=\prod_{A_j\neq \{0\}} \left(s+\cfrac{j+w_1+\cdots+w_n}{d}\right)\end{align}となります.b_f(s)=(s+1)\tilde{b}_f(s) なので,この定理は b 関数が 0 でなくその根がすべて負の有理数であるという定理の,擬斉次孤立特異点多項式という特別な場合の証明にもなっています.

また,可換環論の知識があれば b_f(s)w_1,\dots,w_n, \mathrm{deg}~f だけに依存して決まることが比較的簡単に分かります.

定理の証明の概略

b(s)\in \mathbb{C}[x] に関する条件\begin{align}\mbox{(条件★)}~~\exists P(s)\in D_n[s],~b(s)(s+1)f^s=P(s)(f^{s+1}) \end{align}を同値なものに書き換えていきます.(条件★) を満たす b(s) 全体からなるイデアルの生成元が被約 b 関数 \tilde{b}_f(s) です.

まず X(f)=f であったので, X(f^s)=sX(f)f^{s-1}=sf^s となり,Xf^{s}s 倍として作用します.また,X(f^{s+1})=(s+1)X(f)f^s=(s+1)f^{s+1} なので,(X-1)f^{s+1}=sf^{s+1} となり,X-1f^{s+1}s 倍として作用します.

よって P(s)=P_ms^m+P_{m-1}s^{m-1}+\dots+P_1s+P_0 \in D_n[s],~P_j\in D_n に対し,P(s) f^{s+1}=P(X-1)f^{s+1} が成り立ちます.ただし,

P_m (X-1)^m+P_{m-1}(X-1)^{m-1}+\dots+P_1(X-1)+P_0 \in D_n

です (D_n は非可換環なので「sX-1 を代入する」という操作を気軽に行えないことには注意しておいてください).よって (条件★) は\begin{align}\exists P\in D_n,~(s+1)b(s)f^s=P(f^{s+1}) \end{align}と書き換えることができます.

さて,(s+1)b(s)f^s=P(f^{s+1})s=-1 を代入すると 0=P(1) となるので,ある P_1,\dots,P_n\in D_n により P= P_1\partial_1+\dots+P_n\partial_n と書けます.このとき\begin{align}P(f^{s+1})=\sum_{k=1}^n P_k(\partial_k(f^{s+1}))=(s+1)\sum_{k=1}^n P_kf_{x_k}(f^s)\end{align}であり,(s+1)b(s)f^s=(s+1)\sum_{k=1}^n  P_kf_{x_k}(f^s) の両辺を s+1 で割ると \begin{align}b(s)f^s=\sum_{k=1}^n P_kf_{x_k}(f^s)\end{align}となります.微分作用素 \sum_{k=1}^n  P_kf_{x_k}J_f が生成する D_n の左イデアル D_nJ_f の元で,f^s に対する s 倍は X に置き換えてよかったので,結局 (条件★) は \begin{align}\exists Q\in D_n J_f,~~b(X) (f^s)=Q (f^s)\end{align} と同値になります.実はこの条件は\begin{align}b(X)\in D_nJ_f\end{align} と同値になることが証明できます(この部分が定理の証明で一番非自明な部分ですが,可換環論の準備が必要になるので詳細は省略します*1).さらに形式的随伴を取ることで,この条件は\begin{align}b(X^*)\in J_fD_n\end{align}と書き換えられます.形式的随伴により左イデアル D_nJ_f が右イデアル J_fD_n に変換されることに注意してください.

さて,これは \begin{align}\forall g\in \mathbb{C}[\boldsymbol{x}],~b(X^*)(g)\in J_f\end{align}と同値であることも簡単に分かります.\begin{align}b(X^*)\in J_fD_n \Rightarrow \forall g\in \mathbb{C}[\boldsymbol{x}],~ b(X^*)(g)\in J_f \end{align}は自明ですし, \Leftarrowb(X^*) を次数の低い単項式に作用させていくことで,階数が低い部分から帰納的に  J_fD_n に含まれることが分かります.

以上より (条件★) が成り立つことが,b(X^*)ミルナー代数 M(f) への作用が 0 であることと同値にであることが分かりました.

よって被約 b 関数 \tilde{b}_fX^*M(f) への作用の最小多項式です.

f(x,y)=x^2+y^3 の場合

\begin{align}
f(x,y)=x^2+y^3
\end{align}の場合の b 関数 b_f と,\begin{align}b_f(s)f^{s+1}=P(f^{s+1})\end{align}を満たす P\in D_2 を求めてみましょう.

偏微分\partial_x=\cfrac{\partial}{\partial x},\partial_y=\cfrac{\partial}{\partial y} で表します.

b 関数

まずは X とその形式的随伴を求めると,\begin{gather}
X=\cfrac{1}{2}x\partial_x +\frac{1}{3}y\partial_y\\
X^*=-\cfrac{1}{2}x\partial_x -\frac{1}{3}y\partial_y -\cfrac{5}{6}
\end{gather}となります.ミルナー代数は\begin{align}
M(f)=\mathbb{C}[x,y]/\langle f_x, f_y\rangle =\mathbb{C}[x,y]/\langle x, y^2\rangle \cong \mathbb{C}\oplus \mathbb{C}y
\end{align}であり,その基底 1,yX^* を作用させると
\begin{align}
X^*(1)=-\cfrac{5}{6},~ X^*(y)=-\frac{1}{3}y -\cfrac{5}{6}y=-\cfrac{7}{6}y
\end{align} なので, 1,yX^*固有ベクトルであり,その固有値はそれぞれ  -\cfrac{5}{6}, -\cfrac{7}{6} となっています.

よって X^*M(f) への作用の最小多項式\left(s+\cfrac{5}{6}\right)\left(s+\cfrac{7}{6}\right) となり,これが被約 b 関数です.以上より \begin{align}
b_f(s)=(s+1)\left(s+\cfrac{5}{6}\right)\left(s+\cfrac{7}{6}\right)
\end{align}であることが分かりました.

微分作用素の計算

 f=x^2+y^3 のときの b_f(s)f^s=P(f^{s+1}) を満たす微分作用素  P を求めます.
\begin{gather}
\tilde{b}_f(X^*)=\left\{\left(X+\cfrac{5}{6}\right)\left(X+\cfrac{7}{6}\right)\right\}^*=\left(X^*+\cfrac{7}{6}\right)\left(X^*+\cfrac{5}{6}\right)\\
=\left(-\cfrac{1}{2}x\partial_x -\frac{1}{3}y\partial_y +\cfrac{1}{3}\right)\left(-\cfrac{1}{2}x\partial_x -\frac{1}{3}y\partial_y\right)\\
=\cfrac{1}{4}x^2 \partial_x^2+\cfrac{1}{3}xy\partial_x \partial_y+\cfrac{1}{9}y^2 \partial_y^2+\cfrac{1}{12}x \partial_x\\
=\cfrac{1}{8}xf_x \partial_x^2+\cfrac{1}{6}yf_x\partial_x \partial_y+\cfrac{1}{27}f_y \partial_y^2+\cfrac{1}{24}f_x \partial_x
\end{gather}となります.この形式的随伴を取って \begin{gather}
\tilde{b}_f(X)=\left(X+\cfrac{5}{6}\right)\left(X+\cfrac{7}{6}\right)\\
=\cfrac{1}{8}\partial_x^2\cdot xf_x +\cfrac{1}{6}\partial_x \partial_y\cdot yf_x+\cfrac{1}{27} \partial_y^2\cdot f_y-\cfrac{1}{24}\partial_x\cdot f_x \\
=\cfrac{1}{8}(x\partial_x^2+2\partial_x)\cdot f_x +\cfrac{1}{6}(y\partial_x \partial_y+\partial_x)\cdot f_x+\cfrac{1}{27} \partial_y^2\cdot f_y-\cfrac{1}{24}\partial_x\cdot f_x
\end{gather}が得られますが,この式の f_x\partial_xf_y\partial_y に置き換えた微分作用素P とおく,すなわち \begin{gather}
P=\cfrac{1}{8}(x\partial_x^3+2\partial_x^2) +\cfrac{1}{6}(y\partial_x^2 \partial_y+\partial_x^2)+\cfrac{1}{27} \partial_y^3-\cfrac{1}{24}\partial_x^2\\
=\cfrac{1}{8}x\partial_x^3 + \cfrac{1}{6}y\partial_x^2 \partial_y + \cfrac{1}{27} \partial_y^3 +\cfrac{3}{8}\partial_x^2
\end{gather}とすると,P の作り方より\begin{gather}
P(f^{s+1})=(s+1)\left(X+\cfrac{5}{6}\right)\left(X+\cfrac{7}{6}\right)f^s=(s+1)\left(s+\cfrac{5}{6}\right)\left(s+\cfrac{7}{6}\right)f^s
\end{gather}が成り立ち,P が求めたい微分作用素であることが分かりました.

おまけ:Risa/Asir で計算

国産の数式処理ソフトである Risa/Asir で b 関数の計算をしてみましょう.Windows版は次のサイトからダウウンロードできます.
www.math.kobe-u.ac.jp
b 関数の計算をしてみましょう.
f:id:egory_cat:20220117234143p:plain
load("bfct")$ で b 関数を計算するためのパッケージを読み込んで,bfct(x^2+y^3) で  x^2+y^3b 関数を計算しています.
fctr() は因数分解のための関数で,@@は直前の出力を表すものです.つまり fctr(@@) で直前の計算結果を因数分解します.
先ほど計算した結果とちゃんと一致しています.

*1:f_{x_1},\dots,f_{x_n} が正則列であることと,正則列が linear type と呼ばれる性質を持つことを利用します.