- •ВВЕДЕНИЕ
- •1. МЕТОДЫ ЧИСЛЕННОГО РЕШЕНИЯ УРАВНЕНИЙ И СИСТЕМ НЕЛИНЕЙНЫХ УРАВНЕНИЙ
- •1.1. Метод итераций для одного уравнения с одним неизвестным
- •Приложение к параграфу 1.1.
- •1.2. Метод итераций для систем двух нелинейных уравнений
- •Приложение к параграфу 1.2.
- •2. СРЕДНЕКВАДРАТИЧНОЕ ПРИБЛИЖЕНИЕ ФУНКЦИЙ. МЕТОД НАИМЕНЬШИХ КВАДРАТОВ. ЭМПИРИЧЕСКИЕ ФОРМУЛЫ
- •Приложение к главе 2.
- •3. ИНТЕРПОЛИРОВАНИЕ ФУНКЦИЙ
- •3.1. Интерполяционная формула Лагранжа
- •Приложение к параграфу 3.1.
- •3.2. Интерполирование функций кубическими сплайнами
- •Приложение к параграфу 3.2.
3.2. Интерполирование функций кубическими сплайнами
Пусть отрезок [a,b] разбит на n частей точками
{xi }: a = x0 < x1 < x2 <... < xi−1 < xi < xn =b .
Сплайном k-й степени называется функция, представляющая собой многочлен на выше k-й степени на каждом из последовательно примыкающих друг к другу
интервалов (xi−1, xi ) (i =1, 2,...., n) , причем в точках стыка двух интервалов xi (i =1,..., n −1) функция непрерывна вместе
со своими производными до порядка не выше k.
Например, непрерывная кусочно-линейная функция (ломаная) является сплайном первой степени с производной, терпящей разрыв в точках излома.
Пусть на отрезке [a,b] определена функция y = f (x) , значение которой в точках xi равны yi = f (xi ) .
Задача интерполяции функции y = f (x) на отрезке [a,b]
кубическим сплайном (сплайном третьей степени) состоит в нахождении функции S(x) , равной многочлену третьей
степени Si (x) на каждом отрезке [xi−1, xi ] |
(i =1, |
2,...., n) , т.е. |
|||||||||
S(x) = S(x |
) = ai x3 |
+ ai x2 |
+ ai |
x + ai |
, |
x [x |
i−1 |
, x |
], |
(3.3) |
|
i |
0 |
1 |
2 |
3 |
|
|
|
i |
|
|
|
причем значения сплайна в узлах интерполяции |
xi |
равны |
|||||||||
соответствующим значениям функции |
yi |
и сплайн-функция |
непрерывна в узлах интерполяции вместе с производными первого и второго порядков:
36
S(xi ) = Si+1(xi ) = yi (i = 0, 1, 2,..., n −1), S(xn ) = Sn (xn ) = yn , (3.4)
Si (xi ) = Si+1(xi ) |
(i =1, 2,..., n −1), |
(3.5) |
S'i (xi ) = S'i+1 (xi ) |
(i =1, 2,..., n −1), |
(3.6) |
S"i (xi ) = S"i+1 (xi ) |
(i =1, 2,..., n −1). |
(3.7) |
Условия (3.4) - (3.7) дают 4n − 2 линейных алгебраических уравнений для определения 4n неизвестных коэффициентов
aip ( p = 0, 1, 2, 3; i =1, 2,...., n) |
при |
соответствующих |
степенях x в многочленах Si (x) .
Можно показать, что интерполяционный кубический сплайн для функции y = f (x) существует и является
единственным, если вместе с уравнениями (3.4) - (3.7) удовлетворяется какая-либо пара дополнительных условий (краевые условия) следующего типа:
1.S'(a) = f '(a), S'(b) = f '(b);
2.S"(a) = f "(a), S"(b) = f "(b);
3.S'(a) = S'(b), S"(a) = S"(b).
Рассмотрим случай разбиения отрезка [a,b] на n равных
частей |
с |
шагом |
h, |
для |
которого |
x0 = a, |
x1 = x0 + h,..., xi+1 = xi + h,..., xn |
= b и |
h = (b − a) / n . |
Разберем построение интерполяционного кубического сплайна отдельно для условий 1 и 2 типов.
При построении сплайна, удовлетворяющего краевым условиям первого типа, введем величины mi = S'(xi ) ,
называемые иногда наклонами сплайна в точках (узлах)
xi (i = 0, 1,..., n) .
Интерполяционный кубический сплайн вида
S(x) = Si (x) = yi−1 |
(x − xi )2 (2(x − xi |
−1) + h) |
+ |
|
h3 |
|
|||
|
|
|
|
|
+ yi |
(x − xi−1)2 (2(xi − x) + h) |
+ |
|
|
|
h3 |
|
||
|
|
|
|
|
|
|
37 |
|
|
+ m |
i−1 |
(x − xi )2 (x − xi−1) |
+ m |
(x − xi−1)2 (x − xi ) |
|
, |
|
|
|
||||||
|
h2 |
i |
h2 |
|
|||
|
|
x [xi−1, xi ] (i =1, 2,..., n) |
|
|
(3.8) |
||
удовлетворяет условиям (3.4), |
(3.5), (3.6) для любых |
mi . Из |
условий (3.7) и краевых условий первого типа можно
определить n +1 параметр mi . |
|
|
|
||||||||
Действительно, |
|
|
легко |
проверить, |
что |
||||||
S(xi−1) = Si (xi−1) = yi−1 , |
S(xi ) = Si (xi ) = yi |
(i =1, 2,..., n) . |
|||||||||
Кроме того, вычисления показывают, что |
|
|
|||||||||
S'(xi ) = S'i (xi ) = mi , |
|
|
|
||||||||
S'(xi ) = S'i+1 (xi ) = mi (i =1, 2,..., n). |
|
||||||||||
Если учесть, что |
|
|
|
|
|
|
|
|
|
||
S"i (xi ) = |
2mi−1 |
+ |
4mi |
− 6 |
yi − yi−1 |
|
(i = |
1, 2,..., n − |
1), |
||
|
h2 |
||||||||||
|
h |
|
h |
|
|
|
|
|
|||
S"i+1 (xi ) |
= 4mi |
− |
2mi+1 − 6 |
yi+1 − yi |
(i |
=1, 2,..., n |
−1), |
||||
h2 |
|||||||||||
|
h |
|
h |
|
|
|
|
|
а также краевые условия первого типа и условия (3.7), то
получим систему из |
n +1 линейных уравнений относительно |
|||||||
неизвестных mi : |
|
|
|
|
||||
m |
|
= b = f '(a), |
|
|
|
|
||
|
0 |
0 |
|
3(yi+1 |
− yi−1) |
|
|
|
|
|
|
|
|
(i =1, 2,..., n −1), |
(3.9) |
||
mi−1 + 4mi + mi+1 |
= bi |
h |
||||||
|
|
= b |
|
= f '(b). |
|
|
|
|
m |
n |
n |
|
|
|
|
||
|
|
|
|
|
|
|
Решение этой системы позволяет найти значения неизвестных mi и определить интерполяционный сплайн в
виде соотношения (3.8).
38
Матрица А системы (3.9) имеет порядок n +1 и является трехдиагональной:
1 |
0 |
0 |
0 |
... 0 0 ... |
0 |
|
|
|
|
4 |
1 |
0 ... 0 0 ... |
0 |
|
|
1 |
|
||||||
|
0 |
1 |
4 |
1 ... 0 0 ... |
0 |
|
|
|
|
|
|
|
|
|
|
A = .............................. |
|
. |
|||||
|
0 |
0 |
0 |
0 |
... 1 4 1 |
0 |
|
|
|
||||||
|
0 |
0 0 0 |
... 0 1 4 |
1 |
|
||
|
|
||||||
|
0 |
0 |
0 |
0 |
... 0 0 0 |
1 |
|
Метод Гаусса (метод исключения неизвестных) для системы (3.9) значительно упрощается и носит название метода прогонки. Прямой прогонкой находятся так называемые прогоночные коэффициенты:
L |
0 |
= 0, |
M |
0 |
=b |
0 |
, |
L |
i |
= |
−1 |
, M |
i |
= L |
(M |
i−1 |
−b ) (i =1, 2,..., n −1). |
|
|||||||||||||||||
|
|
|
|
|
|
|
Li−1 + 4 |
i |
|
i |
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Обратной прогонкой последовательно определяют неизвестные mi :
mn = bn , |
|
|
|
|
|
|
||
m |
i |
= L m |
i+1 |
+ M |
i |
|
(i = n −1, n − 2,..., 0). |
|
|
i |
|
|
|
|
|||
Пример 1. |
|
|
|
|
|
π |
построить кубический сплайн |
|
На отрезке 0, |
2 |
|
||||||
|
|
|
|
|
|
|
|
с шагом h = π2 , удовлетворяющий на концах отрезка краевым условиям первого типа и интерполирующий функцию
39
y = sin x . С помощью интерполяционной формулы вычислить приближенное значение sin π6 и сравнить его с точным.
Решение. Будем искать кубическую параболу y = S(x) , удовлетворяющую следующим условиям не концах отрезка
x |
0 |
= 0 и |
x = h = π |
: |
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
1 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
y0 = S(x0 ) = sin x0 = 0, |
y1 = S(h) = sinh =1, |
|
|||||||||||||||||
|
m0 = S'(x0 ) = sin' x0 = cos x0 =1, |
|
|
m1 = S'(h) = sin'h = cosh = 0. |
||||||||||||||||
|
|
Подставим значения h, y0 , y1, m0 , m1 |
в формулу (3.8) и |
|||||||||||||||||
получим сплайн вида |
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
S(x) = S1(x) = |
x2 (2(h − x) + h) |
+ |
(x − h)2 x |
, |
x [0, h]; |
|||||||||||||
|
|
|
|
|
|
|
||||||||||||||
|
|
|
|
|
4(π −3)2 |
|
|
h3 |
|
|
|
|
h2 |
|
|
|
||||
|
S(x) = x − |
x2 − |
4(4 −π) |
x3 = x − 0,057385x2 − 0,11074x3. |
||||||||||||||||
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
π 2 |
|
|
π 3 |
|
|
|
|
|
|
|
|
|
||
Тогда sin |
π |
≈ S(π ) = 0,49196983 (точное значение равно 0,5). |
||||||||||||||||||
|
|
|
|
6 |
6 |
|
|
|
|
π |
|
|
|
|
|
|
|
|
||
|
|
Пример 2. На отрезке |
|
|
|
|
|
|||||||||||||
|
|
0, |
2 |
построить кубический сплайн |
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
с шагом |
h = π , интерполирующий функцию |
y = sin x , если |
||||||||||||||||||
|
|
|
|
|
|
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
заданы значения функции в трех узлах интерполяции: |
||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
x |
|
x0 |
= 0 |
|
|
x1 = π / 4 = 0,7853982 |
|
x2 = π / 2 =1,570796 |
||||||||||
|
sin x |
|
y0 |
= 0 |
|
|
y1 = 0,7071068 |
|
|
|
y2 =1 |
С помощью интерполяционной формулы вычислить
приближенное значение sin |
π |
( |
π |
= 0,5235988) и сравнить с |
|
6 |
|
6 |
|
точным значением 0,5.
40
Решение. Представим сплайн в виде (3.8):
S |
1 |
(x), 0 |
≤ x ≤ π / 4; |
S(x) = |
|
|
S2 (x), π / 4 ≤ x ≤ π / 2.
При таком представлении должны удовлетворяться уравнения
(3.9):
m0 |
= sin' x0 |
= cos x0 =1, |
|
|
|
|||||
|
|
|
|
|
3(y2 − y0 ) |
|
3 |
|
||
|
|
|
|
|
|
|
||||
m0 |
+ 4m1 + m2 = |
|
|
|
= |
|
, |
|||
|
|
h |
h |
|||||||
|
|
= sin' x |
|
= cos x |
|
|
|
|||
m |
2 |
2 |
2 |
= 0. |
|
|
|
|||
|
|
|
|
|
|
|
|
Тогда |
|
учитывается, |
|
|
что |
|
|
|
1+ |
4m = |
12 |
|
|
или |
|||||||||||||||||||
|
|
|
|
|
12 −π |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
π |
|
|
|
|
m |
= |
= 0,70493, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
1 |
|
|
|
4π |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x2 (2(h − x) + h) |
|
|
(x − h)2 x |
|
|
|
x2 (x − h) |
|
|
|
|
|
|||||||||||||||
|
S |
|
(x) = y |
|
+ |
|
+ m |
|
, 0 ≤ x ≤ h; |
||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||
|
1 |
|
1 |
|
|
|
|
|
h3 |
|
|
|
|
h2 |
|
|
|
1 |
|
|
h2 |
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
S |
2 |
(x) = y |
(x − 2h)2 (2(x − h) + h) |
+ |
(x − h)2 (2(2h − x) + h) |
+ |
||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||
|
|
|
|
1 |
|
|
|
|
|
h |
3 |
|
|
|
|
|
|
|
|
|
|
|
|
h3 |
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 (x − h) |
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
+ m |
|
(x − |
2h) |
, |
|
|
h ≤ x ≤ 2h, |
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
h |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
получим, в частности, выражение для функции S1(x) : |
|||||||||||||||||||||||||||||||||
|
|
|
|
S (x) = y |
|
x2 (2(h − x) + h) |
+ |
(x − h)2 x |
+ m |
x2 (x − h) |
= |
||||||||||||||||||||||
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||
|
|
|
|
1 |
1 |
|
|
|
h3 |
|
|
|
|
|
|
|
h2 |
|
|
|
1 |
|
|
h2 |
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
π . |
|||||||
|
|
|
|
|
= x − 0,0050683975x |
2 − 0,15514782x3 , 0 ≤ x ≤ |
|||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
π |
|
|
π ) = 0,499938. |
|
|
|
|
|
|
|
4 |
|
|
|||||||||
|
Значение sin |
≈ S1( |
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
6 |
|
|
6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
41 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
При построении сплайна, удовлетворяющего краевым условиям второго типа, введем величину m~i = S"(xi ) -
значение второй производной сплайна в узле
xi (i = 0, 1,..., n) .
Уравнения (3.4), (3.5), (3.7) будут удовлетворены, если интерполяционный кубический сплайн представить в виде
S(x) = Si (x) = yi−1 |
|
(xi − x) |
+ yi |
(x − xi−1) |
|
~ |
|
|
(xi − x)3 − h2 (xi − x) |
|
||||||||||||||
|
|
|
|
|
|
|
|
+ mi−1 |
|
|
|
|
|
+ |
||||||||||
|
h |
|
|
|
h |
|
|
|
|
|
6h |
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
~ |
(x − x |
|
)3 |
−h2 (x − x |
|
|
) |
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
i−1 |
|
|
|
|
|
i−1 |
|
|
|
|
||||
|
|
|
|
+ mi |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6h |
|
|
|
|
|
|
|
|
|
||
|
|
|
|
x [xi−1, |
xi ] |
|
|
|
|
|
|
|
|
|
||||||||||
Учитывая, что |
|
|
|
(i =1, 2,..., n). |
(3.10) |
|||||||||||||||||||
|
yi − yi−1 |
|
|
|
|
|
~ |
+ |
~ |
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
Si (xi ) = |
|
|
+ |
hmi |
2hmi |
(i =1, 2,..., n −1), |
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
h |
|
|
|
|
|
|
|
~ 6 |
~ |
|
|
|
|
|
|
|
|
|||
S'i+1 (xi ) = |
|
|
yi+1 − yi |
− |
2hmi |
+ hmi+1 |
|
(i =1, 2,..., n −1), |
|
|||||||||||||||
|
|
|
|
|
|
|||||||||||||||||||
|
|
|
|
h |
|
|
|
|
|
|
|
|
|
6 |
|
|
|
|
|
|
|
|
|
|
и используя краевые условия второго типа и условия (3.6),
получим систему из |
n +1 линейных уравнений относительно |
|||||||
|
|
~ |
|
|
|
|
|
|
неизвестных mi : |
|
|
|
|
|
|
||
|
~ |
= f "(a), |
|
|
|
|
|
|
m0 |
|
|
|
|
|
|
||
|
~ |
~ ~ |
|
|
6(yi+1 |
− 2yi + yi−1) |
|
|
|
|
|
|
(3.11) |
||||
mi−1 + 4mi + mi+1 |
= |
|
|
|
(i =1, 2,..., n −1), |
|||
|
|
h2 |
||||||
|
~ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mn = f "(b). |
|
|
|
|
|
|
Системы (3.9) и (3.11) являются частными случаями системы линейных алгебраических уравнений следующего вида:
u |
= b , |
|
0 |
0 |
(3.12) |
ui−1 + 4ui + ui+1 = bi (i =1, 2,..., n −1), |
||
|
= bn . |
|
un |
|
|
|
42 |
|