Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Численные методы.-3

.pdf
Скачиваний:
10
Добавлен:
05.02.2023
Размер:
1.14 Mб
Скачать

 

 

41

x0

P(k)(x0)

– значение полинома или его произ-

x1

P(k)(x1)

водных в узлах результирующей сетки;

...

 

xm P(k)(xm)

 

ε

 

– СКО (если аналитическое выражение

 

 

для функции известно).

42

2.2. ПРАКТИЧЕСКАЯ РАБОТА №2 «ПРИБЛИЖЕНИЕ СПЛАЙНАМИ»

Обязательных методов

3

 

 

Баллов за обязательные методы

14

 

 

Дополнительных методов

0

 

 

Баллов за дополнительные методы

0

 

 

Количество вариантов

1

 

 

Приближение сплайнами – еще один способ построения интерполирующих полиномов. В отличие от полиномов Ньютона и Лагранжа, степень которых зависит от количества узлов в исходной сетке, при построении сплайна его степень может варьироваться.

yi+1

 

yi

Линейный

сплайн

 

Кубический

Параболический

сплайн

сплайн

xi

xi+1

Рис. 2.2.1 – Приближение сплайнами

Так, мы можем построить линейные, параболические и кубические сплайны для сеток с произвольным количеством узлов. Следовательно, мы избавляемся от одного из недостатков интерполирующих полиномов, рассмотренных выше – сплайны имеют несложный математический вид и

43

не осциллируют на сетках с большим количеством узлов

(рис. 2.2.1).

В методе МНК также можно варьировать степень полинома, но поиск коэффициентов сплайнов существенно зависит от степени искомого полинома. Для степени выше третьей задача становится трудноразрешимой.

Итак, сплайн строится между двумя узлами сетки. Если он линейный, то это прямая линия, если параболический – парабола, если кубический – кривая третьего порядка. Т.е. от количества узлов зависит только количество сплайнов, но не их порядок. Таким образом, для сетки {xi} из n+1 узла (i = 0, 1, …, n) имеем n сплайнов Si(x), i = 1, 2, …, n–1, аргумент x должен лежать в интервале от xi до xi+1.

Как мы уже знаем, по двум точкам прямая линия строится однозначно. Чтобы построить параболу, нужно либо задать еще одну точку, либо ввести так называемое граничное условие. Это значение не самой функции, а некоторой ее производной в одной из границ отрезка. В параболических сплайнах применяется первая производная. Чтобы построить кубическую кривую, надо либо задать еще две точки, либо ввести два граничных условия. В кубических сплайнах задают значение либо первой, либо второй производной в обеих границах отрезка. Хотя возможны и другие комбинации – значение первой и второй производной в одной из границ отрезка и т.п.

Очевидно, что для вычисления интерполированного значения в некоторой точке x необходимо определить, в область определения какого сплайна это значение попадает. Из рисунка видно, что за пределами своей области

44

определения значения сплайнов перестают интерполировать функцию с достаточной точностью.

Для решения задач численного дифференцирования точности сплайнов уже не хватает.

2.2.1. МЕТОДЫ РЕШЕНИЯ

Для выполнения практической работы необходимо реализовать в программе интерполяцию табличной функции линейными, кубическими и параболическими сплайнами.

Сплайны, как и все интерполирующие полиномы, имеют вид (2.1.1), но количество узлов n не равно порядку сплайна m. Однако, следует учесть, что количество самих сплайнов равно n–1, т.е.

 

m

 

 

Si x

c ji ji x , ji x x xi j

 

j 0

 

(2.2.1)

m

 

 

 

 

 

Si x c ji x xi j ,

i 0,1,..., n 1,

m 1, 2,3.

j 0

Чтобы не использовать константы c с двумя индекса-

ми, вводят коэффициенты сплайна ai = c0i, bi = c1i, ci = c2i, di = c3i.

2.2.1.1. ЛИНЕЙНЫЕ СПЛАЙНЫ

Согласно (2.2.1), линейный сплайн имеет вид

Si x ai bi x xi , i 0,1,..., n 1.

(2.2.2)

При этом

a y ,

b yi .

(2.2.3)

i i

i

xi

 

 

 

 

45

Здесь ∆xi = xi+1 xi, ∆yi = yi+1 yi.

2.2.1.2. ПАРАБОЛИЧЕСКИЕ СПЛАЙНЫ

Из (2.2.1) получаем выражение для параболического сплайна:

S

x a b x x

c

x x

2 ,

 

i

i

i

 

i

i

 

i

 

(2.2.4)

 

 

i 0,1,..., n 1.

 

 

 

 

 

 

 

 

 

Для коэффициентов ai и ci имеем

 

 

 

a y ,

c

bi 1 bi

.

 

(2.2.5)

 

 

 

 

i

i

i

2xi

 

 

 

 

 

 

 

 

 

 

 

 

 

Граничным условием для параболического сплайна является значение первой производной функции в первой либо последней точке отрезка, т.е. Ai = f (xi), где i = 0 или n. Во входном файле задается точка (0 или n) и значение производной в ней.

Если задано число A0, то коэффициенты bi ищутся, начиная с b0:

b

A , b

 

2yi

 

b , i 0,1,..., n 2.

(2.2.6)

 

 

0

0

i 1

 

xi

 

i

 

 

 

 

 

 

 

 

 

Если задано число An, то коэффициенты bi ищутся,

начиная с bn:

 

 

 

 

 

 

 

 

 

 

b A ,

b

2yi

b

 

, i n 1, n 2,..., 0.

(2.2.7)

 

 

n

n

i

 

 

 

i 1

 

 

 

 

 

 

xi

 

 

 

2.2.1.3. КУБИЧЕСКИЕ СПЛАЙНЫ

По аналогии, из (2.2.1) получаем для кубического сплайна

46

S

x a b

x x

c

x x

2 d

x x

3 ,

 

i

i i

i

i

i

i

i

 

(2.2.8)

 

 

i 0,1,..., n 1.

 

 

 

 

 

 

 

 

 

Коэффициенты ищутся следующим образом:

 

 

 

 

a y , c

1

M

 

, d

 

 

 

Mi 1 Mi

.

 

 

 

 

 

i

 

 

 

 

 

 

i

 

 

i

 

 

i

 

 

2

 

 

 

i

 

 

 

 

 

 

 

 

6xi

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Для коэффициентов bi

 

 

 

 

 

 

 

 

 

 

 

 

 

b yi

xi 2M

i

M

i 1

,

 

i 0,1,..., n 1

i

 

 

 

xi

 

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

или

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b

yi 1

 

xi 1

 

2M

 

M

 

1

, i 1, 2,..., n.

 

 

 

i

i

i

 

 

 

xi 1

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Неизвестные Mi находятся из решения СЛАУ

 

 

 

 

 

 

 

 

 

 

 

 

 

AM = g,

 

 

 

 

 

 

 

где

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

x j 1 x j

,

 

 

j 1, 2,..., n 1;

 

 

 

a jj

 

 

 

A

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a

 

 

 

a

 

 

 

 

x

 

,

 

 

j 1, 2,..., n 2;

 

 

 

j, j 1

j 1, j

 

j

 

 

 

 

 

 

 

 

 

 

 

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

g

i

yi

 

yi 1

 

n 1

,

 

i 1, 2,..., n 1,

 

 

 

xi

 

 

xi 1

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

 

 

 

 

i 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

B0 ,

 

 

 

 

 

 

 

 

ãäå 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0, i

 

 

 

 

(2.2.9)

(2.2.10)

(2.2.11)

(2.2.12)

(2.2.13)

(2.2.14)

 

 

x

Bn , i n 1

 

 

n 1

n 1

6

 

 

 

 

 

 

 

0, i n 1

M = (M1, M2, …, Mn–1).

47

Для кубического сплайна можно выбрать любой тип граничных условий (либо по первой, либо по второй производной). Соответственно, во входном файле будут находиться значения первой (A0 и An) или второй (B0 и Bn) производной в первой и последней точке отрезка.

Если граничные условия заданы по второй производной, то M0 = B0, Mn = Bn, а остальные неизвестные Mi находятся решением СЛАУ (2.2.12).

Если граничные условия заданы по первой производной, то b0 = A0, bn = An. Тогда к системе можно добавить еще два уравнения, используя (2.2.10) при i = 0 и (2.2.11) при i = n, а также перенести в левую часть СЛАУ слагаемые с неизвестными коэффициентами из выражений для g1 и gn–1. Получим модифицированную СЛАУ

 

 

 

 

 

 

AM g,

 

 

(2.2.15)

где

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a

 

x0 ; a

 

 

 

xn 1

;

 

 

nn

 

 

 

 

00

 

 

 

3

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

x j 1

 

x j ,

 

 

 

A a jj

 

 

 

j 1, 2,..., n 1; (2.2.16)

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a j 1, j

 

1

x j

 

j 0,1,..., n 1;

a j , j 1

 

,

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

g

0

y0 A ; g

n

A yn 1

;

 

 

 

 

x0

 

 

0

 

 

 

 

n

xn 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(2.2.17)

g

 

 

 

 

yi

 

 

yi 1

 

 

 

 

 

g

 

 

 

,

 

i 1, 2,..., n 1;

 

 

 

 

 

 

i

 

 

xi

 

xi 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

M = (M0, M1, M2, …, Mn).

48

Трехдиагональные СЛАУ (2.2.12) и (2.2.15) можно решать любым методом решения СЛАУ. Однако, учитывая их структуру, оптимальным будет использование метода прогонки.

2.2.1.4. МЕТОД ПРОГОНКИ

Пусть имеется трехдиагональная СЛАУ Ax = b размера n n. Ее решение методом прогонки строится следующим образом:

xi

 

1

 

ri ai,i 1xi 1 ,

i 1, 2,..., n;

(2.2.18)

 

 

 

vi

 

 

 

 

 

 

r b

ai,i 1

r

 

, v a

ai,i 1ai 1,i

,

 

 

1

 

 

i

i

 

 

 

i

i

ii

vi 1

(2.2.19)

 

 

 

 

vi 1

 

 

 

i n 1, n 2,...,1.

При этом полагаем, что

 

 

 

vn ann , rn bn ,

a10 0,

x0 0.

(2.2.20)

2.2.2. ФОРМАТ ВХОДНЫХ ДАННЫХ

Формат входного файла:

k– порядок сплайна (1 – линейный, 2 – параболический, 3 – кубический);

n

– количество сплайнов;

x0…xn

– узлы сетки;

y0…yn

– значения функции в узлах сетки;

i Ai

– граничные условия (для k = 2);

B0 Bn

– граничные условия (для k = 3);

m– количество интервалов в результирующей сетке (т.е. количество узлов – m + 1, что сде-

ε
S(xm)
xm
...

49

лано для унификации с узлами исходной сетки);

x0…xm – узлы результирующей сетки;

t– любой символ или строка, сообщающая, известно или нет аналитическое выражение для

функции f (x);

f(x) – аналитическое выражение для функции (если оно известно).

2.2.3. ФОРМАТ ВЫХОДНЫХ ДАННЫХ

Формат выходного файла:

 

a0

b0 c0 d0

 

– коэффициенты

сплайнов

a1

b1 c1 d1

 

(естественно, что коэффициенты

...

 

c указываются только для k = 2 и

 

 

 

an-1 bn-1 cn-1

dn-1

k = 3, коэффициенты d – только

 

 

 

 

 

 

для k = 3);

 

x0

S(x0)

 

– значение сплайна в узлах ре-

x1

S(x1)

 

зультирующей сетки;

 

– СКО (если аналитическое выражение для функции известно).

50

2.3. ПРАКТИЧЕСКАЯ РАБОТА №3 «ЧИСЛЕННОЕ ИНТЕГРИРОВАНИЕ ФУНКЦИЙ»

Обязательных методов

4

 

 

Баллов за обязательные методы

8

 

 

Дополнительных методов

2

 

 

Баллов за дополнительные методы

6

 

 

Количество вариантов

1

 

 

Численное интегрирование функций – весьма важный раздел численных методов. При помощи интегралов решается широкий спектр практических задач, самые распространенные из которых – вычисление объемов и площадей тел, длин кривых и т.д. Помимо очевидного преимущества ЭВМ при проведении сложных расчетов, вспомним еще тот факт, что не все интегралы имеют первообразную, а значит, не все интегралы могут быть вычислены аналитически.

В данной практической работе мы будем находить интегралы двумя способами. Первый заключается в интегрировании интерполяционных полиномов. Т.е. исходная функция заменяется некоторым интерполяционным полиномом, который легко интегрировать:

 

 

k

 

 

 

k

I f x dx

ci i x dx ci

 

i 0

 

 

 

i 0

 

k

 

 

 

 

k

 

ci

i

x

 

Ii .

 

i 0

 

 

 

i 0

 

 

 

 

i x dx

(2.3.1)

По аналогии с интерполяционными полиномами, для этого класса методов численного интегрирования задается