tsujimotterのノートブック

日曜数学者 tsujimotter の「趣味で数学」実践ノート

部分分数分解の公式

Twitterを眺めていると、とても楽しいツイートが流れてきました。

部分分数分解のテクニックだそうです。私も知りませんでした!

1(s+1)(s+2)

という多項式の積で書かれた分数を、α,β を使って以下のように置きます。

(1)1(s+1)(s+2)=αs+1+βs+2

この α,β を求めよ、というのが部分分数分解の問題です。


上の式を素朴に計算しようと思うなら、右辺を展開して連立方程式を解いたら良いわけですが、これがなかなか面倒です。

なかなか面倒な計算例:
(1) の右辺を通分すると、
αs+1+βs+2=α(s+2)+β(s+1)(s+1)(s+2)=(α+β)s+(2α+β)(s+1)(s+2)

となります。左辺と係数比較すると

{α+β=02α+β=1

なる連立方程式が得られます。これを解くと

{α=1β=1

となり、解が得られた。


これをエレガントに解く方法が冒頭のツイートだったのでした。

どのように計算するかというと

  • α を求めるためには、元の分数の (s+1) を隠して、s=1 を代入する
  • β を求めるためには、元の分数の (s+2) を隠して、s=2 を代入する

たったこれだけです。簡単でしょう。


実際にやってみると

α=1s+2|s=1=1
β=1s+1|s=2=1

となり、この α,β(1) 式に代入すると

1(s+1)(s+2)=1s+11s+2

となって、あっという間に部分分数分解の答えが求まりました。すごいですね!

なぜこれでうまくいくのか

どうしてこんな方法でうまくいくのか考えてみましょう。

α の方で考えます。まず「元の分数の (s+1) を隠して」の部分ですが、これは (s+1) をかけることに相当します。そこで、式 (1) の両辺に (s+1) をかけてみましょう。

1(s+2)=α+βs+2(s+1)

ここで、s=1 を代入すると

1s+2|s=1=α+βs+2(s+1)

となり、α だけが取り出せます。(s+1) をかけると α の分母が消え、一方で β の分母がキャンセレーションしない、というのがポイントのようですね。β の計算も同様の方法で証明できます。


この方法を使えば、たとえばこんな複雑な部分分数分解も簡単に求まります。

1(s+1)(s+2)(s+3)(s+4)(s+5)(s+6)(s+7)

暇な人はやってみてください。

どこまでうまくいくのか

ここで気になるのは、この方法の適用範囲ですね。たとえば、(s+1) の部分が s2+s+1 のように次数が 2 以上の多項式の場合はどうでしょう。

1(s2+s+1)(s+2)

この場合は簡単で、複素数の範囲で因数分解してあげれば良いです。

s2+s+1=(sγ)(sδ)

このようにすれば1次の多項式の積になりますから、同じ方法で部分分数分解が求まります。

あとは、分母の多項式が重解を持つときが気になります。

1(s+1)2(s+2)

この場合も、少し手間がかかりますが、似たような方法(2階微分とかが入る)で計算が可能です。

この方向で一般化していくと、以下のブログに書かれた方法に行き着きます。この記事の「補題1」を御覧ください。
integers.hatenablog.com

INTEGERSというブログは、数学の面白いことならほぼ何でも書いてある素敵なブログです。

留数計算に似てる

この方法をみて私が思ったことは「留数計算に似てる」ということでした。実際、まったく等価な方法であることが以下のように示されます。


留数計算とは、複素関数論に出てくる定番の計算です。z=α に極を持つ関数 f(z) を考えて、z=α の周りの経路 C で複素積分することを考えます。

Cf(z)dz(積分経路 C は以下の図の通り)
f:id:tsujimotter:20180424222129p:plain:w320

普通に計算しようとすると面倒ですが、実は留数を使って簡単に計算ができるというのが面白いところです。

テイラー展開に「負べきの項」を加えたものがローラン展開ですが、一般に任意の複素関数はローラン展開できます。f(z)z=α1 位の極を持つと仮定して、z=α の周りでローラン展開すると、以下のようになります:

(2)f(z)=a1(zα)+a0+a1(zα)+a2(zα)2+a3(zα)3+

a0 以降の部分がテイラー展開の部分(こういう部分を正則部分といいます)で、1/(zα) の項が本質的に極に関係する部分です。1/(zα) の項の係数 a1f(z)留数といいます。

先ほどの積分は、この留数を使って

Cf(z)dz=2πia1

と簡潔に表せます。

綺麗ですね。これが複素関数論の面白いところです。


この留数の求め方ですが、ローラン展開の式 (2) に対して、(zα) をかけてあげると

(zα)f(z)=a1+a0(zα)+a1(zα)2+a2(zα)3+a3(zα)4+

という具合に、一個ずつ項がずれます。これに zα を代入すると、

(zα)f(z)|z=α=a1+a0(zα)+a1(zα)2+a2(zα)3+a3(zα)4+=a1

となり、留数 a1 が取り出せました。


さて、ここで元々の部分分数分解を思い出して欲しいのですが、

これと

(s+1)1(s+1)(s+2)|s=1=α+βs+2(s+1)=α

これ

(zα)f(z)|z=α=a1+a0(zα)+a1(zα)2+a2(zα)3+a3(zα)4+=a1

は、まったく同じことをやっていますよね。


実際、部分分数分解の方の

βs+2

は、s=1 で発散しません。つまり、正則関数になっています。ローラン展開で言うところの正則部分になっていたのです。

したがって、テイラー展開できるので、留数計算とまったく同じ計算になるのです。


実際「部分分数展開 ローラン展開」で調べてみると、それらしい記事がたくさん出てきますね。tsujimotterは初めて知ったのですが、この方法自体は定番な方法のようです。

大変勉強になりました。


それでは、今日はこの辺で。