Участник:Айнагуль Джумабекова/Песочница
Материал из MachineLearning.
Строка 57: | Строка 57: | ||
Из этого выражения видно, что даже на равномерной сетке,т.е. когда <tex>h_i=h_{i+1}</tex>, второй порядок аппроксимации имеет место лишь в точке <tex>x=x_i</tex>, а относительно других точек (например,<tex>x=x_{i+1}</tex>) выполняется аппроксимация только первого порядка. | Из этого выражения видно, что даже на равномерной сетке,т.е. когда <tex>h_i=h_{i+1}</tex>, второй порядок аппроксимации имеет место лишь в точке <tex>x=x_i</tex>, а относительно других точек (например,<tex>x=x_{i+1}</tex>) выполняется аппроксимация только первого порядка. | ||
Таким образом, получим аппроксимацию лишь первого порядка. | Таким образом, получим аппроксимацию лишь первого порядка. | ||
+ | |||
+ | Для того, чтобы избежать больших погрешностей в процессе приближения, весь отрезок [a,b] разбивают на частичные отрезки и на каждом из частичных отрезков приближенно заменяют функцию <tex>f(x)</tex> многочленом невысокой степени (так называемая кусочно-полиномиальная интерполяция). | ||
+ | Одним из способов интерполирования на всем отрезке является интерполирование с помощью сплайн-функций. Сплайн-функцией или сплайном называют кусочно-полиномиальную функцию, определенную на отрезке [a,b] и имеющую на этом отрезке некоторое число непрерывных производных. | ||
+ | Преимущество сплайнов перед обычной интерполяцией является, во-первых их сходимость, во-вторых, устойчивость процесса вычислений. | ||
+ | Построение кубического сплайна. | ||
+ | Пусть на [a,b] задана непрерывная функция <tex>f(x)</tex>. Введем сетку | ||
+ | <tex>a=x_0<x_1<x_2<\dots<x_N=b</tex> | ||
+ | и обозначим <tex>f_i=f(x_i)</tex>, <tex>i=0,1,\dots,N</tex>. | ||
+ | Сплайном соответствующим данной функции <tex>f(x)</tex> и данным узлам <tex>\{x_i\}_{i=0}^N</tex> называется функция <tex>s(x)</tex>, удовлетворяющая следующим условиям: | ||
+ | а) на каждом сегменте <tex>[x_i-1,x_i]</tex>, <tex>i=1,2,\dots,N</tex> функция <tex>s(x)</tex> является многочленом третьей степени; | ||
+ | б) функция <tex>s(x)</tex>, а также её первая и вторая производная производные непрерывны на [a,b]; | ||
+ | в) <tex>s(x_i)=f(x_i)</tex>,<tex>i=1,2,\dots,N</tex>; | ||
+ | На каждом из отрезков <tex>[x_i-1,x_i]</tex>, <tex>i=1,2,\dots,N</tex> будем искать функцию <tex>s(x)=s_i(x)</tex> в виде многочлена третьей степени | ||
+ | |||
+ | <tex>s_i(x)=a_i+b_i(x-x_i)+\frac{c_i}{2}(x-x_i)^2 +\frac{d_i}{6}(x-x_i)^3</tex> | ||
+ | |||
+ | <tex>x_i-1<=x<=x_i</tex>, <tex>i=1,2,\dots,N</tex>, | ||
+ | где <tex>a_i,b_i,c_i,d_i</tex> - коэффициенты, подлежащие определению. | ||
+ | Доказано, что существует единственный кубический сплайн, определяемый условиями а)-в) и граничными условиями <tex>s''(a)=s''(b)=0</tex>. | ||
+ | Для их нахождения используются следующие формулы | ||
+ | 1) <tex>a_i=f(x_i)</tex>,<tex>i=1,2,\dots,N</tex> | ||
+ | |||
+ | 2) Для определения коэффициентов <tex>c_i</tex> получаем систему уравнений | ||
+ | |||
+ | <tex>h_ic_{i-1}+2(h_i+h_{i+1})c_i+h_{i+1}c_{i+1}=6\left(\frac{f_{i+1}-f_i}{h_{i+1}}-\frac{f_i-f_{i-1}}{h_i}\right), <tex>i=1,2,\dots,N-1</tex> ,<tex>c_0=c_N=0</tex> | ||
+ | |||
+ | (система решается методом прогонки) | ||
+ | По найденным коэффициентам <tex>c_i</tex> коэффициенты <tex>b_i</tex>, <tex>d_i</tex> определяются с помощью явных формул | ||
+ | |||
+ | 3) <tex>d_i=\frac{c_i-c_{i-1}}{h_i},<tex>i=1,2,\dots,N</tex> | ||
+ | |||
+ | 4) <tex>b_i=\frac{h_i}{2}c_i-\frac{h_i^2}{6}d_i+\frac{f_i-f_{i-1}}{h_i}, | ||
+ | <tex>i=1,2,\dots,N</tex> | ||
+ | |||
+ | Найдем производные введенного кубического сплайна, имеем | ||
+ | <tex>s_i'(x)=b_i+c_i(x-x_i)+\frac{d_i}{2}{(x-x_i)}^2</tex> | ||
+ | |||
+ | <tex>s_i''(x)=c_i+d_i(x-x_i)</tex> | ||
+ | |||
+ | <tex>s_i'''(x)=d_i</tex> | ||
+ | |||
+ | Рассмотрим оценку погрешности метода, которая зависит от выбора сеток и от гладкости <tex>f(x)</tex>. Для простоты изложения допустим, что сетка равномерная, т.е. | ||
+ | |||
+ | <tex>\omega_h=\{x_i=a+ih, i=0,1,\dots,N\}</tex> | ||
+ | с шагом <tex>b=\frac{b-a}{N}</tex> | ||
+ | |||
+ | От функции <tex>f(x)</tex> будем требовать существования непрерывной на [a,b] четвертой производной, <tex>f(x)</tex> <tex>C^{(4)}[a,b]</tex>. Кроме того, предположим, что выполнены граничные условия <tex>f''(a)=f''(b)=0</tex> и такие же условия для сплайнов. Обозначим, | ||
+ | |||
+ | <tex>||g(x)||_{C[a,b]}=\max_{[a,b]}|g(x)|</tex>, <tex>M_4=||f^4(x)||_{C[a,b]}</tex> | ||
+ | |||
+ | Пусть <tex>s_h(x)</tex> - кубический сплайн, построенный для функции <tex>f(x)</tex> на сетке <tex>\omega_h</tex>. В следующей теореме приведены оценки погрешности интерполяции для функции <tex>f(x)</tex> и её производных <tex>f'(x)</tex>, <tex>f''(x)</tex> | ||
+ | |||
+ | Теорема | ||
+ | Для <tex>f(x)</tex> <tex>C^{(4)}[a,b]</tex> справедливы оценки | ||
+ | |||
+ | <tex>||f(x)-s_h(x)||_{C[a,b]}<=M_4h^4</tex> | ||
+ | |||
+ | <tex>||f'(x)-s_h'(x)||_{C[a,b]}<=M_4h^3</tex> | ||
+ | |||
+ | <tex>||f''(x)-s_h''(x)||_{C[a,b]}<=M_4h^2</tex> | ||
+ | |||
+ | Из этих оценок следует, что при <tex>h \to 0</tex> (т.е. при <tex>N \to \infty</tex>) последовательности <tex>s_h^{(i)}(x)</tex>, <tex>i=0,1,2</tex> сходятся соответственно к функциям <tex>f^{(i)}(x)</tex> <tex>i=0,1,2</tex>. | ||
+ | |||
+ | Обычно дифференцирование кубического сплайна позволят определить первую и вторую производную интерполяционного многочлена с хорошей точностью. Если надо вычислить более высокие производные, то целесообразно строить сплайны высоких порядков. Из-за большей трудоемкости этот способ редко используется. Способ дифференцирования с помощью сплайновой интерполяцией теоретически мало исследован. | ||
+ | |||
+ | Не всякую функцию целесообразно приближать алгебраическими многочленами. | ||
+ | Рассмотрим тригонометрическую интерполяцию. | ||
+ | Если <tex>f(x)</tex> - периодическая функция с периодом l, то естественно строить приближения с помощью функций | ||
+ | |||
+ | <tex>\varphi_k(x)=a_k\cos(\frac{\pi kx}{l})+b_k\sin(\frac{\pi kx}{l}), k=0,1,\dots,n</tex> | ||
+ | |||
+ | Таким образом, тригонометрическая интерполяция состоит в замене <tex>f(x)</tex> тригонометрическим многочленом | ||
+ | |||
+ | <tex>T_n(x)=\sum_{k=0}^n \varphi_k(x)= a_0 + \sum{k=1}^n\left(a_k\cos(\frac{\pi kx}{l})+b_k\sin(\frac{\p ikx}{l})\right)</tex>, | ||
+ | |||
+ | коэффициенты которого отыскиваются из системы уравнений | ||
+ | |||
+ | <tex>T_n(x_j)=f(x_j), j=1,2,\dots,2n+1</tex>, | ||
+ | |||
+ | где <tex>x_0<x_1<\dots<x_{2n+1},x_{2n+1}-x_0=l</tex> |
Версия 11:44, 26 декабря 2008
Содержание |
Введение
Постановка математической задачи
Численное дифференцирование применяется, если функцию трудно или невозможно продифференцировать аналитически - например, если она задана таблицей. Оно нужно также при решении дифференциальных уравнений при помощи разностных методов.
Изложение метода
При численном дифференцировании функцию аппроксимируют легко вычисляемой функцией и приближенно полагают . При этом можно использовать различные способы аппроксимации.
Интерполирование полиномами Лагранжа
Рассмотрим неравномерную сетку и обозначим за , шаги этой сетки. В качества примера получим формулы численного дифференцирования, основанные на использовании многочлена Лагранжа , построенного для функции по трем точкам . Многочлен имеет вид
Отсюда получим
Это выражение можно принять за приближенное значение в любой точке ∈ . Его удобнее записать в виде , где , .
В частности, при получим , И если сетка равномерна, , то приходим к центральной разностной производной, . При использовании интерполяционного многочлена первой степени точно таким образом можно получить односторонние разностные производные и . Далее вычисляя вторую производную многочлена , получим приближенное выражение для при ∈:
≈
На равномерной сетке это выражение совпадает со второй разностной производной . Ясно, что для приближенного вычисления дальнейших производных уже недостаточно многочлена , надо привлекать многочлены более высокого порядка и тем самым увеличивать число узлов, участвующих в аппроксимации.
Порядок погрешности аппроксимации зависит как от порядка интерполяционного многочлена, так и от расположения узлов интерполирования. Получим выражение для погрешности аппроксимации, возникающей при замене выражением . Будем считать, что ∈ и что величины имеют один и тот же порядок малости при измельчении сетки. По формуле Тейлора в предположении ограниченности получим ,
где ,±
Отсюда приходим к следующим разложениям разностных отношений
Подставляя полученные формулы в выражение для разностной производной и приводя подобные слагаемые получим
, ∈ .
Отсюда видно,что разностное выражение аппроксимирует со вторым порядком.
Если подставить полученные ранее разностные отношения в выражение для второй производной многочлена , то имеем
Из этого выражения видно, что даже на равномерной сетке,т.е. когда , второй порядок аппроксимации имеет место лишь в точке , а относительно других точек (например,) выполняется аппроксимация только первого порядка. Таким образом, получим аппроксимацию лишь первого порядка.
Для того, чтобы избежать больших погрешностей в процессе приближения, весь отрезок [a,b] разбивают на частичные отрезки и на каждом из частичных отрезков приближенно заменяют функцию многочленом невысокой степени (так называемая кусочно-полиномиальная интерполяция). Одним из способов интерполирования на всем отрезке является интерполирование с помощью сплайн-функций. Сплайн-функцией или сплайном называют кусочно-полиномиальную функцию, определенную на отрезке [a,b] и имеющую на этом отрезке некоторое число непрерывных производных. Преимущество сплайнов перед обычной интерполяцией является, во-первых их сходимость, во-вторых, устойчивость процесса вычислений. Построение кубического сплайна. Пусть на [a,b] задана непрерывная функция . Введем сетку и обозначим , . Сплайном соответствующим данной функции и данным узлам называется функция , удовлетворяющая следующим условиям: а) на каждом сегменте , функция является многочленом третьей степени; б) функция , а также её первая и вторая производная производные непрерывны на [a,b]; в) ,; На каждом из отрезков , будем искать функцию в виде многочлена третьей степени
, , где - коэффициенты, подлежащие определению. Доказано, что существует единственный кубический сплайн, определяемый условиями а)-в) и граничными условиями . Для их нахождения используются следующие формулы 1) ,
2) Для определения коэффициентов получаем систему уравнений
,
(система решается методом прогонки) По найденным коэффициентам коэффициенты , определяются с помощью явных формул
3)
4)
Найдем производные введенного кубического сплайна, имеем
Рассмотрим оценку погрешности метода, которая зависит от выбора сеток и от гладкости . Для простоты изложения допустим, что сетка равномерная, т.е.
с шагом
От функции будем требовать существования непрерывной на [a,b] четвертой производной, . Кроме того, предположим, что выполнены граничные условия и такие же условия для сплайнов. Обозначим,
,
Пусть - кубический сплайн, построенный для функции на сетке . В следующей теореме приведены оценки погрешности интерполяции для функции и её производных ,
Теорема Для справедливы оценки
Из этих оценок следует, что при (т.е. при ) последовательности , сходятся соответственно к функциям .
Обычно дифференцирование кубического сплайна позволят определить первую и вторую производную интерполяционного многочлена с хорошей точностью. Если надо вычислить более высокие производные, то целесообразно строить сплайны высоких порядков. Из-за большей трудоемкости этот способ редко используется. Способ дифференцирования с помощью сплайновой интерполяцией теоретически мало исследован.
Не всякую функцию целесообразно приближать алгебраическими многочленами. Рассмотрим тригонометрическую интерполяцию. Если - периодическая функция с периодом l, то естественно строить приближения с помощью функций
Таким образом, тригонометрическая интерполяция состоит в замене тригонометрическим многочленом
,
коэффициенты которого отыскиваются из системы уравнений
,
где