読み書きプログラミング

日常のプログラミングで気づいたことを綴っています

(18) Newton法による多項式の逆数のMaclaurin展開

Newton法を使って逆数を求めるには、以下の漸化式を使います。

これは多項式にも適用することができます。

具体的な例として、Bernouli数を計算してみます。Bernouli数は以下の式で定義される数列です。

微分してt=0を代入すると不定になるので代数的に求めることはできず、通常はを求めるには極限値を計算する必要があります。


左辺の指数関数にMaclaurin展開を適用すると、以下のように多項式の逆数と考えることができます。

分母の多項式をyとして、漸化式を使ってを35次まで求めてみましょう。

/* 4.4.8m */
p : 35 + 2$
y : sum(t ^ j / factorial(j+1), j, 0, p - 2)$
prec : 1$
x : 1$
while prec < p - 1 do (
  prec : 2 * prec,
  if prec > p - 1 then prec : p - 1,
  z : x,
  z : z ^ 2,
  w : taytorat(taylor(y, t, 0, prec - 1)),
  z : w * z,
  x : 2 * x - z,
  x : taytorat(taylor(x, t, 0, prec - 1)))$
x : expand(x)$
print(x)$
for i : 0 thru hipow(x, t) do print("B", i, "=", coeff(x, t, i)*i!)$

使用した機能