Задание 6

advertisement
Лабораторная работа 6.
Аппроксимация функций
Аппроксимацией (приближением) функции f (x) называется нахождение
такой функции g (x) (аппроксимирующей функции), которая была бы близка
заданной. Критерии близости функций f (x) и g (x) могут быть различные.
В том случае, когда приближение строится на дискретном наборе точек,
аппроксимацию называют точечной или дискретной.
В том случае, когда аппроксимация проводится на непрерывном множестве точек (отрезке), аппроксимация называется непрерывной или интегральной. Примером такой аппроксимации может служить разложение функции в
ряд Тейлора, то есть замена некоторой функции степенным многочленом.
Пусть задан дискретный набор точек xi , ( i = 0,1,..., n ), называемых узлами
интерполяции, причем среди этих точек нет совпадающих, а также значения
функции y i в этих точках. Требуется построить функцию g (x) , проходящую
через все заданные узлы. Таким образом, критерием близости функции является g ( xi ) = yi .
В качестве функции g (x) обычно выбирается полином, который называют интерполяционным полиномом. В том случае, когда полином един для всей
области интерполяции, говорят, что интерполяция глобальная. В тех случаях,
когда между различными узлами полиномы различны, говорят о кусочной или
локальной интерполяции.
Найдя интерполяционный полином, мы можем вычислить значения
функции f (x) между узлами, а также определить значение функции f (x) даже
за пределами заданного интервала (провести экстраполяцию).
Линейная интерполяция
Простейшим случаем локальной интерполяции является линейная интерполяция, когда в качестве интерполяционной функции выбирается полином
первой степени, то есть узловые точки соединяются прямой линией.
Линейная интерполяция осуществляется с помощью встроенной функции
linterp.
Пусть требуется провести линейную интерполяцию функции sin(x) на
интервале [0,6] используя пять узлов интерполяции и вычислить значения
функции в четырех точках xk (рис. 6.1):
1. Зададим значения k и x k ;
2. Зададим интервал изменения x и число узловых точек n ;
3. Определим шаг изменения h переменной x ;
4. Вычислим координаты узлов x k и значения функции y i в них;
5. Проведем линейную интерполяцию с помощью функции linterp;
6. Построим исходную и интерполяционную зависимости;
7. Вычислим значение интерполяционной функции в заданных точках и сравним их с точными значениями.
Рис. 6.1.
Как видно, результаты интерполяции отличаются от точных значений
функции незначительно.
Интерполяция сплайнами
В настоящее время среди методов локальной интерполяции наибольшее
распространение получила интерполяция сплайнами. При этом строится интерполяционный полином третьей степени, проходящий через все заданные узлы и
имеющий непрерывные первую и вторую производные. На каждом интервале
[xi , xi +1 ] интерполирующая функция является полиномом третьей степени
S i ( x ) = ai + bi ( x − xi −1 ) + ci ( x − xi −1 ) 2 + d i ( x − xi −1 ) 3 , xi −1 ≤ x ≤ xi ,
который удовлетворяет условиям
S ( xi ) = y i
(6.1)
(6.2)
Если всего n узлов, то интервалов – n − 1 . Значит, требуется определить
4(n − 1) неизвестных коэффициентов полиномов. Условие (6.2) дает нам n
уравнений. Условие непрерывности функции и ее первых двух производных во
внутренних узлах интервала дает дополнительно 3(n − 2) уравнений
S i ( xi +1 ) = S i +1 ( xi +1 )
S 'i ( xi +1 ) = S 'i +1 ( xi +1 )
(6.2)
S ' 'i ( xi +1 ) = S ' 'i +1 ( xi +1 )
Всего имеем 4n − 6 различных уравнений. Два недостающих уравнения
можно получить, задавая условия на краях интервала. В частности, можно потребовать нулевой кривизны функции на краях интервала, то есть
S ' ' (a) = S ' ' (b) = 0 .
Рассмотрим задачу об интерполяции функции sin( x) с помощью сплайнов. Для этого воспользуемся встроенной функцией interp(VS,x,y,z). Переменные x и y задают координаты узловых точек, z является аргументом функции,
VS определяет тип граничных условий на концах интервала.
1. Зададим значения k и x k (рис. 6.2);
2. Зададим интервал изменения x и число узловых точек n ;
Рис. 6.2.
3. Определим шаг изменения h переменной x ;
4. Вычислим координаты узлов x k и значения функции y i в них;
5. Определим интерполяционные функции для трех типов кубического сплайна;
6. Вычислим значения интерполяционных функций в заданных точках и сравним их с точными значениями.
7. Построим исходную и интерполяционную зависимости для каждого типа
сплайнов (рис. 6.3).
7)
1
1
yi
gl( z )
yi
gp( z )
0
sin( z )
0
sin( z )
1
1
0
2
4
6
0
xi , z , z
2
4
6
xi , z , z
1
yi
gc( z )
0
sin( z )
1
0
2
4
xi , z , z
6
Рис. 6.3.
Обратите внимание, что результаты интерполяции различными типами
кубических сплайнов практически не отличаются во внутренних точках интервала и совпадают с точными значениями функции. Вблизи краев интервала отличие становится более заметным, а при экстраполяции за пределы заданного
интервала различные типы сплайнов дают существенно разные результаты.
Глобальная интерполяция
При глобальной интерполяции ищется единый полином для всего интервала. Если среди узлов {xi , yi } нет совпадающих, то такой полином будет единственным, и его степень не будет превышать n .
Запишем систему уравнений для определения коэффициентов полинома
⎧a0 + a1 x + ... + a n x n = y 0
⎪
n
⎪a0 + a1 x + ... + a n x = y1
.
(6.3)
⎨
..........
..........
..........
.......
⎪
⎪a + a x + ... + a x n = y
⎩ 0
1
n
n
1. Зададим значения k и x k (рис. 6.4);
2. Зададим интервал изменения x и число узловых точек n ;
3. Определим шаг изменения h переменной x ;
Рис. 6.4.
4.
5.
6.
7.
8.
Вычислим координаты узлов x k и значения функции y i в них;
Определим матрицу коэффициентов системы уравнений (6.3);
Решим систему уравнений матричным методом;
Определим интерполяционный полином;
Вычислим значение интерполяционного полинома в заданных точках и сравним их с точными значениями. Выведем коэффициенты интерполяционного
полинома a i
9. Построим исходную и интерполяционную зависимости (рис. 6.5).
9)
1
yi
L( z )
0
sin( z )
1
0
2
4
xi , z , z
Рис. 6.5.
6
Из-за накопления вычислительной погрешности (ошибок округления) при
большом числе узлов (n>10) возможно резкое ухудшение результатов интерполяции. Кроме того, для целого ряда функций глобальная интерполяция полиномом вообще не дает удовлетворительного результата.
Индивидуальные задания
Задание 1
Провести линейную интерполяцию функции f ( x) на интервале [a, b] используя четыре узла интерполяции и вычислить значения функции в трех произвольных точках x k ∈ [a, b ].
Задание 2.
Провести сплайн-интерполяцию функции f ( x) на интервале [a, b] используя четыре узла интерполяции и вычислить значения функции в четырех
произвольных точках x k ∈ [a, b].
Задание 3.
Провести глобальную интерполяцию функции f (x) на интервале [a, b]
используя четыре узла интерполяции и вычислить значения функции в пяти
произвольных точках x k ∈ [a, b].
Результаты заданий 1-3 должны быть представлены к защите в распечатанном виде (см. образец).
Варианты индивидуальных заданий
№
варианта
f ( x) , [a, b]
f ( x) , [a, b]
№
варианта
π
1, 16, 31, 46 cos( x ) , [0, ]
2
9, 24, 39, 54
π π
2, 17, 32, 47 cos( x ) + sin( x ) , [− , ]
3 3
10, 25, 40, 55 e
π π
3, 18, 33, 48 cos( x ) − sin( x ) , [− , ]
2 2
11, 26, 41, 56 1/(1 + e ), [0, 4]
π π
4, 19, 34, 49 sin( x ) − cos( x ) , [− , ]
4 4
12, 27, 42, 57 sin(x + e
π π
5, 20, 35, 50 2sin(2x) − cos(3x) , [− , ]
3 3
13, 28, 43, 58 e
π
6, 21, 36, 51 sin(2 x) + 2cos( x) , [0, ]
3
14, 29, 44, 59 cos(x + e
π
7, 22, 37, 52 3sin( x) + cos(2 x) , [− , 0]
2
15, 30, 45, 60 e
π
8, 23, 38, 53 sin(2 x) − 2cos(2 x) , [− , 0]
2
sin(3x) − 4cos(3x) , [0, π ]
2
-(x + sin x)
, [2, 5]
-x
sin x
), [0, 3]
-(x + 1/x)
, [1, 3]
cos x
cos x
), [3, 6]
cos x2, [0, 2]
Download