プログラミング時に関数自体を使用するのではなく、関数の近似値を取得するために関数にテイラー級数を使用することがなぜ役立つのか理解するのに苦労しています。コンピューターにe^(。1)を計算するように指示でき、正確な値が得られる場合、代わりに近似値を使用するのはなぜですか?
2 に答える
テイラー級数は通常、関数の近似には使用されません。通常、何らかの形式のミニマックス多項式が使用されます。
テイラー級数はゆっくりと収束し(必要な精度を得るには多くの項が必要です)、非効率的です(中心点の近くでは精度が高く、離れると精度が低くなります)。テイラー級数の最大の用途は、数学の授業や論文である可能性が高く、関数の特性を調べたり、微積分について学習したりするのに役立ちます。
関数を近似するために、ミニマックス多項式がよく使用されます。ミニマックス多項式は、特定の状況で可能な最小の最大誤差を持ちます(関数が近似される区間、多項式で利用可能な次数)。通常、ミニマックス多項式を見つけるための分析的な解決策はありません。それらは、Remezアルゴリズムを使用して数値的に検出されます。ミニマックス多項式は、相対誤差または絶対誤差の最小化、特定の間隔での関数の近似など、特定のニーズに合わせて調整できます。ミニマックス多項式は、許容できる結果を得るためにテイラー級数よりも少ない項を必要とし、中央で良くなり、端で悪くなるのではなく、区間全体に誤差を「広げ」ます。
関数を呼び出してexp
exを計算するときは、ミニマックス多項式を使用している可能性があります。これは、誰かがあなたに代わって作業を行い、多項式を評価するライブラリルーチンを作成したためです。ほとんどの場合、算術コンピュータプロセッサで実行できるのは、加算、減算、乗算、および除算のみです。したがって、他の関数はそれらの操作から構築する必要があります。最初の3つは多項式を提供し、多項式は、正弦、余弦、対数、べき乗などの多くの関数を近似するのに十分です(浮動小数点値の指数フィールドに物を出し入れするいくつかの追加操作があります)。除算は有理関数を追加します。これはアークタンジェントのような関数に役立ちます。
2つの理由で。何よりもまず、ほとんどのプロセッサには、指数、対数などの複雑な演算のハードウェア実装がありません...このような場合、プログラミング言語はそれらを計算するためのライブラリ関数を提供する可能性があります-言い換えると、誰かがテイラー級数または他の近似を使用しましたあなたのために。
第二に、あなたは言語でさえサポートしていない機能を持っているかもしれません。
最近、補間を使用したルックアップテーブルを使用して角度を取得し、その角度のsin()とcos()を計算したいと思いました。問題は、浮動小数点と三角関数がないDSPであるため、これら2つの関数が非常に遅いことです(ソフトウェアの実装)。代わりに、xの代わりにsin(x)をテーブルに配置し、y = sqrt(1-x * x)のテイラー級数を使用してそこからcos(x)を計算しました。このテイラー級数は、必要な範囲で5項(分母はすべて2の累乗です!)で正確であり、プレーンCを使用して固定小数点で実装でき、他のどのアプローチよりも高速なコードを生成します。