1626435587-51311eae4652e8ad616b5bdef025cbb3 (844239), страница 16
Текст из файла (страница 16)
При уменьшении шага сетки ℎ (в пределе ℎ → 0)входные данные могут содержать всё более высокочастотные добавки(шумы, погрешности) — сверху их спектр ограничен частотой Найквиста max = /ℎ. Как следствие, погрешность численного дифференцирования резко возрастает при уменьшении шага сетки ℎ и увеличении порядка производной . В частности, в пределе ℎ → 0 разделённыеразностипроизводные при наличии погрешностиво входных данных. В этой связи численное дифференцирование относят к классу.На практике при численном дифференцировании необходимо помнить, что погрешность результата складывается из двух составляющих, = 1 + 2 .
Первая связана с отбрасыванием высших производных вряде Тейлора и убывает вместе с шагом сетки, 1 = (ℎ ), где — порядок точности формулы дифференцирования. Вторая составляющаяошибки связана с наличием погрешности вычисления функции ≥/2, где /2 — ошибка округления. Итого, имеем = (ℎ ) + (ℎ− ),откуда следует, что при численном дифференцировании существует оптимальный шаг сетки ℎ, обеспечивающий минимальную погрешность.Более подробно о методах регуляризации дифференцирования можнопрочитать в [2, гл. 3.6].не аппроксимируютнекорректных задач5.5.
Другие виды интерполяцииПолиномиальная интерполяция, рассмотренная в данной главе, является достаточно простым и эффективным способом приближённого вычисления функций. Решение задачи может быть легко выписанов явном виде (54), что позволяет создавать на его основе квадратурные формулы и методы решения обыкновенных дифференциальныхуравнений высокого порядка точности.Вместе с тем необходимо отметить, что использование полиномиальной интерполяции на равномерной сетке в некоторых случаях даёт80неудовлетворительные результаты даже на гладких функциях. Яркимпримером служит, который мы рекомендуем читателюрассмотреть самостоятельно (см. упражнение 7 на с. 85). В этой связив заключение данной главы будет дан краткий обзор альтернативныхрешений задачи об интерполяции.Один из очевидных способов повышения точности полиномиальнойинтерполяции состоит в использовании неравномерных сеток.
По сути, аналогичный подход используется для построения квадратурныхформул Гаусса, выгодно отличающихся от формул Ньютона-Котеса более высоким порядком точности и устойчивостью. Из оценки погрешности интерполяции (59) следует, что оптимальный выбор узлов сетки должен обеспечивать минимизацию полинома () (55) на промежутке интерполяции [0 , ]. Решение данной задачи известно [A10]и состоит в том, что () должен являться полиномом Чебышёваcos(( + 1)arccos ), ∈ [0, 1]. Из определения () (55) следует, чтодля этого следует выбрать в качестве узлов сетки нули многочленаЧебышёва:феномен Рунге =+ −(2 + 1)+cos,222( + 1) = 0, 1, . .
. , .(64)Заметим, что использование данного подхода не всегда возможно. Например, интерполируемая функция может быть получена в результатечисленных расчётов, так что её значения могут быть известны лишь вузлах определённой сетки (чаще всего равномерной).В случае, если в узлах сетки известны не только значения интерполируемой функции ( ), но и значения её производных вплоть до -гопорядка, можно наложить дополнительные условия на интерполяционный полином, потребовав равенства его производных соответствующимзначениям производных интерполируемой функции.
Данный способинтерполяции называют[A10]. Интерполяционные многочлены Эрмита обеспечивают тот же порядок точности, что и полиномы Ньютона, однако численное значение погрешности для многочленаЭрмита будет меньше. «Минусами» эрмитовой интерполяции являетсянеобходимость вычисления производных интерполируемой функции, атакже достаточно сложные формулы для вычисления полиномиальных коэффициентов [A10]. Кроме того, при достаточно большом числеузлов сетки полиномиальная интерполяция может давать неудовлетворительные результаты из-за неустойчивости, связанной с вычислениеммногочленов высокой степени.Ещё одним способом повышения точности интерполяции являетсяпостроение «локальных» интерполяционных полиномов, или81эрмитовымкусочно-полиномиальная интерполяция.
Так, если значения интерполируемойфункции () известны на сетке 0 , . . . , , можно построить интерполяционный полином , () степени , значения которого будутсовпадать со значениями функции в точках , +1 , . . . , + (при0 ≤ ≤ − ) и использовать его для интерполяции () на отрезке ≤ ≤ + . Область 0 ≤ ≤ может быть разбита на отрезки,на каждом из которых будет использоваться свой «локальный» интерполяционный полином. Данное решение широко используется, например, при построении обобщённых квадратурных формул (см. главу 4).
Погрешность интерполяции можно уменьшить, если использовать каждый из интерполяционных полиномов , () не на всем отрезке [ , + ], но лишь в средней его части, где погрешность интерполяции минимальна (см. рис. 6 ( )). Однако данный подход не являетсяуниверсальным — одним из факторов, ограничивающих его применимость, является отсутствие непрерывности производных построеннойуказанным способом интерполирующей функции.Избавиться от указанного недостатка можно, накладывая дополнительные условия на сшивку первых ( − ) производных кусочнополиномиальной функции в узлах сетки.
Полученную в результате это23го функцию называют. По сравнениюс полиномами, интерполяция сплайнами выгодно отличается гарантированной сходимостью и устойчивостью вычислений за счёт использования «локальных» полиномов невысокой степени, в то времякак общее число узлов сетки может быть очень большим, что позволяет интерполировать осциллирующие функции с большим количествомэкстремумов.Наиболее часто употребляются два частных случая сплайнов.асплайном степени дефектаинтерполяционный кубический сплайнсплайном∙ 31 —( = 3, = 1), часто называемый просто, имеет непрерывную первую ивторую производные; значения сплайна в узлах сетки совпадаютсо значениями интерполируемой функции.линейный сплайн∙ 11 —( = 1, = 1) представляет собойкусочно-линейную функцию, значения которой в узлах сетки совпадают со значениями интерполируемой функции.Построение кусочно-линейной функции 11 является тривиальнойзадачей, решение которой ничем не отличается от построения не свя23 От англ.
spline — гибкая линейка, используемая в черчении и инженерных расчётах для проведения гладких кривых через заданные точки.82занных друг с другом интерполяционных полиномов Ньютона первойстепени.Задача о построении кубических сплайнов 31 также не представляет большой сложности. Для её решения необходимо записать на каждом интервале сетки 0 , 1 , . . . , полином третьей степени с неопределёнными коэффициентами:() =( − )3( − −1 )3 − − −1−1 + + + , (65)6ℎ6ℎℎℎгде ∈ [−1 , ], ℎ = − −1 , а — значение второй производной сплайна в -м узле сетки. Условия интерполяции ( ) = дают на каждом отрезке 16 ℎ2 −1 + = −1 , 61 ℎ2 + = .
Условия сшивки первой производной в узлах сетки приводят к уравнениям( = 1, . . . , − 1):(︂)︂ℎ + ℎ+1ℎ+1−11ℎ1+1−1 + ++1 =+− +. (66)636ℎℎ ℎ+1ℎ+1Полученная система является линейной, её матрица трёхдиагональна,что позволяет эффективно решить (66) методом прогонки. Для замыкания системы необходимо задать вторые производные ′′ () на краяхсетки: 0 и . В отсутствие дополнительных соображений их обычно полагают равными нулю.
Отметим, что кубические сплайны могутбыть найдены вариационным способом минимизацией функционалаΦ() =∫︁(′′ ())2 ,( ) = , ′′ (0 ) = ′′ ( ) = 0.(67)0аппроксимацииРазвивая этот подход, можно получить решение задачинабора данных, известных из эксперимента. Действительно, полагая,что сплайн-функция должна удовлетворять условиям ( ) = лишьприближённо, с учетом некоторой известной погрешности измерений,можно модифицировать функционал (67):∫︁∑︁Φ1 () = (′′ ())2 + · (( ) − )2 ,0 > 0,(68)=0где коэффициенты связаны с погрешностью измерения экспериментальных данных (чем выше точность измерений , тем больше ко83эффициент 24 ). Экстремум функционала (68) достигается на кубических сплайнах 31 , для определения его коэффициентов необходимо решить систему линейных уравнений с пятидиагональной матрицей.
Построенные таким образом сплайны называюти широко используют для аппроксимации экспериментальных данных.В частности, для построения сглаживающих сплайнов в gnuplot предусмотрен режим smooth acsplines команды plot, для построения интерполяционных сплайнов — smooth csplines.Значительно более подробное решение задачи о построении кубических сплайнов можно найти в монографиях [2] и [A10]; готовый киспользованию программный код на языке Си приведён в [4].Сообразно характеру интерполируемых функций, в некоторых задачах целесообразно использовать в качестве базисных функций длялинейной интерполяции не алгебраические полиномы, а, например,тригонометрические функции или экспоненты, либо интерполировать() с помощью дробно-линейных функций [4], [A10].
В случае, еслифункция () вычислена на сетке с достаточно большим шагом так,что () сильно меняется между узлами сетки, целесообразно использоватьинтерполяцию, подбирая преобразование = (), = () так, чтобы в новых переменных зависимость () мало отличалась от линейной на протяжении нескольких шагов сетки.
Конкретныйвид нелинейного преобразования следует выбирать из физических соображений [2].сглаживающиминелинейнуюВ частности, в случае равномерного стремления → ∞, минимум (68) достигается на интерполяционных кубических сплайнах, доставляющих экстремум (67).2484Упражнения1. Получить квадратурные формулы трапеций (24) и Симпсона (31),интегрируя интерполяционные полиномы первой и второй степени, построенные на равномерной сетке.2. Написать на языке Си функцию для вычисления разделённыхразностей произвольного порядка. Используя равномерную сетку,исследовать точность, с которой разделённая разность порядка аппроксимирует величину ! () при = 1, 3, 5, 7 для () = вточке = 0 в зависимости от величины шага сетки ℎ.3.