Итак, вычисление f(х) по ее интегральному представлению совершенно не эффективно. Наша цель состоит в разработке процедуры вычислений, которая дала бы 6 точных цифр результата в интервале [0..4] и требовала, по возможности, наименьшего числа арифметических операций для каждого вычисления. Втайне не вредно помечтать о том, чтобы после аппроксимации время вычислений уменьшилось бы хотя бы в несколько раз. Что получится на деле, вы увидите чуть позже. А пока войдем в дебри аппроксимации.
5.10.2. Аппроксимации рядом Тейлора
Начнем с аппроксимации функции хорошо известным рядом Тейлора степени 8 относительно середины интервала (точки с х= 2):
> s := map(evalf, taylor(f(x), х=2, 9));
s := 0.4065945998 - 0.1565945998(x-2) + 0.00209790791(х-2) 2+ 0.01762626393(х-2) 3- 0.006207547150(x-2) 4+ 0.00057335662(x-2) 5+ 0.00024331163(x-2) 6- 0.00010010534(x-2) 7+ 0.00001414211(х-2) 8+ O((x-2) 9)
> TaylorApprox := convert(s, polynom):
Такой ряд позволяет использовать для вычислений только арифметические действия, что само по себе здорово! Для удобства преобразуем аппроксимацию в функцию, чтобы она соответствовала форме, указанной для первоначальной функции f(х). Тогда мы сможем построить график кривой ошибок для аппроксимации полиномом Тейлора:
> TaylorApprox := unapplу(TaylorApprox, х);
TaylorApprox := x→0.7197837994 - 0.1565945998x + 0.00209790791(x-2) 2+ 0.01762626393(x-2) 3- 0.006207547150(x-2) 4+ 0.00057335662(x-2) 5+ 0.00024331162(x-2) 6- 0.00010010534(x-2) 7+ 0.0000141421(x-2) 8
Кривая ошибок для аппроксимации полиномом Тейлора строится командой
> plot(f - TaylorApprox, 0..4, color=black);
и имеет вид, представленный на рис. 5.25. Эта кривая нас, прямо скажем, не слишком радует, поскольку погрешность в сотни раз превышает заданную.
Рис. 5.25. Кривая погрешности при аппроксимации рядом Тейлора
Типичное свойство аппроксимации рядом Тейлора состоит в том, что ошибка мала вблизи точки разложения и велика вдали от нее. В данном случае, самая большая ошибка имеет место в левой оконечной точке. Чтобы вычислить значение ошибки в точке х=0, что ведет к делению на нуль (см. определение для f(х)), мы должны использовать значение предела:
> maxTaylorError := abs(limit(f(x), х=0) - TaylorApprox(0));
maxTaylorError := 0.0015029608
Итак, в самом начале наших попыток мы потерпели полное фиаско, получив совершенно неприемлемое значение погрешности в сотни раз больше заданной. Но отчаиваться не стоит, ибо, как говорят, «даже у хорошей хозяйки первый блин — комом».
5.10.3. Паде-аппроксимация
Теперь опробуем рациональную аппроксимацию Паде (Pade) функции f(x) степени (4,4). Приближения, по этому разложению, будут аппроксимировать функцию более точно, и потому ошибки округления в вычислениях станут более заметными. Поэтому зададим вычисления с двумя дополнительными знаками точности:
> Digits := 12:
> s := map(evalf, taylor(f(x), x=2, 9)):
> PadeApprox := pade(s, x=2, [4,4]);
PadeApprox := (0.341034792604 + 0.0327799035348x - 0.00612783638188(x-2) 2+ 0.00452991113636(x-2) 3- 0.000431506338862(x-2) 4)/( 0.068484906786 + 0.465757546607x+ 0.159149610837(x-2) 2+ 0.0266813683828(x-2) 3+ 0.00346967791444(x-2) 4)
> PadeApprox := unapply(PadeApprox, x):
Кривая ошибки для интервала [0,4] строится командой
> plot(f - PadeApprox, 0..4,color=black);
и имеет вид, показанный на рис. 5.26.
Рис. 5.26. Кривая погрешности при Паде-аппроксимации степени (4.4)
Как и при аппроксимации рядом Тейлора, ошибка здесь мала вблизи точки разложения и велика вдали от нее. Мы снова видим из графика, что для указанной функции, самая большая ошибка — в левой оконечной точке. Однако, максимальная ошибка в Паде-аппроксимации уже на порядок меньше, чем при аппроксимации полиномом Тейлора:
> maxPadeError := abs(limit(f(x), x=0) - PadeApprox(0));
maxPadeError:=0.000353777322
Это успех, показывающий, что мы на верном пути. Но, пока, погрешность остается слишком большой по сравнению с заданной.
5.10.4. Аппроксимация полиномами Чебышева
Знатоки техники аппроксимации знают, что лучшие приближения на заданном интервале могут быть получены, используя разложение в ряд Чебышева. Это связано с тем, что ортогональные полиномы Чебышева позволяют получить аппроксимацию, погрешность которой в заданном диапазоне изменения аргумента распределена более равномерно, чем в предшествующих случаях. Выбросы погрешности на краях интервала аппроксимации в этом случае исключены
Читать дальше
Конец ознакомительного отрывка
Купить книгу