Ряд Тейлора. Разложение функции в ряд Тейлора.
ГОСТы, СНиПы Карта сайта TehTab.ru Поиск по сайту TehTab.ru | Навигация по справочнику TehTab.ru: главная страница / / Техническая информация/ / Математический справочник/ / Степенные ряды Тейлора, Маклорена (=Макларена) и периодический ряд Фурье. Разложение функций в ряды. / / Ряд Тейлора. Разложение функции в ряд Тейлора.
| |||||
Нашли ошибку? Есть дополнения? Напишите нам об этом, указав ссылку на страницу. | ||||||
TehTab.ru Реклама, сотрудничество: info@tehtab.ru | Обращаем ваше внимание на то, что данный интернет-сайт носит исключительно информационный характер. Информация, представленная на сайте, не является официальной и предоставлена только в целях ознакомления. Все риски за использование информаци с сайта посетители берут на себя. Проект TehTab.ru является некоммерческим, не поддерживается никакими политическими партиями и иностранными организациями. |
Реализация ряда Тейлора на Python / Хабр
Ряд Тейлора для функции представляет собой бесконечную сумму членов, которая использует информацию о производных этой функции для создания полинома, аппроксимирующего эту функцию. Более точные аппроксимации можно вывести, взяв производные более высокого порядка и используя полиномы более высокой степени. В интернете уже есть много статей (и видео на YouTube) о рядах Тейлора, которые помогут вам сформировать хорошее понимание процесса построения бесконечного ряда с упоминанием того, как члены более высоких порядков дают вам более близкие аппроксимации базовой функции (при условии, что ряд сходится). Тем не менее, таких, которые наглядно демонстрируют, почему это может быть так важно для нас, не очень много.
Когда я впервые столкнулся с рядами Тейлора в рамках своего бакалаврского курса, особого впечатления они на меня не произвели — я отнесся к ним как к вполне себе рядовой теме. Но недавно, готовясь к GRE Mathematics Subject Test, я наконец проникся и решил реализовать их на Python. Эта реализация требует от нас только определить аппроксимируемую функцию, все остальное обрабатывается численно. В этой статье мы рассмотрим реализацию ряда Тейлора на Python и обсудим некоторые потенциальные варианты его использования. (n)(x) — для определения коэффициентов полинома. Следовательно, ряд Тейлора может быть определен для
f(x), только если она бесконечно дифференцируема. Члены ряда определяются выражениемГде а является центром ряда Тейлора (прим. ред.: этот термин используется англоязычным сообществом, а русскоязычное в основном оперирует окрестностью точки а). Если центр ряда равен 0, т. е. a=0, то ряд называют рядом Маклорена.
Чтобы программно сформировать ряд Тейлора для функции, все, что от нас требуется, это вычислить коэффициенты
для достаточного количества членов. Опять же напомню, что чем больше членов ряда Тейлора мы будем использовать, тем точнее будет аппроксимация. К счастью, в пакете Python scipy уже есть встроенная функция для вычисления производной функции в заданной точке. Именно ее мы и будем использовать для определения коэффициентов искомого полинома.
from scipy.misc import derivative import math class TaylorSeries(): def __init__(self, function, order, center=0): self.center = center self.f = function self.order = order self.d_pts = order*2 self.coefficients = [] # количество точек (order) для scipy.misc.derivative if self.d_pts % 2 == 0: # must be odd and greater than derivative order self.d_pts += 1 self.__find_coefficients() def __find_coefficients(self): for i in range(0, self.order+1): self.coefficients.append(round(derivative(self.f, self.center, n=i, order=self.d_pts)/math.factorial(i), 5))
Приведенная выше логика начинается с определения класса для хранения информации о ряде Тейлора. Конструктор принимает указатель на функцию (function
) для которой мы формируем ряд Тейлора, порядок (order
) ряда Тейлора (то есть количество членов) и центр (center
) ряда, который по умолчанию соответствует ряду Маклорена (т.е. равен нулю). Некоторые переменные, которые используются в функции
Первая функция, print_equation(…)
, выводит ряд Тейлора как уравнение с центром в центре ряда. print_coefficients(…)
просто выведет список с коэффициентами, а get_coefficients(…)
вернет его.
Приведенный ниже код используется для нахождения коэффициентов ряда Тейлора, представляющего функцию
f(x)
:from TaylorSeries import TaylorSeries def f(x): return 2 + x**3 + x**7 + x**2 if __name__ == '__main__': terms = 15 center = 0 precision = 3 ts = TaylorSeries(f, terms, center) ts.print_coefficients() ts.print_equation()
Выполнение этой логики сформирует список размером в 15 элементов, который содержит коэффициенты ряда Тейлора, а также выведет полиномиальное уравнение. x и т. д., также дают правильные результаты в этой реализации. Далее, в приведенных ниже применениях, мы будем использовать именно эти функции.
Применения ряда Тейлора
Поскольку с полиномами обычно легче работать, чем с большинством функций, аппроксимация с помощью ряда Тейлора может помочь определить приблизительные значения для различных операций, связанных с этими функциями.
Бесполезное
Дифференцирование
Ряд Тейлора функции можно использовать для аппроксимации ее производной в конкретной точке. Члены ряда Тейлора можно дифференцировать по отдельности, тогда они примут форму
которая представляет собой просто производную степенной функции, умноженного на коэффициент ряда Тейлора. Обратите внимание, что в коде это отбросит члены, не представленные в ряде Тейлора, поскольку их коэффициенты будут равны 0.
В нашей Python-логике эти вычисления будут выполняются с помощью функции, приведенной ниже:
def approximate_derivative(self, x): """ Приблизительно вычисляет производную функции f(x) по ее ряду Тейлора. (n-1) return value
В этой функции аппроксимация производной функции находится путем перебора коэффициентов, вычисления значений производной, как описано выше, и их суммирования. Подстановка значений в эту функцию обеспечивает точную аппроксимацию производной базовой функции. Ниже приведены результаты для cos(x)
:
x | f(x) | Approx. f'(x) |
0 | 1.0 | 0.0 |
pi/6 | 0.866 | -0.5 |
pi/4 | 0.707 | -0.707 |
pi/3 | 0.5 | -0.866 |
pi/2 | 0. 0 | -1.0 |
pi | -1 | -0.042 |
Выше приведены значения аппроксимированной функции cos(x) и ее производной (обратите внимание, что фактическая производная равна -sin(x)) в точках 0, 𝝿/6, 𝝿/4, 𝝿/3, 𝝿/2 и 𝝿. Глядя на значения в нескольких этих точках, мы видим, что в целом получили хорошую аппроксимацию производной cos(x). Например, в точке 𝝿/4 значение функции равно 0,707 = sqrt(2)/2, как и его производная -0,707, что является правильным значением.
К сожалению, это практически бесполезно, так как ряду Тейлора требует информация о производной функции, чтобы определить свои коэффициенты. Зачем нам нужна аппроксимация f'(x), которой требуется сама f'(x) общего вида (а значит, фактическое значение) для получения этой аппроксимации. Кроме того, существует множество различных численных методов, которые могут аппроксимировать производные без аналитического нахождения производной функции (например, методы конечных разностей), которые больше подходят для этой задачи.
Полезные
Аппроксимация значений
Одной из широко используемых целей ряда Тейлора является аппроксимация значений базовой функции. Для того, чтобы получить приблизительное значение функции, в члены ряда Тейлора подставляется x, а затем они складываются вместе. В Python-логике это выглядит следующим образом:
def approximate_value(self, x): """ Аппроксимирует значение f(x) с помощью полинома Тейлора. x = точка аппроксимации f(x) """ fx = 0 for i in range(len(self.coefficients)): fx += self.coefficients[i] * ((x - self.center)**i) # coefficient * nth term return fx
Определенный интеграл
Ряд Тейлора можно использовать для аппроксимации интеграла базовой функции, поскольку члены ряда Тейлора можно интегрировать по отдельности, как мы делали это при дифференцировании. При аппроксимации интеграла члены ряда примут вид
Здесь мы опять сталкиваемся со степенной функцией, но на этот раз интегрируем ее и умножаем на соответствующий коэффициент ряда Тейлора.
Однако численно мы можем рассчитать только определенный интеграл функции, так как в противном случае отсутствие значения для константы интегрирования может привести к неправильным результатам. Рассмотрим ряд Тейлора для f(x) = sin(x) с центром в 0:
интегрирование этого полинома член за членом дает следующий полином
Теперь предположим, что это корректная аппроксимация интеграла sin(x) (для которой мы знаем фактический интеграл -cos(x)) и попытаемся вычислить эту функцию в 0. Значение от этого равно 0. В этом случае это можно скорректировать, установив константу интегрирования C = -1. Но нам нужно определить эту константу для каждого значения в области определения функции только для того, чтобы “исправить” интегралы, что делает бесконечное интегрирование бесполезным.
С другой стороны, определенные интегралы можно легко вычислить, интегрируя ряд Тейлора почленно и подставляя пределы интегрирования, как показано в Python-коде ниже. x*sin(x). В целях сокращения длины этой статьи эти результаты будут опущены. Для тех, кто сомневается, полный код будет приведен ниже. Меняйте def f(x) и проверяйте результаты самостоятельно.
Лимиты
Вместо того, чтобы показывать, как численно аппроксимировать лимиты и реализовывать это в Python, я просто приведу пример лимита, который может быть трудно определить аналитически, но его легко найти в форме ряда Тейлора.
Рассмотрим такой лимит:
Этот лимит можно легко определить, применяя правило Лопиталя, так как он имеет форму 0/0, но давайте предположим на минуту, что мы этого не знаем (или что мы ничего не знаем о правиле Лопиталя). Как нам тогда определить этот предел? Оказывается, в этом нам может помочь ряд Тейлора, заменяющий sin(x) в пределе аппроксимацией. В этом примере будет использоваться ряд Тейлора с тремя членами:
Поскольку лимит x²/120 стремится к 0, результат равен -1/6, как и ожидалось, при оценке по правилу Лопиталя.
Заключение
Выше была представлена идея ряда Тейлора, который представляет собой математический инструмент, используемый для аппроксимации любой непрерывно дифференцируемой функции полиномом, используя только информацию о производной этой функции. Была предоставлена реализация на Python и обсуждены применения ряда Тейлора. Полный код с некоторыми примерами использования приведен ниже, и я советую всем, кто заинтересован в работе с этим инструментом, скопировать и потестировать этот код самим, чтобы лучше понять ряд Тейлора.
Листинг кода
usage.py
from TaylorSeries import TaylorSeries import math def f(x): return math.cos(x) #(math.e**x)*math.sin(x)*math.cos(x) if __name__ == '__main__': pts = [0, math.pi/6, math.pi/4, math.pi/3, math.pi/2, math.pi] # pts = [-5, -4, -3, -2, -1, -0.1, 0, 0.1, 1, 2, 3, 4, 5] terms = 15 center = 0 precision = 3 ts = TaylorSeries(f, terms, center) ts.print_coefficients() ts.print_equation() print("x\tf(x)\tApprox. f(x)\tIntegral f(x)\tDerivative f(x)") for x in pts: print("{:.3f}\t{:.3f}\t{:.3f}\t{:.3f}\t{:.3f}".format(x, f(x), ts.approximate_value(x), ts.approximate_integral(0, x), ts.approximate_derivative(x)))
TaylorSeries.
{}».format(self.center, i) if i > 0 else «») + » + » eqn_string = eqn_string[:-3] if eqn_string.endswith(» + «) else eqn_string print(eqn_string) def print_coefficients(self): print(self.coefficients) def approximate_value(self, x): «»» Аппроксимирует значение f(x) с помощью полинома Тейлора. x = точка аппроксимации f(x) «»» fx = 0 for i in range(len(self.coefficients)): fx += self.coefficients[i] * ((x — self.center)**i) # coefficient * nth term return fx def approximate_derivative(self, x): «»» Приблизительно вычисляет производную функции f(x) по ее ряду Тейлора. Бесполезно, так как нам нужна производная самой функции, чтобы построить ряд Тейлора. «»» value = 0 for i in range(1, len(self.coefficients)): # skip the first value (constant) as the derivative is 0 value += self.coefficients[i] * i * ((x — self.center)**(i-1)) # differentiate each term: x^n => n*x^(n-1) return value def approximate_integral(self, x0, x1): «»» Вычисляет определенный интеграл функции, используя разложение в ряд Тейлора. (n+1) return value def get_coefficients(self): «»» Возвращает коэффициенты ряда Тейлора «»» return self.coefficientsОдин из способов сделать вывод из статистического исследования — проверка гипотез. Это помогает нам проверить значения параметров популяции, которые угадываются на основе предварительно собранной информации. Многие области анализа данных включают в себя некоторое количество статистических испытаний, и почти всегда там используется проверка гипотез. Завтра в 16:00 в OTUS состоится открытый урок, на котором мы познакомимся с базовыми понятиями статистики и теории вероятностей, поймём, чем задачи этих областей отличаются друг от друга, концептуально рассмотрим методы проверки гипотез, и как они применяется в науке о данных на простых практических примерах. Регистрация для всех желающих — по ссылке.
Нежное знакомство с серией Taylor
РАСПРОДАЖА!
Используйте код blackfriday, чтобы получить скидку 40% на все!
Спешите, распродажа скоро закончится! Нажмите, чтобы увидеть полный каталог.
By Mehreen Saeed on 20 августа 2021 г. в исчислении
Последнее обновление: 16 марта 2022 г.
Нежное знакомство с серией Taylor
Расширение ряда Тейлора— это потрясающая концепция не только в мире математики, но и в теории оптимизации, приближении функций и машинном обучении. Он широко применяется в численных расчетах, когда требуются оценки значений функции в различных точках.
В этом уроке вы узнаете о рядах Тейлора и о том, как аппроксимировать значения функции в разных точках, используя ее разложение в ряд Тейлора.
После прохождения этого урока вы будете знать:
- Разложение функции в ряд Тейлора
- Как аппроксимировать функции с помощью разложения в ряд Тейлора
Начнем.
Нежное введение в серию Тейлор. Фото Мухаммада Хубайба Сарфраза, некоторые права защищены.
Обзор учебникаЭтот туториал разделен на 3 части; они:
- Серия Power и серия Taylor
- Полиномы Тейлора
- Аппроксимация функции с использованием полиномов Тейлора
Ниже приведен степенной ряд относительно центра x=a и постоянных коэффициентов c_0, c_1 и т. д.
Что такое ряд Тейлора?Удивительно, что бесконечно дифференцируемые функции могут порождать степенной ряд, называемый рядом Тейлора. Предположим, что у нас есть функция f(x) и f(x) имеет производные всех порядков на заданном интервале, тогда ряд Тейлора, порожденный f(x) при x=a, определяется как:
Вторая строка приведенного выше выражения дает значение k-го коэффициента.
Если мы установим a=0, то получим разложение, называемое разложением f(x) в ряд Маклорена.
Хотите начать работу с вычислениями для машинного обучения?
Пройдите мой бесплатный 7-дневный экспресс-курс по электронной почте прямо сейчас (с образцом кода).
Нажмите, чтобы зарегистрироваться, а также получить бесплатную электронную версию курса в формате PDF.
Ряд Тейлора, порожденный f(x) = 1/x, можно найти, сначала продифференцировав функцию и найдя общее выражение для k-й производной.
Теперь можно найти серию Тейлора о различных точках. Например:
Полином Тейлора
Полином Тейлора порядка k, порожденный f(x) при x=a, определяется как:
Для примера f(x)=1/x полином Тейлора порядка 2 определяется как:
Аппроксимация полиномами ТейлораМы можем аппроксимировать значение функции в точке x=a, используя полиномы Тейлора. Чем выше порядок полинома, тем больше членов в полиноме и тем ближе приближение к фактическому значению функции в этой точке.
На приведенном ниже графике функция 1/x построена вокруг точек x=1 (слева) и x=3 (справа). Зеленая линия — это фактическая функция f(x)=1/x. Розовая линия представляет аппроксимацию полиномом 2-го порядка. 9х
Серия Taylor в машинном обученииПопулярным в машинном обучении методом поиска оптимальных точек функции является метод Ньютона. Метод Ньютона использует полиномы второго порядка для аппроксимации значения функции в точке. Такие методы, которые используют производные второго порядка, называются алгоритмами оптимизации второго порядка.
УдлинителиВ этом разделе перечислены некоторые идеи по расширению учебника, которые вы, возможно, захотите изучить.
- Метод Ньютона
- Алгоритмы оптимизации второго порядка
Если вы изучите какое-либо из этих расширений, я хотел бы знать. Опубликуйте свои выводы в комментариях ниже.
Дополнительная литератураВ этом разделе содержится больше ресурсов по теме, если вы хотите углубиться.
Учебники- Нежное введение в производные
- Статья в Википедии о сериале Тейлор
- Отличный ресурс Джейсона Браунли о книгах по исчислению для машинного обучения
- Распознавание образов и машинное обучение, Кристофер М. Бишоп.
- Глубокое обучение Яна Гудфеллоу, Джошуа Бегио, Аарона Курвилля.
- Исчисление Томаса, 14-е издание, 2017 г. (на основе оригинальных работ Джорджа Б. Томаса в редакции Джоэла Хасса, Кристофера Хейла, Мориса Вейра)
- Исчисление, 3-е издание, 2017 г. (Гилберт Стрэнг)
- Исчисление, 8-е издание, 2015 г. (Джеймс Стюарт)
В этом уроке вы узнали, что такое разложение функции в ряд Тейлора относительно точки. В частности, вы узнали:
- Серия Power и серия Taylor
- Полиномы Тейлора
- Как аппроксимировать функции вокруг значения с помощью полиномов Тейлора
Задавайте свои вопросы в комментариях ниже, и я сделаю все возможное, чтобы ответить
Получите доступ к исчислению для машинного обучения!
Почувствуйте себя умнее с концепциями исчисления
…чтобы лучше понять символы и термины исчисления
Узнайте, как в моей новой электронной книге:
Исчисление для машинного обучения
Он содержит учебных пособий для самостоятельного изучения с полным рабочий код на:
дифференциация , градиент , Подход множителей Лагранжа , Матрица Якоби ,
и многое другое. ..
Привнесите достаточно знаний в области исчисления для
ваших проектов машинного обучения
Узнайте, что внутри
О Мехрин Саид
Просмотреть все сообщения Мехрин Саид →
Нежное введение в аппроксимацию
Исчисление в действии: нейронные сети
Расширение Тейлора – Yasin ÇAPAR
Расширение Тейлора – одна из самых полезных идей в математике. Большинство функций и многочленов, как правило, легко решаются. С полиномами работать легче, чем почти с любыми другими функциями, и полиномы в значительной степени могут приближаться к функциям. Формула Тейлора дает нам уравнение для полиномиального разложения почти для каждой гладкой функции f.
Ряд ТейлораВ математике ряд Тейлора функции представляет собой бесконечную сумму членов, которые выражаются через производные функции в одной точке. Для наиболее распространенных функций вблизи этой точки функция и сумма ее ряда Тейлора равны. Серия Тейлора названа в честь Брука Тейлора, который представил их в 1715 году.0006
Теорема ТейлораВ математических вычислениях теорема Тейлора дает аппроксимацию k -кратно дифференцируемой функции вокруг заданной точки полиномом степени k , называемым k -м полиномом Тейлора 1-го порядка. Для гладкой функции многочлен Тейлора представляет собой усечение в порядке k ряда Тейлора функции. Полином Тейлора первого порядка представляет собой линейную аппроксимацию функции, а полином Тейлора второго порядка часто называют квадратичным приближением. Существует несколько версий теоремы Тейлора, некоторые из которых дают явные оценки ошибки аппроксимации функции ее полиномом Тейлора.
Теорема Тейлора дает простые арифметические формулы для точного вычисления значений многих трансцендентных функций, таких как показательная функция и тригонометрические функции. Это отправная точка изучения аналитических функций, а также численного анализа и математической физики.
Частичная сумма, образованная первыми n + 1 членами ряда Тейлора, представляет собой многочлен степени n, который называется n -м полиномом Тейлора функции. Полиномы Тейлора — это аппроксимация функции, которая обычно становится лучше с увеличением n.
Ряд Тейлора против теоремы ТейлораОба обычно используются для описания суммы n , сформулированной для сопоставления производных функции вокруг точки с точностью до n th порядка. Ряд Тейлора подразумевает, что эта сумма бесконечна, в то время как теорема Тейлора (многочлен) может принимать любое положительное целое значение n .
Многочлен Тейлора имеет конечное число членов, тогда как ряд Тейлора имеет бесконечное число членов. Полиномы Тейлора представляют собой частичные суммы ряда Тейлора. Например, ряд Тейлора e х о х = 0 равно → 1 + х + х 2 /2! + х 3 /3! + х 4 /4! + ….
Полином Тейлора 3-й степени e x относительно x = 0 равен → 1 + x + x 2 /2! + х 3 /3!
Идея разложения Тейлора состоит в том, что мы можем переписать любую гладкую функцию как бесконечную сумму полиномиальных членов. Пусть f : R → R — дифференцируемая функция и a ∈ R , тогда ряд Тейлора функции f(x) вокруг точки a :
Серия Taylor (также известная как серия Power), где n ! обозначает факториал n , может быть записан как;
В частности, если нуль является точкой, где производные → a = 0, то разложение известно как ряд Маклорена в честь Колина Маклорена, который широко использовал этот частный случай ряда Тейлора в 18 веке, и, таким образом, определяется как:
Ряд Маклорена для 1 / 1 – x представляет собой геометрический ряд 1 + x + x 2 + x 3 + ⋯ , поэтому ряд Тейлора для 1 / x при a = 1 равен → 1 — (x — 1) + (x — 1) 2 — (x — 1) ) 3 + ⋯ . Интегрируя ряд Маклорена, мы находим ряд Маклорена для ln(1 − x ), где ln обозначает натуральный логарифм:
. Соответствующий ряд Тейлора для ln x при a = 1: в более общем случае соответствующий ряд Тейлора для ln x в произвольной ненулевой точке a это:
Ряд Маклорена для показательной функции → e x = 1 + x + x 2 /2! + x 3 /3! + x 4 /4! + x 5 /5! +…
ПримерE 2 = 2,71828… × 2,71828… = 7,389056…
. 0220 Terms Result 1+2 3 1+2+ 2 2 /2! 5 1+2+ 2 2 /2!+ 2 3 902! 6,3333… 1+2+ 2 2 /2!+ 2 1 3 225 2 4 /4! 7 1+ 2+ 2 2 /2!+ 2 3 /3!+ 2 3 /3! /5! 7.2666… 1+ 2+ 2 2 /2!+ 2 2 /2! 2 2 3 /2! 26 /2 226 /2 ! 2 /2 /2! 26 /2! 26 /2 ! 2 /29226 /2 /2 /2! 2 /2! 2 /2! 2 /2! /5!+ 2 6 /6! 7. 3555… 1+2+ 2 2 /2!+2 3 /3!+2 4 /4!+2 5 /5!+2 6 /6!+2 7 /7! 7.3809… 1+ 2+ 2 2 /2!+ 2 2 /2! 2 2 710 /2 2226 /2! 2 1226 /2 ! 4 2226 /2! 2 3 /2! 26 /2 2 /2! /5!+ 2 6 /6!+ 2 7 /7!+ 2 8 /8! 7,3873…
Более высокая степень полинома Тейлора дает лучшее приближение к функции в точке x, если ряд Тейлора сходится к функции в точке x.
Метод Ньютона и нахождение корней- Метод Ньютона — это итерационный метод аппроксимации решений (нахождения корней) уравнений. Если f — положительно определенная квадратичная функция, метод Ньютона позволяет найти минимум функции непосредственно на практике, чего почти никогда не происходит. Вместо этого метод Ньютона можно применять, когда функция f не является истинно квадратичной, но ее можно локально аппроксимировать как положительно определенную квадратичную.
Подробнее о Метод Ньютона-Рафсона
В заключениеТеорема Тейлора
Теорема Тейлора используется для разложения бесконечных рядов, таких как sing(x), log(x) и т. д. Так что мы можем аппроксимировать значения этих функций или многочленов.
В высшей математике теорема Тейлора дает аппроксимацию k-кратной дифференцируемой функции вокруг заданной точки с помощью a с k-n th 9Полином Тейлора порядка 0271. Для аналитических функций полиномы Тейлора в данной точке являются усечениями конечного порядка ее ряда Тейлора, который полностью определяет функцию в некоторой точке. Существует несколько вариантов различных ситуаций, и некоторые из них содержат явные оценки погрешности аппроксимации функции ее полиномом Тейлора.