Задачи высшей математики с Maxima
3.6 Методы теории приближения в численном анализе
Курс высшей математики для студентов технических вузов содержит первичные основы численных методов как свою составную часть. Для специалистов инженерного профиля крайне важным представляется одновременное нахождение решения в замкнутой аналитической форме и получение численных значений результата. Представление функции в виде степенного ряда позволяет свести изучение свойств приближаемой функции к более простой задаче изучения этих свойств у соответствующего аппроксимирующего полиномиального разложения.
Этим объясняется важность всевозможных аналитических и численных приложений полиномиальных приближений для аппроксимации и вычисления функции. Замена функций на их степенные разложения и полиномиальные приближения помогает изучению пределов, анализу сходимости и расходимости рядов и интегралов, приближённому вычислению интегралов и решению дифференциальных уравнений. Степенные ряды и разложения по многочленам Чебышёва широко используются при вычислении значений функции с заданной степенью точности. Они являются эффективным вычислительным средством при решении широкого круга научно-технических задач.
3.6.1 Приближённое вычисление математических функций
Пусть функция задана на интервале
и нам требуется вычислить значение функции
при
с заданной точностью
.
Предположив, что функция в интервале
раскладывается в степенной ряд






Для погрешности приближения мы имеем выражение в виде остатка ряда


Для знакопеременных рядов с последовательно убывающими членами

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



Многочленами Тейлора для функции , порядка
соответственно, называются частные суммы ряда Тейлора

Если мы распишем эту формулу, то получим следующее выражение

Формула Тейлора для функции — это представление функции в виде суммы её многочлена Тейлора степени
и остаточного члена. Другими словами это называют разложением функции
по формуле Тейлора в окрестности точки
. Если действительная функция
одного переменного имеет
производных в точке
, то её формула Тейлора имеет вид




Получаем, что

Если функция дифференцируема
раз в некоторой окрестности точки
, то остаточный член в этой окрестности может быть записан в форме Лагранжа


Заметим, что при выражение для
совпадает с формулой Лагранжа конечных приращений для функции
.
Формула Тейлора для многочленов. Пусть имеется произвольный многочлен .. Тогда при любых
и
имеет место следующая формула:

Рядом Маклорена для функции называется её ряд Тейлора в точке 0 начала координат, то есть таким образом это степенной ряд вида

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




Приведём разложения по формуле Маклорена для основных элементарных математических функций:

В Maxima существует специальная команда, позволяющая вычислять ряды и многочлены Тейлора: . Здесь
— разлагаемое в ряд выражение,
— значение
, в окрестности которого выполняется разложение (по степеням
),
— параметр, указывающий на порядок разложения и представленный целым положительным числом. Если
указывается просто в виде имени переменной, то производится вычисление ряда и многочлена Маклорена.
Пример: Найти многочлен Тейлора 9-ой степени экспоненциальной функции в начале координат.
(%i29) taylor(exp(x),x,0,9);

Многочлены Тейлора дают наиболее точную аппроксимацию приближаемой функции вблизи точки . По мере удаления от точки
погрешность возрастает. Для приближения приходится использовать многочлены Тейлора более высокой степени, но иногда и они не помогают в связи с накоплением вычислительной погрешности.
Интересно проследить этот процесс графически. Пакет Maxima предоставляет такую возможность с помощью команды .
Пример: Найти число с точностью до 0.001. Положим
. Тогда чтобы вычислить значение
, необходимо выполнить серию команд:
Строим разложение функции в ряд Тейлора (до 8 порядка включительно)
(%i1) t:taylor(exp(x),x,0,8);

Вычисляем частичную сумму ряда при :
(%i2) ev(t,x=1);

Значение в форме с плавающей точкой находим, используя функцию
:
(%i3) float(%);

Интересно провести вычисления и сравнить результаты, получающиеся для числа при различных степенях используемого многочлена Тейлора. Получаются следующие результаты:

Отсюда видно, что значение e с точностью 0.001 вычисляется при использовании многочлена Тейлора степени не ниже 7-ой. Также следует, что число e c точностью 0.000001 или что то же самое вычисляется помощи с многочлена Тейлора 9-ой или более высокой степени.
Оценку остатка ряда произведём по формуле остаточного члена ряда Маклорена








Наряду с командой для разложения функций и выражений в ряды используется команда
(выражение,
) (строится разложение для заданного выражения по переменной
в окрестности
). Результатом выполнения команды
может быть построение её ряда Тейлора в общей форме, например:
(%i1) powerseries(sin(x),x,0);

(%i2) powerseries(sin(x^2),x,0);

Для разложения в ряд Тейлора функции нескольких переменных используется функция с указанием списка переменных в форме:
Пример: Найти многочлен Тейлора 6-ой степени от функции
.
(%i1) f(x):=x/(1+x);

(%i2) powerseries(f(x),x,0);

(%i3) taylor(f(x),x,0,6);

Пример: Найти разложение функции в ряд Маклорена.
(%i6) taylor(acos(x),x,0,12);

Пример: Найти разложение функции по формуле Тейлора 5-ой степени в окрестности точки
.
(%i7) taylor(exp(x)+1,x,2,5);

Пример: Найти разложение гиперболического косинуса в ряд Маклорена 8-ой степени.
taylor(cosh(x),x,10);
Получаем

Заметим, что у аналитических функций их разложения в ряд Тейлора существуют всегда. Приведём пример функции, не имеющей разложения в ряд Тейлора и для которой команда не даёт результата:
.
(%i8) taylor(1/x^{2}+x,x,0,7);

В результате выполнения команды или
получаем исходное выражение
. В то же время в окрестности других точек, например точки
, формула Тейлора вычисляется
(%i13) taylor(1/x^{2}+x,x,2,2);

(%i14) ratsimp(%);

Пакет Maxima даёт возможность как нахождения разложений математических функций в ряды Тейлора, так и графической интерпретации точности этих разложений. Подобная графическая визуализация помогает пониманию сходимости многочленов Тейлора к самой приближаемой функции.
Рассмотрим примеры такой графической визуализации для функции . Сравним графики самой функции
с графиками её разложений Тейлора различных степеней.
Пример: Сравним функцию c её разложением Маклорена 4-ой степени на интервале [-5, 5].
Построим разложение
(%i15) appr:taylor(cos(x),x,0,5);

Построим график (экранная форма, в формате wxMaxima)
(%i16) wxplot2d([appr,cos(x)], [x,-5,5], [y,-1.1,1.1], [nticks,100]);
Выведем график в файл:
(%i17) plot2d([appr,cos(x)], [x,-5,5], [y,-1.1,1.1], [gnuplot_preamble, "set grid;"], [gnuplot_term, ps], [gnuplot_out_file, "appr.eps"])$
Легко заметить, что при небольших значениях графики самой функции и приближающего её разложения практически совпадают, однако при возрастании
начинают отличаться.
Пример: Сравним функцию с её разложением Маклорена 8-ой степени на интервале [-5, 5]. Сопоставим результат с предыдущим примером.
Построим разложение более высокой степени:
(%i18) appr1:taylor(cos(x),x,0, 9);

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