関数があればとりあえずテーラー展開

とりあえずテーラー展開はちょっと危険というお話.

あっ, どーも僕です.


テーラー展開

 テーラー展開をするときは, 計算上は収束半径があって, ある値の近傍でしかなりたたないというのは学部のころから散々教わってきたので式の上では理解できるのですが, 図としてイメージしていなかったのでシュミレーションしてみました. 対象の式はこちらです. 右辺がマクローリン展開した結果です. 収束半径は です.

 Rで n = 6 まで試してみましたが, やはり収束半径のなかでしかうまく近似できませんね.

f:id:aaaazzzz036:20130513145829p:plain

# *************************************************
# テイラー展開がx*の近傍でしか成り立たないことの確認
# f(x) = log(1+x)は4次でも-1, 1の区間くらいまでしか近似でてきていない. 
f_taylor <- function (n, x) (-1) ^ (n-1) * x^n / n
N <- 6 #テーラー展開の項数
x <- seq (-3, 3, length = 100)
Y <- apply( sapply( seq_len (N), f_taylor, x), 1, cumsum)
Y <- as.data.frame(t(Y))

# グラフ
library (RColorBrewer)
mycol <- brewer.pal (N + 1, "Dark2")
curve (log1p, -1, 3, xlim = c (-3, 3), ylim = c (-3, 3),
       col = mycol[1], lwd = 2)
matplot(x, Y, type = "l", lty = 1, col = mycol[-1], add = TRUE, lwd = 2)
legend("topleft", legend = c("true", seq_len(N)), lty = 1,
       col = mycol, lwd = 4, cex = 2, bty = "n")
grid()
abline(h = 0, v = 0)