泰勒級數は、数学の中でも非常に強力な関数の近似ツールです。- 3Blue1Brown
これらの日々、テイラー展開に関する内容を再学習し、学習記録として記事を書くことにしました。
テイラーの定理の大まかな考え方は、ある関数が十分に滑らかであり、既知の関数のある点での各階数の導関数が与えられている場合、これらの導関数の値を係数として使用して、その点の近傍での関数の値を近似する多項式を構築できるというものです。
数式で表すと、
g(x)=f(a)+1!f′(x)(x−a)+2!f2(x)(x−a)2+...+n!fn(x)(x−a)n+Rn(x)
上記の式は一旦置いておき、ここではどのような関数が滑らかと見なされるかを説明します。滑らかな関数は、無限階数の導関数を持つ関数であり、定義域内の各点で無限回微分でき、導関数がその点で連続であると言えます。例えば、y=xはその導関数がy′=1であり、定数の微分は常に 0 になるため、y=xは 1 次の滑らかな関数と呼ばれます。また、y=sinxのような関数も無限階数の滑らかな関数であり、その導関数は常にcosx、−sinx、−cosx、sinxの順で循環します。
近似とは何か#
関数の近似とは、別の関数を使用して元の関数を近似し、ある範囲内で小さな誤差のみが存在するようにすることです。この説明から、近似は複雑な関数を計算する手段として使用できることがわかります。計算が難しい関数を計算しやすい関数に近似するだけで、言葉だけで理解すると少し奇妙に感じますが、例を挙げるとより直感的になるかもしれません。例えば、sin2を手計算で求める必要がある場合、通常はゼロでテイラー展開してΣn=0+∞(2n+1)!(−1)n(2)2n+1となります(ここでは例として挙げているだけで、後で展開方法を説明します)。いくつかの項を取るだけで近似解を求めることができます。ただし、どのように近似しても最終的には誤差が存在することに注意してください(つまり、式中のRn(x))。もちろん、後でさらに議論します。
関数を近似する方法#
関数の導関数は、その関数の変化率を示します(参照:https://www.bilibili.com/video/BV1Lx411m7Vj/?vd_source=087a5c011e05e20afe8b532203a38c3f)。したがって、導関数の導関数を求めることは、その点の変化率の変化率に対応します。この関係をさらに推し進めると、無限に続くことになります。言い換えると、関数を近似したい場合、任意の n 階の導関数が同じであれば十分です(変化率、変化率の変化率... などがすべて同じであれば、関数のグラフは無限に近づくはずです)。したがって、関数 f (x) を近似したい場合、$$g (x) = a_0 + a_1 (x) + a_2 (x^2) + ... + a_n (x^n)$$ と仮定することができます。ここで、n は任意の正の整数です。g (x) をこのように設定する理由は非常に単純です。この形式の表現は、任意の n 階の導関数を計算するのに便利です。
ゼロ点での展開を行います。
⎩⎨⎧f(0)=g(0)f′(0)=g′(0)f2(0)=g2(0)..fn(0)=gn(0)
以下はan階の導関数の求解プロセスです。
∵fn(0)=gn(0)∴fn(0)=ann!∴an=n!fn(0)
したがって、
⎩⎨⎧a0=f(0)a1=1!f′(0)a2=2!f2(0)..an=n!fn(0)
したがって、ゼロ点でのテイラー展開の式が得られます(マクローリン展開)。
g(x)=f(0)+1!f′(0)(x)+2!f2(0)(x)2+...+n!fn(0)(x)n+Rn(x)
この展開を一般的な形式に変換するには、例えば a 点で展開する場合、右にシフトするだけです。
g(x)=f(a)+1!f′(a)(x−a)+2!f2(a)(x−a)2+...+n!fn(a)(x−a)n+Rn(x)
上記の式のRn(x)は余り項と呼ばれ、後で個別に処理されます。この項を削除すると、上記の等式は約等号しか描けません。なぜなら、n が無限であっても n+1 が存在するからです。
余り項Rn(x)の処理#
推論が面倒くさいので、後で書きます。
プロセスも結果も、実際には表現していることです - ターゲットポイントと展開ポイントが離れれば離れるほど、誤差が大きくなります。例えば、sin x をゼロ点で展開する場合、計算時に 2 を代入することができますが、なぜゼロ点で展開した後に 2 を代入してsin2を計算することが許されるのでしょうか?これは収束範囲と関係があります。sin の収束範囲は (−∞+∞) ですので、直接代入して計算することができます。後で書きます。後で書きます。