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

4867

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

71

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

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

3

 

 

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

5

 

 

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

0

 

 

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

0

 

 

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

1

 

 

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

yi+1

 

yi

Линейный

сплайн

 

Кубический

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

сплайн

сплайн

xi

xi+1

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

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

72

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

(рис. 2.6.1).

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

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

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

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

73

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

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

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

 

m

 

 

Si x

c ji ji x , ji x x xi j

 

j 0

 

(2.6.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.6.1.1. ЛИНЕЙНЫЕ СПЛАЙНЫ

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

Si x ai bi x xi ,

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

(2.6.2)

При этом

 

 

 

a y ,

b yi .

(2.6.3)

i i

i

xi

 

 

 

 

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

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

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

74

S

x a b x x

c

x x

2 ,

 

i

i

i

 

i

i

 

i

 

(2.6.4)

 

 

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

 

 

 

 

 

 

 

 

 

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

 

 

 

a y ,

c

bi 1 bi

.

 

(2.6.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.6.6)

 

 

 

 

 

 

 

 

 

 

0

0

i 1

 

 

xi

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

начиная с bn:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b A ,

b

2yi

b

 

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

 

(2.6.7)

 

 

 

1

 

 

n

n

i

 

 

xi

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

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

сплайна

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S

x

a b

x x c

x x

2 d

x x 3

,

 

i

 

i

i

 

 

 

 

 

i

 

i

 

 

 

i

i

 

i

 

(2.6.8)

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

a y ,

c

1

M

 

,

d

 

 

Mi 1 Mi

.

 

(2.6.9)

 

 

 

i

i

 

 

 

 

i

i

 

 

i

2

 

 

 

 

 

 

6xi

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

bi yi xi 2Mi Mi 1 , i 0,1,..., n 1xi 6

или

bi yi 1 xi 1 2Mi Mi 1 , i 1, 2,..., n.xi 1 6

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

AM = g,

где

 

 

 

1

x j 1

x j ,

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

a jj

 

3

A

 

 

 

 

 

 

1

 

 

 

a

 

 

a

 

 

x

,

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

j, j 1

j 1, j

 

 

 

 

 

6

j

 

 

 

 

 

 

 

 

 

 

 

 

g

i

yi

yi 1

 

 

n 1

,

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

 

xi

xi 1

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x0

 

 

 

, i 1

 

 

 

ãäå 1

 

 

 

B0

 

 

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0, i 1

 

75

(2.6.10)

(2.6.11)

(2.6.12)

(2.6.13)

(2.6.14)

 

 

x

Bn , i n 1

 

 

n 1

n 1

6

 

 

 

 

 

 

 

0, i n 1

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

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

76

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

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

 

 

 

 

 

 

AM g,

 

 

(2.6.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.6.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.6.17)

g

 

 

 

 

yi

 

 

yi 1

 

 

 

 

 

g

 

 

 

,

 

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

 

 

 

 

 

 

i

 

 

xi

 

xi 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

77

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

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

xi

 

1

 

ri ai,i 1xi 1 ,

i 1, 2,..., n;

(2.6.18)

 

 

 

vi

 

 

 

 

 

 

r b

ai,i 1

r

 

, v a

ai,i 1ai 1,i

,

 

 

1

 

 

i

i

 

 

 

i

i

ii

vi 1

(2.6.19)

 

 

 

 

vi 1

 

 

 

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

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

 

 

 

vn ann , rn bn ,

a10 0,

x0 0.

(2.6.20)

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

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

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

n

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

x0…xn

– узлы сетки;

y0…yn

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

i Ai

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

B0 Bn

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

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

ки);

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

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

ε
S(xm)
xm
...

78

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

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

2.6.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)

 

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

 

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

79

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

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

4

 

 

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

3

 

 

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

2

 

 

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

2

 

 

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

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.7.1)

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

80

исходная сетка {xi} и значение функции в узлах сетки {yi}, i = 0, 1, …, n. Если сетка равномерная, то достаточно знать границы отрезка a и b, а узлы при необходимости вычисляются по формулам (2.5.5) и (2.5.6).

Второй способ заключается нахождении интеграла на отрезке [–1, 1] с подбором оптимальных узлов интегрирования:

1

I

1

n

 

f t dt ci f ti .

(2.7.2)

i 1

Узлы ti подбираются таким образом, чтобы формула (2.7.2) была точной для степенного полинома максимально возможного порядка. При переходе к отрезку [a, b] имеем

b

 

b a

n

 

 

I f x dx

ci f xi ,

(2.7.3)

 

 

a

 

 

2

 

i 1

 

 

 

 

 

 

 

 

 

x

b a

 

b a

t .

(2.7.4)

 

 

i

2

 

 

 

2

 

i

 

 

 

 

 

 

 

 

Существуют и другие подходы к вычислению интегралов. Например, статистические, или вероятностные (как и вероятностные методы решения СЛАУ, различные модификации этих методов называются методами МонтеКарло). Например, вычислить объем шара радиуса R статистически можно следующим образом. Будем случайным образом задавать N точек (xi, yi, zi), лежащие в кубе, в который вписан шар (т.е. каждая из координат должна лежать в диапазоне [–R, R]). Подсчитаем также количество точек M, оказавшихся внутри шара, т.е. для которых выполняется условие

xi2 yi2 zi2 R2 ,

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]