Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Свод.doc
Скачиваний:
119
Добавлен:
08.03.2016
Размер:
2.1 Mб
Скачать

16.3. Конвертирование рядов и аппроксимация функций полиномами.

Разложения, приведённые в 16.2, не являются вполне определёнными выражениями, т. к. содержат неизвестный остаточный член. Для сходящихся рядов этот член пренебрежимо мал и м. б. отброшен, когда взято достаточное число первых членов ряда. Иногда этот член препятствует дальнейшему использованию разложения. Для избавления от остаточного члена применяется оператор convert (см. 4.6), позволяющий приближённо представить (аппроксимировать) ряд многочленом с требуемой точностью.

Примеры:

1. > S:=series(exp(a*x+b*x^2), x=1, 4); P:=convert(S, polynom);

> S1:=series(exp(x), x=0, 6); P1:=convert(S1, polynom): S2:=series(exp(-x), x=0, 6); P2:=convert(S2, polynom): CH:=(P1+P2)/2; SH:=(P1-P2)/2;

Аппроксимация полиномами гиперболических косинуса и синуса до 3-го приближения, (тогда как первоначальные разложения выполнены с точно- стью до 6-го члена). Порядок аппроксимации оказался меньше заказанного приближения в разложении. Другой пример:

> CH8:=taylor(cosh(x), x=0, 8);

Выше заказано разложение с точностью 8 членов, Maple вывел 4 (кроме остаточного), т. к. нечётные члены = 0.

Разложение не может быть вычислено.

> evalf(subs(x=1/4, CH8));

Error, invalid substitution in series

Maple отказывается вычислять, т. к. не знает остаточного члена. Для вычисления используем преобразование.

> P8:=convert(CH8, polynom); evalf(subs(x=1/4, P8));

Разложение не представляется графиком, а его конвертация представляется

> plot(CH8, x=-1..1);

Warning, unable to evaluate the function to numeric values in the region; see the plotting command's help page to ensure the calling sequence is correct. Plotting error, empty plot.

> plot(P8, x=-1..1, 0..1.6);

График 16.1. График полинома P8, полученного конвертированием ряда CH8.

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

>f:=x^2*exp(x^2);s1:=taylor(f,x=0,2):s2:=taylor(f,x=0,3);p2:=convert(%,polynom);s3:=taylor(f,x=0,4):s4:=taylor(f,x=0,5);p4:=convert(%,polynom);s5:=taylor(f,x=0,6):s6:=taylor(f,x=0,7);p6:=convert(%,polynom);s7:=taylor(f,x=0,8):s8:=taylor(f,x=0,9);p8:=convert(%,polynom);s9:=taylor(f,x=0,10):

Выше не выведены на экран разложения нечётного порядка, которые повторяют предшествующие разложения чётного порядка, либо дают пренебрежимый остаточный член.

> plot([p2,p4,p6,p8,f], x=0..1.4, -1..1.5, style=[line,line,line,line,point], color=[black,red,blue,green,black]);

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

>

16.3.1. Приложение аппроксимаций к решению трансцендентных уравнений

Иногда решение ТУ даёт неудобные аналитические выражения. Тогда возможно получить приближённое, но более удобное выражение с помощью аппроксимации. Пример:

> eqs1:={y=x^2, y=exp(-x)}; solve(eqs, {x, y}); S1:=evalf(%);

(есть комплексные корни). Аппроксимируем экспоненту полиномом.

> Y:=convert(taylor(exp(-x), x=0, 5), polynom);

> eqs2:={y=x^2, y=Y}; solve(eqs2, {x, y}): S2:=evalf(%);

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

>