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

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


person kjh    schedule 01.10.2012    source источник
comment
Читать dl.acm.org/citation.cfm?id=1693304   -  person Basile Starynkevitch    schedule 01.10.2012
comment
Также подумайте о такой функции, как exp(x^2) - 1 - (x^2) рядом с x=0 или x/sin(x)   -  person Basile Starynkevitch    schedule 01.10.2012
comment
Если я могу сказать своему компьютеру вычислить e^(.1), и он выдаст мне точное значение -- о, вам так много предстоит узнать о вычислении сумм на компьютерах. Хотя он может не использовать ряд Тейлора, ваш компьютер, безусловно, использует некоторое приближение. Если вы сомневаетесь в этом, запишите все цифры точного значения e^(.1) и сравните их с приближением, которое дает ваш компьютер. ВСЕ цифры и никаких провисаний. Начните свое обучение здесь - mathworld.wolfram.com/e.html   -  person High Performance Mark    schedule 01.10.2012


Ответы (2)


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

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

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

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

person Eric Postpischil    schedule 02.10.2012

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

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

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

person phkahler    schedule 02.10.2012