В какой ситуации необходим ряд Тейлора для полинома?

Мне трудно понять, почему было бы полезно использовать ряд Тейлора для функции, чтобы получить приближение функции, а не просто использовать саму функцию при программировании. Если я могу сказать моему компьютеру вычислить e^(.1), и он даст мне точное значение, зачем мне вместо этого брать приближение?

2 ответа

Решение

Ряды Тейлора обычно не используются для приближения функций. Обычно используется некоторая форма минимаксного полинома.

Ряды Тейлора сходятся медленно (требуется много членов, чтобы получить желаемую точность) и неэффективны (они более точны вблизи точки, вокруг которой они центрированы, и менее точны от нее). Наиболее широкое использование рядов Тейлора, вероятно, в математических классах и работах, где они полезны для изучения свойств функций и для изучения исчисления.

Для аппроксимации функций часто используются минимаксные полиномы. Минимаксный многочлен имеет минимально возможную максимальную ошибку для конкретной ситуации (интервал, через который должна быть аппроксимирована функция, степень, доступная для многочлена). Обычно не существует аналитического решения для нахождения минимаксного полинома. Они найдены численно с использованием алгоритма Ремеза. Минимаксные полиномы могут быть адаптированы к конкретным потребностям, таким как минимизация относительной ошибки или абсолютной ошибки, аппроксимация функции через определенный интервал и так далее. Минимаксным многочленам нужно меньше членов, чем рядам Тейлора, чтобы получить приемлемые результаты, и они "распределяют" ошибку по интервалу, вместо того, чтобы быть лучше в центре и хуже на концах.

Когда вы звоните exp Для вычисления ex вы, вероятно, используете минимаксный полином, потому что кто-то выполнил эту работу за вас и сконструировал библиотечную подпрограмму, которая оценивает полином. По большей части, единственные арифметические компьютерные процессоры могут делать сложение, вычитание, умножение и деление. Таким образом, другие функции должны быть построены из этих операций. Первые три дают вам полиномы, и полиномов достаточно для аппроксимации многих функций, таких как синус, косинус, логарифм и возведение в степень (с некоторыми дополнительными операциями перемещения объектов в поле экспоненты значений с плавающей точкой). Деление добавляет рациональные функции, что полезно для таких функций, как арктангенс.

По двум причинам. Прежде всего - большинство процессоров не имеют аппаратных реализаций сложных операций, таких как экспоненты, логарифмы и т. Д. В таких случаях язык программирования может предоставлять библиотечную функцию для их вычисления - другими словами, кто-то использовал ряд Тейлора или другое приближение для тебя.

Во-вторых, у вас может быть функция, которую не поддерживает даже язык.

Недавно я хотел использовать таблицы поиска с интерполяцией, чтобы получить угол, а затем вычислить sin() и cos() этого угла. Проблема в том, что это DSP без плавающей запятой и тригонометрических функций, поэтому эти две функции очень медленные (программная реализация). Вместо этого я поместил sin(x) в таблицу вместо x, а затем использовал ряд Тейлора для y=sqrt(1-x*x), чтобы вычислить cos(x) из этого. Этот ряд Тейлора является точным во всем диапазоне, который мне нужен, только с 5 терминами (знаменатели - все степени двух!) И может быть реализован в фиксированной точке с использованием простого C и генерирует код, который работает быстрее, чем любой другой подход, который я мог придумать.

Другие вопросы по тегам