Дьяконов В.П. Maple 9.5 и 10 в математике, физике и образовании (1185901), страница 51
Текст из файла (страница 51)
Вы сразу заметите, что график строится медленно, поскольку в каждой из множества его точек системе Мар]е приходится вычислять значение интеграла с псдынтегральной функцией, содержащей довольно каверзную гамма-функцию. И делает это Мар1е по сложному и медленному алгоритму адаптивного численного интегрирования. Итак. вычисление 7(х) по ее интегральному представлению совершенно не эффективно. Наша цель состоит в разработке процедуры вычислений, которая дала бы 6 точных цифр результата в интервале ]0..4) и требовала, по возможности, 559 5.9. Выбор аннрокс<мации для сложной 9)ункции 09 04 0З 02 Рис. 5.24.
График аппроксимирусмои фуикпии наименьшего числа арифметических операций для каждого вычисления. Втайне не вредно помечтать о том, чтобы после аппроксимации время вычислений уменьшилось бы хотя бы в несколько раз. Что получится на деле, вы увидите чуть позже. А пока войдем в дебри аппроксимации. 5.10.2. Аппроксимации рядом Тейлора Начнем с аппроксимации функции хорошо известным рядом Тейлора степени 8 относительно середины интервала (точки с х = 2): > а:= вар(еча1г, Сау1ог(г(х), х=2, 9) ); х >>0 4065945998-0.156594599Цх — 2) + 00020979079 Кх — 2) + О 0176262639Кх — 2)' — О 006207547 ! 5(< х — 2)'+ О 00057335662х — 2)~ + О 0002433116Кх — 2) — О 0001001053ч х — 2)' + О 0000141421 Кх — 2)а + 0((х-2) ) > Тау1огйрргох:= сопчегг(а, ро1упов) Такой ряд позволяет использовать для вычислений только арифметические действия.
что само по себе здорово! Для удобства преобразуем аппроксимацию в функцию, чтобы она соответствовала форме, указанной для первоначальной функции у(х). Тогда мы сможем построить график кривой ошибок для аппроксимации полиномом Тейлора: > Тау1огйрргох := ипарр1у(тау1огйрргох, х)г > Тау1огйрргох: опарр1у(Тау1огйрргох, х) < Тау1опйрргох:х х -+ 0.7197837994- О. 1565945998г+ 0.0020979079 Кх — 2) + О 0176262639К х — 2) — 000620754715(< х — 2)" + О 0005733566К х — 2)~ + 0 ООЮ4331 162 х — 2) — О 0001001053ч х — 2) + О 0000141421 Кх — 2)" Кривая ошибок для аппроксимации полиномом Тейлора строится командой > р1ос <с — тау1огйрргох, О..
4, со1ог=Ь1асх) < и имеет вид, представленный на рис. 5.25. Эта кривая нас, прямо скажем, не слишком радует, поскольку погрешность в сотни раз превышает заданную. Типичное свойство аппроксимации рядом Тейлора состоит в том, что ошибка мала вблизи точки разложения и велика вдали от нее. В данном случае, самая большая ошибка имеет место в левой оконечной точке. Чтобы вычислить значение 360 Глава 5. Анализ (рункциональных зависимосгней и обработка данных 1 2 з 4 о -0 ОО)2 Ф 0064 о ихв .О 0(08 -О СО! -О 0012 .О 0014 Рис. 5.25. Кривая погрешности при вппроксимвпии ряаом Тейлора ошибки в точке х = О, что ведет к делению на нуль (см. определение для Г(х)), мы должны использовать значение предела: > вахтву1огвггог: = аъв ( 1хвхг (г (х], х=о) — тау1оглрргох (0) ) г так Тау(огЕггог:= 0.00 (5029608 Итак, в самом начале наших попыток мы потерпели полное фиаско.
получив совершенно неприемлемое значение погрешности в сотни раз больше заданной. Но отчаиваться не стоит, ибо, как говорят, «даже у хорошей хозяйки первый блин — комом», 5.10.3. Паде-аппроксимация Теперь опробуем рациональную аппроксимацию Паде (Рас]е) функции Г(х) степени (4,4). Приближения, по этому разложению, будут аппроксимировать функцию более точно, и потому ошибки округления в вычислениях станут более заметными. Поэтому зададим вычисления с двумя дополнительными знаками точности: > Ощхсв:= 12: > в:= вар(еха1Г, Сау1ог(Г(х), х=2, 9) ]: > Рабелрргох:= рабе(в, х=2, (4,4]) г Ребеарргох:= (О 341034792604 + 0.0327799035348 .х — 0.00612783638188 (х — 2)- + 000452991113636 (г — 2)' — 0000431506338862 (х — 2)') /( 0.068484906786 + 0.465757546607 х + 0 159149610837 (х- 2) + 0.0266813683828 (х — 2) + 0.0034696779!444 (х — 2)') > РабеАрргох := ппарр1у(РабеАрргох, х]: Кривая ошибки для интервала (0,4) строится командой > р1ог(г — РабеАрргох, 0..4,со1ог=Ъ1аск]г и имеет вид, показанный на рис.
5.26. ОССОЗС 0 ССОЗ ООС025 0 С(02 ОСС015 00(01 вега Рис 5.26. Кривая погрешности прп П.ше-аппроксимации степени (4.41 5.9. Выбор аппроксимации длп сложной (])рпкции 361 Как и при аппроксимации рядом Тейлора, ошибка здесь мала вблизи точки разложения и велика вдали от нее. Мы снова видим из графика. что для указаннои функции, самая большая ошибка — в левой оконечной точке. Однако, максимальная ошибка в Пале-аппроксимации уже на порядок меньше, чем при аппроксимации полиномом Тейлора: > пахраг]евггог:= аЬв ( 11а1С (г (х), х=О) — Раг)елрргох(0) ) г пгохрог]еЕггог:= 0.000353777322 Это успех, показываюший, что мы на верном пути.
Но, пока, погрешность остается слишком большой по сравнению с заданной. 5.10.4. Аппроксимация полииомами Чебышева Знатоки техники аппроксимации знают, что лучшие приближения на заданном интервале могут быть получены, используя разложение в ряд Чебышева. Это связано с тем, что ортогональные полиномы Чебышева позволяют получить аппроксимацию, погрешность которой в заданном диапазоне изменения аргумента распределена более равномерно, чем в предшествуюших случаях.
Выбросы погрешности на краях интервала аппроксимации в этом случае исключены. Разложим функцию Ях) на 10,41 в ряд Чебышева с точностью 1*10'. Это означает, что все члены с коэффициентами меньше, чем эта величина, будут опушены. Такая точность обеспечивается полиномом 13 степени: > еха1г( 1гт1Г(й(х], х=О) ) > гргоо := ргоо(х) 16 х=О Гьео 0.5 е1ве ена1г(Е[х]] гх епг): > СьеЬАрргох := оьеЬувьеп(аргос, х=0..4, 1В-В)] СлеЬАрргох:=0.37920627427 О, †- 1 -0.20263281399 1. — — 1 — 1 'г — г -0.036906483643 2, — — 1 +0.037013143154 3, — — 1 — г — г — 0.00888944143050 ~ 4, — — 1 ! — 0.00014978933663о ~ 5, — — 1 х х ~ '2 ~ '2 + 0.000642974620794 б. — — 1 — 0.000170677949427 ~ 7, — — 1 1'г -( '2 + 0.0000126917283881 8, — — 1 + 0.439874928738 1О' ~9, — — 1 ('г '2 — 0.156284139876 10' 10, — — 1 ]+ О 204980540664 10 ~ 11, — — ! 2 '2 + 0.456254277778 10 12, — — 1 — 0.694323955261 10 ' 13.
— — 1 г 2 Можно проверить для этого примера, что кривая ошибки при аппроксимации рядом Чебышева колеблется. Поскольку ряд Чебышева был оборван на члене степени 8 (как и полином ряда Тейлора), то максимальная ошибка оказалась все еше больше заданной. Для последуюших вычислений, полезно заметить, что мы можем использовать процедуру для нахождения численных значений Ях), которая будет намного эффективнее, чем прямое определение, которое требует численного интегрирова- 362 Глава 5.
Анализ функа(канальных зависимостей и обработка данных ния для каждого значения х. А именно, определим процедуру численной оценки, основанную на разложении в ряд Чебышева степени 13, так как максимальная ошибка при такой аппроксимации меньше, чем 10", и обеспечивает для нашей цели достаточную точность. Мы определим полином Чебышева Т(х) из пакета ог[))оро(у, и затем лля эффективной оценки преобразуем его в форму Горнера: > Г: = Ьогсеггоге ( ееа1 (асье (Т=огкьоро1у [Т], Сьеьлрргох)! ); Р:= О 499999998610 + (0.192405358503 + (-ОЛ 63971754264 + (-00083861432817 + (0.0277082269676 + (-0.00593172541573 + (-0.00132728874257 + ( 0.000910057654178 + (-0.000180351181100 + (0.57685696534 10 ' + ( 0.448885653549 10' + (-0.9902745561!6 10 + (0.925433855729 10 7 — 0.347161977631 10 ~ х) х) х) х) х) х) к) х) х) х) х) х) к > Г:= ссарр1у(Г, х): Схема Горнера минимизирует число арифметических операций, заменяя операции возведения в степень операциями последовательного умножения.
5.10.5. Аппроксимация Чебышева-Паде Теперь рассмотрим еще более точную рациональную аппроксимацию Чебышева-Паде. Это такая рациональная функция г !)и, и) (х) с числителем степени и) и знаменателем степени и такой же, как и для разложения в ряд Чебышева. Функция г 1)п, и) (х) согласуется с разложения в ряд ряда Чебышева ((х) членом степени и)+и. Мы вычислим аппроксимацию Чебышева-Паде степени (4, 4), подобную обычной Паде-аппроксимации, успешно выполненной ранее: > СЬеЬРа4)ехрргох := сьеьраое(Г, 0..4, [4,41]; СБеЬРодеАрргох:=х -а 0.28564838600П~ О:, -х — 1 Г 1 и( 2 У 1 / 1 + 0.089603359594~И~ 1, — х — 1 ! — 0.006265465401933~ 2, — х — 1 ! ~ '2 +Ое531ебМ01е[3,-*-|]-ООЮее39!Ы76Я[А- — 1]]/ ( У 1 / 1 ~'2 ) (, г О, — х — 1 )+ 0.87930897467П~ 1, — х — 1 )+ О.
2895758070М~ 2, — х — 1 / 1 + 0.0487963344547() 3, -х — ! ]+ 0.0065027220650%~ 4, — х — 1 '1 '2 ~ '2 Построим кривую ошибок: > еьГЬ(огсьоро1у, Т]: > р1оГ(à — Сьеьраг)ейрргох, 0..4,со1ог=Ь1асх) Она представлена на рис. 5.27. Максимальная ошибка и на этот раз имеет место в левой оконечной точке.
Величина максимальной ошибки несколько меньше, чем ошибка при аппроксимации рядом Чебышева. Главное преимущество преставления в виде рациональной функции — высокая эффективность вычислений, которая может быть достиг- 5.9. Выбор аппроксимации для сложной функции ве07 Рис. 5.27. Кривы ошибки при Паде-Чебышева рациональной аппроксимации нута преобразованием в непрерывную (цепную) дробь (см.
ниже). Однако полученная максимальная ошибка чуть-чуть больше заданной: > вахсьеЬРаоееггог:= аЬа( Г(0) — СьеЬРае)елрргох(0) ); тохСЬеЬРодеЕггог:= 0.1236749 ГО > Мы достигли впечатляющего успеха и остается сделать еще один шаг в направлении повышения точности аппроксимации. 5.10.6. 8))инимаксная аппроксимация Классический результат теории аппроксимации заключается в том, что мини- макс как наилучшая аппроксимация рациональной функции степени (т, и) достигается, когда кривая ошибки имеет т+ п+ 2 равных по величине колебаний. Кривая ошибки аппроксимации Чебышева-Паде имеет нужное число колебаний, но эта кривая должна быть выровнена (по амплитуде выбросов кривой ошибки) с тем, чтобы обеспечить наилучшее минимаксное приближение.
Эта задача решается с помощью функции пипипах: > Итпзвахлрргох:= в1п1вах(Г, 0..4, [4,41, 1, 'вахеггог'); М(шталАррп>х:в х -ь (0.174933018974+ (0.0833009600964 + (О.0201933044764ь (0.00368158710678- 0.000157698045886с) х) х) х)/ (О. 349866448284+ (0.031945251383 + (0.0622933780 130ь ( О.ОО(1478847868(- 0.0033634353802)х) х ) х ) х) Максимальная ошибка в аппроксимации М)пппахАрргох дается значением переменной п)ахеггог. Заметим, что мы, наконец, достигли нашей цели получения аппроксимации с ошибкой меньшей, чем 1*104: > вахньпгвахвггог: вахеггог7 тохМ(ттокЕгтог:= 0.585028048949 1О-ь Построим график погрешности для данного типа аппроксимации: > р1ое(à — нзптваххрргох,0..4,со1ог=ь1аок); График ошибки, представленный на рис.