
マイケルです!


これまで微分、積分と進めてきたので、最後に テイラー展開 で遊んで締めようと思います!


さっそくやっていこう!!

テイラー展開(マクローリン展開)とは

テイラーの定理

n+1回微分出来る関数はxの多項式で近似できる、という定理なんだ!
下記はある関数の2点をx、aとして表したものです。
$$ f(x)=f(a)+f'(a)(x-a)+\frac{f”(a)}{2!}(x-a)^2+…+\frac{f^{(n)}(a)}{n!}(x-a)^n+\frac{f^{(n+1)}(c)}{n+1!}(x-a)^{n+1} $$

これは微分すればするほど近づくということクマね

それらもxの多項式で表すことができる、といったものがあるんだ。
この辺りはこの後実装してみるよ!
テイラー展開

$$ R_{n+1}=\frac{f^{(n+1)}(c)}{n+1!}(x-a)^{n+1} $$

このような形で近似計算するのをテイラー展開と言います!
$$ f(x)=\sum_{n=0}^\infty\frac{f^{(n)}(a)}{k!}(x-a)^n $$

マクローリン展開

$$ f(x)=f(0)+f'(0)x+\frac{f”(0)}{2!}x^2+…+\frac{f^{(n)}(0)}{n!}x^n+\frac{f^{(n+1)}(c)}{n+1!}x^{n+1} $$
$$ f(x)=\sum_{n=0}^\infty\frac{f^{(n)}(0)}{k!}x^n $$


マクローリン展開を使用した近似式の描画

今回は有名な例である
・sin(x)
・cos(x)
・e^x
の3つのサンプルを作ってみました!

sin(x)

f(x)=sin(x)をマクローリン展開に当てはめると、下記のように表すことができます。
$$ f(x)=\sum_{n=0}^\infty(-1)^n\frac{x^{2n+1}}{(2n+1)!} $$

See the Pen
20221220_maclaurin_sin by masarito617 (@masarito617)
on CodePen.
// マクローリン展開(sin)
function maclaurinSin(x, derCount) {
let ret = 0;
for (let n = 0; n < derCount; n++) {
ret += (-1)**n * (x**(2*n+1)) / factorial(2*n+1);
}
return ret;
}
// 階乗計算
function factorial(n) {
let fact = 1;
for (let i = 1; i <= n; i++) {
fact *= i;
}
return fact;
}


Nの値を変えてみると下記のように、内側からどんどんsin(x)の関数に近づいていくのが確認できます!


見ていて中々面白いクマ

cos(x)

こちらはsin(x)とも似ていますが、下記の式で表すことができます。
$$ f(x)=\sum_{n=0}^\infty(-1)^n\frac{x^{2n}}{(2n)!} $$

See the Pen
20221220_maclaurin_cos by masarito617 (@masarito617)
on CodePen.
// マクローリン展開(cos)
function maclaurinCos(x, derCount) {
let ret = 0;
for (let n = 0; n < derCount; n++) {
ret += (-1)**n * (x**(2*n)) / factorial(2*n);
}
return ret;
}




指数関数e^x

こちらは前の例よりも更にシンプルで、下記の式で表すことができます。
$$ f(x)=\sum_{n=0}^\infty\frac{x^n}{n!} $$

See the Pen 20221220_maclaurin_napier by masarito617 (@masarito617) on CodePen.
// マクローリン展開(e^x)
function maclaurinNapier(x, derCount) {
let ret = 0;
for (let n = 0; n < derCount; n++) {
ret += (x**(n)) / factorial(n);
}
return ret;
}




おわりに

どうだったかな??

近づく様子は見ていて面白いクマね



全三回、微分積分を触ってきたけど、実装してみると分かりやすいし楽しかったね!
ゲーム開発にも上手く活かしていこう!!

アデューー!!

【ゲーム数学】第八回 p5.jsで学ぶゲーム数学「テイラー展開と近似式の計算」〜完〜
コメント