Задачи высшей математики с Maxima
3.6.2 Приближённое вычисление определённых интегралов
Степенные ряды эффективны и удобны при приближённом вычислении определённых интегралов, не выражающихся в конечном виде через элементарные функции. Для вычисления подинтегральная функция
раскладывается в степенной ряд. Если
![f(x)=a_{0}+a_{1}x+a_{2}x^{2}+\dots+a_{n}x^{n}+\dots,
\ \vert x\vert<R,](/sites/default/files/tex_cache/ca8ea2313beb6c041e4cccf6d2fbfced.png)
![|x| < R](/sites/default/files/tex_cache/0b79f3cf17aa6c8df8e69d56346b0197.png)
![\int_{0}^{x}f(t)dt](/sites/default/files/tex_cache/b8007dc34f16059d5122de853e2da0b3.png)
![\int_{0}^{x}f(t)dt=a_{0}x+a_{1}\frac{x^{2}}{2}+
a_{2}\frac{x^{3}}{3}+\dots+a_{n}\frac{x^{n+1}}{n+1}+\dots.](/sites/default/files/tex_cache/ba01b526ebd1727b583f9de17b8cc3c5.png)
Пример: Приближённое вычисление интеграла вероятностей
![\phi(x)=\frac{1}{\sqrt{2\pi}}\int_{-x}^{x}e^{-t^{2}/2}dt=
\frac{2}{\sqrt 2\pi }\int_{0}^{x}e^{-t^{2}/2}dt.](/sites/default/files/tex_cache/41fb4e0b44406578ddada6eebfa60742.png)
Так как
![e^{x}=1+x+\frac{x^{2}}{2!}+\frac{x^{3}}{3!}+\dots, \
\vert x\vert <\infty ,](/sites/default/files/tex_cache/14a3219009615ef95896b02fca328463.png)
![e^{-x^{2}/2}=1-\frac{x^{2}}{2}+
\frac{x^{4}}{2^{2}2!}-\frac{x^{6}}{2^{3}3!}+\dots](/sites/default/files/tex_cache/4f1eabce2ac79313d6da2e20b15bd3ee.png)
Подставив этот ряд под знак интеграла и произведя почленное интегрирование получаем
![\phi(x)=\frac{2}{\sqrt{2\pi}}\int_{0}^{x}e^{-t^{2}/2}dt=
\frac{2}{\sqrt{2\pi}}\left[x-\frac{x^{3}}{3\cdot 2}+\frac{x^{5}}
{5\cdot 2^{2}\cdot 2!}-\frac{x^{7}}{7\cdot 2^{3}\cdot 3!}+\dots\right]](/sites/default/files/tex_cache/e86d7753cd0478863c9d6b87d6ac3779.png)
Так как это знакопеременный ряд с последовательно убывающими слагаемыми, то погрешность вычисления интеграла последовательно убывает и не превышает последнего слагаемого.
Рассмотрим пример приближённого представления интеграла в виде полинома некоторой степени в том случае, когда он не вычисляется в замкнутой аналитической форме.
Пример: Вычислить , оценить достигнутую точность
Используем разложение подинтегральной функции в ряд. Подставляя в полученное выражение , вычисляем искомый интеграл. Так как исследуемый ряд знакопеременный, погрешность замены бесконечной суммы конечным выражением по абсолютной величине не превышает первого отброшенного члена.
(%i1) f(x):=exp(-x^2/2);
![f\left( x\right) :=exp\left( \frac{-{x}^{2}}{2}\right) \leqno{(\%o1) }](/sites/default/files/tex_cache/3a774847c085b220c85c2ea567c43b5e.png)
(%i2) taylor(f(x),x,0,8);
![1-\frac{{x}^{2}}{2}+\frac{{x}^{4}}{8}-\frac{{x}^{6}}{48}+\frac{{x}^{8}}{384}+\dots\leqno{(\%o2) }](/sites/default/files/tex_cache/bc78b4dd37b98d3cbbe3f1f6fd8f16b2.png)
Интегрируя в пределах от 0 до 1, получаем числовой результат:
(%i3) integrate(%,x,0,1);
![\frac{103499}{120960}\leqno{(\%o3) }](/sites/default/files/tex_cache/55af9851d7290ea0ebd18b6a76d5772a.png)
(%i4) float(%);
![0.85564649470899\leqno{(\%o4) }](/sites/default/files/tex_cache/09321491ee93c29905282587b9f28238.png)
Точность расчёта оцениваем, интегрируя в пределах от 0 до :
(%i5) integrate(%o2,x,0,a);
![\frac{35\,{a}^{9}-360\,{a}^{7}+3024\,{a}^{5}-20160\,{a}^{3}+120960\,a}{120960}\leqno{(\%o5) }](/sites/default/files/tex_cache/5a9803ff8c5012c644a9e34880aca59e.png)
При находим:
(%i6) expand(%);
![\frac{{a}^{9}}{3456}-\frac{{a}^{7}}{336}+\frac{{a}^{5}}{40}-\frac{{a}^{3}}{6}+a\leqno{(\%o6) }](/sites/default/files/tex_cache/43d96adc0a0a57a9b050fd146f864f16.png)
(%i7) float(1/3456);
![2.8935185185185184\,{10}^{-4}\leqno{(\%o7) }](/sites/default/files/tex_cache/e57e5fbd978273ac8da312d4603f0d79.png)
Таким образом, точность расчёта значения интеграла , не хуже 0,0003. Окончательно
![\displaystyle\int_{0}^{1}e^{-x^{2}/2}dx = 2.8935 \pm 0.0003](/sites/default/files/tex_cache/db80e1eaddb7c046ed520cf4139a2d7d.png)
3.7 Преобразование степенных рядов
Пакет Maxima позволяет не только строить разложение различных функций в степенные ряды, но и представления их в виде дробнорациональной функции (аппроксимация Паде) или цепной дроби.
Аппроксимацией Паде для функции , заданной степенным рядом, называется такая дробно-рациональная функция
, чьё разложение в степенной ряд совпадает со степенным рядом
с точностью до коэффициента при
.
Паде-аппроксиммант задаётся значением функции в заданной точке и значениями её производных в этой же точке. Эта же информация может послужить основой для степенного ряда, так в чём же отличие? Главное отличие в том, что задав
член степенного ряда, мы отбрасываем остальные члены ряда, приравнивая их к нулю. Паде-аппроксимант не является полиномом, поэтому задав
членов разложения Паде-аппроксиманта в степенной ряд, мы в неявной форме задаём и остальные члены.
Чему эти дополнительные члены будут равны? Это вопрос, на который нет однозначного ответа. В одних случаях они позволят нам построить более точную аппроксимацию, в других — наоборот могут ухудшить положение. Нет способа, который позволил бы сказать, насколько точна окажется Паде-аппроксимация и в какой окрестности и с какой точностью можно получить результаты.
Ещё одним недостатком этого метода является то, что он требует информации не о значениях функции, а о её производных высших порядков, которые могут быть значительно большими по абсолютной величине, чем сами значения функции.
Паде-аппрокимация наиболее эффективна для функций, имеющих полюса на комплексной плоскости в окрестностях точки разложения. Например, функция непрерывна на действительной оси, но имеет полюса на комплексной плоскости. Поэтому она неэффективно аппроксимируется степенным рядом (до шестой степени включительно), но хорошо аппроксимируется по Паде со степенями числителя и знаменателя равными 4 и 2.
Функция , представленная в пакете Maxima, аппроксимирует отрезок ряда Тейлора, содержащий слагаемые до
-го порядка включительно, дробно-рациональной функцией. Её аргументы — ряд Тейлора, порядок числителя n, порядок знаменателя
. Разумеется, количество известных коэффициентов ряда Тейлора должно совпадать с общим количеством коэффициентов в дробно-рациональной функции минус один, поскольку числитель и знаменатель определены с точностью до общего множителя.
Синтаксис вызова функции :
pade (ряд Тейлора, степень числителя, степень знаменателя)
Вместо ряда Тейлора может использоваться ряд Лорана. В этом случае степени числителя и знаменателя могут быть и бесконечными (). В этом случае рассматриваются все рациональные функции, суммарная степень которых меньше или равна длине степенного ряда.
Пример:
(%i1) t:taylor(exp(x),x,0,3);
![1+x+\frac{{x}^{2}}{2}+\frac{{x}^{3}}{6}+\dots\leqno{(\%o1) }](/sites/default/files/tex_cache/669dae0c80048b614d46ad1a0dea4638.png)
(%i2) pade(t,1,2);
![[\frac{2\,x+6}{{x}^{2}-4\,x+6}]\leqno{(\%o2) }](/sites/default/files/tex_cache/4954312eb90dcfedc85101e21190b059.png)
(%i3) taylor(sin(x)/x,x,0,7);
![1-\frac{{x}^{2}}{6}+\frac{{x}^{4}}{120}-\frac{{x}^{6}}{5040}+\dots\leqno{(\%o3) }](/sites/default/files/tex_cache/834474b45ef7d60a671819d370ca2860.png)
(%i4) pade(%,2,4);
![[-\frac{620\,{x}^{2}-5880}{11\,{x}^{4}+360\,{x}^{2}+5880}]\leqno{(\%o4) }](/sites/default/files/tex_cache/4e50a26200c5d57312e69e59449a9a55.png)
(%i5) taylor (1/(cos(x) - sec(x))^3, x, 0, 5);
![-\frac{1}{{x}^{6}}+\frac{1}{2\,{x}^{4}}+\frac{11}{120\,{x}^{2}}-\frac{347}{15120}-\frac{6767\,{x}^{2}}{604800}-\frac{15377\,{x}^{4}}{7983360}+\dots\leqno{(\%o5) }](/sites/default/files/tex_cache/5a4a2467ed3b6b8d6832f586f465a938.png)
(%i6) pade(%,3,inf);
![[-\frac{120}{41\,{x}^{10}+60\,{x}^{8}+120\,{x}^{6}},\frac{8806092\,{x}^{2}-16847160}{1353067\,{x}^{10}-382512\,{x}^{8}+16847160\,{x}^{6}}]\leqno{(\%o6) }](/sites/default/files/tex_cache/27f325ebcfe303b34a82110a3cff6d22.png)
Более специфичной является функция , которая рассчитывает коэффициенты цепной дроби, аппроксимирующей заданное выражение. Синтаксис вызова —
. Выражение
должно состоять из целых чисел, квадратных корней целых чисел и знаков арифметических операций. Функция возвращает список коэффициентов (непрерывная дробь
представляется списком [
]). Флаг
определяет количество периодов цепной дроби. Изначально установлено значение 1. Функция
преобразует список (как правило выдачу функции
) в собственно цепную дробь вида
).
Примеры использования функций и
:
(%i1) cf ([1, 2, -3] + [1, -2, 1]);
![[1,1,1,2]\leqno{(\%o1) }](/sites/default/files/tex_cache/118db328675d3ebbd1bf7e38414c7177.png)
(%i2) cfdisrep (%);
![1+\frac{1}{1+\frac{1}{1+\frac{1}{2}}}\leqno{(\%o2) }](/sites/default/files/tex_cache/9116c07fb3c7bc09ab887a6fcbfe762c.png)
(%i3) cflength: 3;
![3\leqno{(\%o3) }](/sites/default/files/tex_cache/f7c80e643696d9989ebab97733c00f2b.png)
(%i4) cf (sqrt (3));
![[1,1,2,1,2,1,2]\leqno{(\%o4) }](/sites/default/files/tex_cache/701789772e01f88a90cbe9ac8ad9d552.png)
(%i5) cfdisrep(%);
![1+\frac{1}{1+\frac{1}{2+\frac{1}{1+\frac{1}{2+\frac{1}{1+\frac{1}{2}}}}}}\leqno{(\%o5) }](/sites/default/files/tex_cache/901b95a949164c9f4adf1acad63e6f5e.png)
(%i6) ev (%, numer);
![1.731707317073171\leqno{(\%o6) }](/sites/default/files/tex_cache/8e795b33f44a849d3a0e2680e7cd05e6.png)