有限個の多項式のテイラー展開

解析
作者

Ryo Nakagami

公開

2025-02-02

高階微分法とライプニッツの公式

y = f(x) の導関数を f(x) とするとき,第二階の導関数を f′′(x) と表記し,第 n 階の導関数を f(n)(x) と表記します. 一点 x において

$$ \begin{gather} f^{\prime\prime}(x) = \frac{d}{dx}\left(\frac{dy}{dx}\right) = \frac{d^2y}{dx^2}\\ f^{(n)}(x) = \frac{d^ny}{dx^n} \end{gather} $$

となります.

▶  記号の差異: d2y vs dx2

d2y = d(dy)dx2 = (dx)2 の意味で,この意味の差異を表現するため記号でも表記が異なっています.微分記号を用いて

dy = f(x)dx

と書くとき,両辺の微分を取れば,

$$ \begin{align} d(dy) &= \frac{d(f^{\prime}(x))}{dx}(dx)^2 + f^\prime(x)\frac{d(dx)}{dx}dx\\ &= f^{\prime\prime}(x)(dx)^2 + f^\prime(x)d(dx) \label{eq-second-diff} \end{align} $$

x が独立変数であるならば dxx の水準関係なく自由に取れるので,$\frac{d(dx)}{dx} = 0$.従って,

d2y = f′′(x)dx2

となります.もし,x = φ(t) であるならば,d2x = φ′′(t)dt2 となるので

$$ \frac{d}{dt^2}f(\varphi(t)) = f^{\prime\prime}(\varphi(t))(\varphi^\prime(t))^2 + f^\prime(\varphi(t))\varphi^{\prime\prime}(t) $$

ライプニッツの公式

定理 1 : ライプニッツの公式(Leibniz rule)

u, vx の関数であるとき,

$$ \begin{align} \frac{d^n(uv)}{dx^n} &= u^{(n)}v + \left(\begin{array}{c}n\\1\end{array}\right)u^{(n-1)}v^{\prime} + \left(\begin{array}{c}n\\2\end{array}\right)u^{(n-2)}v^{\prime\prime}+\cdots+ \left(\begin{array}{c}n\\n-1\end{array}\right)u^{\prime}v^{(n-1)} +uv^{(n)}\\ &= \sum_{k=0}^n \left(\begin{array}{c}n\\ k\end{array}\right)u^{(n-k)}v^{(k)} \end{align} $$

ノートProof

n = 1 のときは,積の微分公式より

$$ \frac{d(uv)}{dx^n} = \frac{du}{dx}v + \frac{dv}{dx}u $$

n ≥ 2 については,帰納法を用いて示す.n = t のときライプニッツの公式が成立すると仮定する.

このとき,

$$ \begin{align} \frac{d^{(t+1)}(uv)}{dx^{t+1}} &= \frac{d}{dt}\left(\frac{d^{(t)}(uv)}{dx^{t}}\right)\\ &= \frac{d}{dt}\left(\sum_{k=0}^t \left(\begin{array}{c}t\\ k\end{array}\right)u^{(t-k)}v^{(k)}\right)\\ &= \sum_{k=0}^t \left(\begin{array}{c}t\\ k\end{array}\right)[u^{(t-k+1)}v^{(k)} + u^{(t-k)}v^{(k+1)}]\\ &= \sum_{k=0}^t \left(\begin{array}{c}t\\ k\end{array}\right)u^{(t-k+1)}v^{(k)} + \sum_{k=0}^t \left(\begin{array}{c}t\\ k\end{array}\right)u^{(t-k)}v^{(k+1)}\\ &= \left\{u^{(t+1)}v + \sum_{k=1}^t \left(\begin{array}{c}t\\ k\end{array}\right)u^{(t-k+1)}v^{(k)}\right\}+ \left\{uv^{(t+1)} + \sum_{k=0}^{t-1} \left(\begin{array}{c}t\\ k\end{array}\right)u^{(t-k)}v^{(k+1)}\right\}\\ &= \left\{u^{(t+1)}v + \sum_{k=1}^t \left(\begin{array}{c}t\\ k\end{array}\right)u^{(t-k+1)}v^{(k)}\right\}+ \left\{uv^{(t+1)} + \sum_{j=1}^{t} \left(\begin{array}{c}t\\ j-1\end{array}\right)u^{(t-j+1)}v^{j}\right\}\\ &= u^{(t+1)}v + uv^{(t+1)} + \sum_{k=1}^t \left\{\left(\begin{array}{c}t\\ k\end{array}\right) + \left(\begin{array}{c}t\\ k-1\end{array}\right)\right\}u^{(t-k+1)}v^{(k)}\\ &= u^{(t+1)}v + uv^{(t+1)} + \sum_{k=1}^t \left(\begin{array}{c}t+1\\ k\end{array}\right)u^{(t+1-k)}v^{(k)}\\ &= \sum_{k=0}^{t+1} \left(\begin{array}{c}t+1\\ k\end{array}\right)u^{(t+1-k)}v^{(k)} \end{align} $$

となり,n = t + 1 の場合のライプニッツの公式の成立が確かめられた.

例 1

y = x2sin (x) について n 階導関数を求めめたいとします.

$$ (\sin x)^{(k)} = \sin\left(x + \frac{\pi}{2}k\right) $$

であるので

n = 1 のときは

$$ y^\prime = x^2\sin\left(x + \frac{\pi}{2}\right) + 2x\sin(x) $$

n ≥ 2 のときは,x2 が2回微分可能であることを考慮してライプニッツルールを利用すると

$$ \begin{align} \frac{d^n}{dx^{n}}(x^2\sin x) &= x^2(\sin(x))^{(n)} + 2nx(\sin(x))^{(n-1)} + n(n-1)(\sin(x))^{(n-2)}\\ &= x^2\sin\left(x + \frac{\pi}{2}n\right) + 2nx\sin\left(x + \frac{\pi}{2}(n-1)\right) + n(n-1)\sin\left(x + \frac{\pi}{2}(n-2)\right) \end{align} $$


例 2

$$ \begin{align} (x\sin x)^{(n)} = x\sin\left(x + \frac{\pi}{2}n\right) + n \sin\left(x + \frac{\pi}{2}(n-1)\right)\\ (x\cos x)^{(n)} = x\cos\left(x + \frac{\pi}{2}n\right) + n \cos\left(x + \frac{\pi}{2}(n-1)\right)\\ (x^2\exp(x))^{(n)} = x^2\exp(x) + 2nx\exp(x) + n(n-1)\exp(x) \end{align} $$

有限個の多項式のテイラー展開

n 次式の f(x) を考えます.このとき,定義域の任意の点 a を用いて,以下のように表すとします

f(x) = a0 + a1(x − a) + a2(x − a)2 + ⋯ + an(x − a)n

x = a のとき,f(a) = a0.両辺を k 回微分すると

$$ f^{(k)}(x) = a_kk! + a_{k+1}\frac{(k+1)!}{1!}(x-a) + a_{k+2}\frac{(k+2)!}{2!}(x-a)^2 + \cdots + a_{n}\frac{n!}{(n-k)!}(x-a)^{n-k} $$

このとき,f(k)(a) = akk! であるので,$a_k = \frac{f^{(k)}(a)}{k!}$ を得る.従って,n 次式の f(x)

$$ f(x) = f(a) + \frac{f^{\prime}(a)}{1!}(x-a) + \frac{f^{(2)}(a)}{2!}(x-a)^2 + \cdots + \frac{f^{(n)}(a)}{n!}(x-a)^n\label{eq-poly} $$

と表すことが出来ます.

例 3

f(x) = xn

f(x) = a0 + a1(x − 1) + a2(x − 1)2 + ⋯ + an(x − 1)n

で表したいとします.このとき, より

$$ \begin{align} x^n &= 1 + \frac{n}{1!}(x-1)+ \frac{n(n-1)}{2!}(x-1)^2 + \cdots + \frac{n!}{n!}(x-1)^n\\ &= \sum_{k=0}^n \left(\begin{array}{c}n\\ k\end{array}\right)(x-1)^k \end{align} $$

と表せます.これを更に式変形すると

$$ \begin{align} \sum_{k=0}^n \left(\begin{array}{c}n\\ k\end{array}\right)(x-1)^k &= \sum_{k=0}^n \left(\begin{array}{c}n\\ k\end{array}\right)(x-1)^k 1^{n-k}\\ &= (x - 1 + 1)^n\\ &= x^n \end{align} $$

よって xnx = 1 まわりでのテイラー展開は (x − 1 + 1)n の二項展開と関係づけて理解することが出来ます.


定理 2

n 次式の f(x) について,x = ak 重解であるための必要十分条件は

$$ \begin{gather} f(a) = f^\prime(a) = \cdots = f^{(k-1)}(a) = 0\\ f^{(k)}(a) \neq 0 \end{gather} $$

ノートProof

x = ak 重解であるということは,f(x) = (x − a)kg(x), g(a) ≠ 0 と同値であることに留意して以下示します.

▶  十分性

より

$$ \begin{align} f(x) &=\frac{f^{(k)}(a)}{k!}(x-a)^k + \frac{f^{(k+1)}(a)}{(k+1)!}(x-a)^{k+1} + \cdots +\frac{f^{(n)}(a)}{n!}(x-a)^n\\ &= (x-a)^k\left\{\frac{f^{(k)}(a)}{k!} + \frac{f^{(k+1)}(a)}{(k+1)!}(x-a)^{1} + \cdots + \frac{f^{(n)}(a)}{n!}(x-a)^{n-k}\right\}\\ &= (x-a)^kg(x) \end{align} $$

このとき,f(k)(a) ≠ 0 より g(a) ≠ 0. 以上より,十分性は示せた.

▶  必要性

f(x) = (x − a)kg(x), g(a) ≠ 0 のとき,f(a) = 0 は自明. この式を m 回微分するとライプニッツルールより

$$ \begin{aligned} f^{(m)}(x) =& (x-a)^kg^{(m)}(x) + \left(\begin{array}{c}m\\ 1\end{array}\right)k(x-a)^{k-1}g^{(m-1)}(x) \\ &+ \cdots + \left(\begin{array}{c}m\\ m\end{array}\right)k(k-1)\cdots(k-m+1)(x-a)^{k-m}g(x) \end{aligned} $$

m < k であるならば,f(m)(a) = 0,また m = k であるならば

f(k)(a) = k!g(a) ≠ 0

従って,必要性も示された.

例 4

f(x) = x4 + ax2 + bx + c = 0

x = 1 を3重解に持つようにするようにパラメータを定めたいとします.

$$ \begin{align} f(1) &= 1 + a + b + c = 0\\ f^\prime(1) &= 4 + 2a + b = 0\\ f^{\prime\prime}(1) &= 12 + 2a = 0\\ f^{(3)}(1) &= 24 \neq 0\\ \end{align} $$

これを解くと,(a, b, c) = (−6, 8, −3).これを用いて整理すると

f(x) = (x − 1)3(x + 3)

となります.

コード
import numpy as np
import matplotlib.pyplot as plt

def func_x(x, a, b, c):
    return x**4 + a*x**2 + b*x + c

x_domain = np.linspace(-4, 4, 100)

plt.plot(x_domain, func_x(x_domain, *(-6, 8, -3)), label='$f(x) = x^4 - 6x^2 + 8x - 3$')
plt.plot(x_domain, func_x(x_domain, *(-8, 12, -5)), label='$f(x) = (x-1)^2(x^2+2x-5)$')
plt.xlabel('X')
plt.ylabel('y')
plt.axhline(0, color='gray', linestyle='--', linewidth=0.7)
plt.legend()
plt.xlim(-4, 4)
plt.show()

図 1