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

Компьютерное моделирование и проектирование

..pdf
Скачиваний:
18
Добавлен:
05.02.2023
Размер:
838.1 Кб
Скачать

На каждом из отрезков [xi1, xi ],i =1,2,..., N , будем искать функцию

s(x) = si (x) в виде многочлена третьей степени

 

 

 

 

s (x) = a +b (x x ) + ci

(x x )2

+ di (x x )3

,

 

i

i i

i

2

i

6

i

 

(102)

 

 

 

 

 

 

xi1 x xi ,i =1,2,..., N,

где ai ,bi ,ci ,di – коэффициенты, подлежащие определению. Поясним смысл введенных коэффициентов. Имеем

s ' =b + c (x x ) + di (x x )2

,

 

i

i

i

i

2

i

 

 

 

 

 

 

 

 

 

 

si

''(x) = ci + di (x xi ),

 

 

 

 

si '''(x) = di ,

 

 

 

 

 

поэтому

 

 

 

 

 

 

 

ai = si (xi ),

bi = si '(xi ),

 

ci = si ''(xi ),

di = si '''(xi ).

(103)

Из условий интерполирования

s(xi ) = f (xi ),

i =1,2,..., N,

получаем,

что

 

ai = f (xi ),

i =1,2,..., N.

(104)

 

 

Доопределим, кроме того, a0 = f (x0 ) .

Далее, требование непрерывности функции s(x) приводит к условиям

si (xi ) = si+1(xi ),

i =1,2,..., N 1.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Отсюда, учитывая

выражения

для функций

si (x), получаем

при

i = 0,1,..., N 1 уравнения

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a

= a

+b

(x

x

) +

ci+1

 

(x

x

)2

+

di+1

(x

x

 

)3.

 

 

 

 

 

i

i+1

i+1

i

i+1

 

2

 

i

 

 

i+1

 

 

 

 

 

6

 

i

i+1

 

 

Обозначая hi = xi xi1,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

перепишем эти уравнения в виде

 

 

 

 

 

h b

h2

c +

h3

d

 

= f

 

f

 

 

,

i =1,2,..., N .

(105)

 

 

 

 

i

i

 

 

 

 

 

 

 

 

i i

2

i

6

 

i

 

 

i

 

 

i1

 

 

 

 

 

 

Условия непрерывности первой производной

 

 

 

 

 

 

 

si(xi ) = si+1(xi ),

i =1,2,..., N 1

 

 

 

приводят к уравнениям

c h di h2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

= b

 

b

 

,

 

i = 2,3,..., N.

(106)

 

 

 

 

 

i

i

2

i

 

i

 

i1

 

 

 

 

 

 

 

61

Из условия непрерывности второй производной получаем уравнения

dihi

= ci ci1,

i = 2,3,..., N.

(107)

Объединяя (105) – (108), получим систему

3N 2 уравнений

относительно 3N неизвестных

bi ,ci ,di,

i =1,2,..., N .

Два недостающих

уравнения получают, задавая те или иные граничные условия для s(x).

Предположим, например,

что функция f(x)

удовлетворяет

условиям

′′

′′

естественно требовать, чтобы

′′

′′

f (a) = f (b) = 0. Тогда

s (a) = s (b) = 0 .

 

′′

=

′′

 

 

 

Отсюда получаем si (x0 )

0, sN (xN ) = 0, т.е. c1 d1h1 = 0,cN = 0 . Заметим,

что

условие c1 d1h1 = 0

совпадает с уравнением (107)

при

i =1, если

положить c0 = 0 :

 

 

 

 

 

 

hidi = ci ci1,i =1,2,..., N,

c0 = cN = 0,

 

(108)

Таким образом, получена замкнутая система уравнений (105), (106) и (108) для определения коэффициентов кубического сплайна.

Убедимся в том, что эта система имеет единственное решение. Исключим переменные bi ,di , i =1,2,..., N 1 и получим систему,

содержащую только ci , i =1,2,..., N 1. Для этого рассмотрим два соседних уравнения (105):

 

 

 

 

b =

h

c

 

h2

d

 

+

 

 

f

i

f

i1

,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

h

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

 

2

i

 

 

6

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b

=

h

1

c

 

h2

 

d

 

 

 

+

 

f

i1

f

i2

 

 

 

 

 

 

 

 

 

 

 

 

i

 

 

i1

i1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i1

 

2

 

i1

 

 

6

 

 

 

 

 

 

 

 

 

h

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i1

 

 

 

 

 

 

 

 

 

 

и вычтем второе уравнение из первого. Тогда получим

 

 

 

 

 

 

b b

= 1 (h c h c

)

1 (h2d

i

h2

d

i1

) +

 

 

fi fi1

 

 

fi1 fi2

.

 

 

 

 

h

 

 

 

i i1

2

i i

i1

i1

 

 

 

6

 

i

 

 

 

 

 

 

 

i1

 

 

 

 

 

 

 

 

 

 

 

h

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

 

 

 

i1

 

Подставляя

найденное

выражение

 

 

для

 

 

 

bi

 

bi1

 

в правую

часть

уравнения (106), получим

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

fi fi1

 

 

 

fi1 fi2

 

 

hici

+ hi1ci1

hi1

di1

2hi

di

 

= 2

 

 

.

(109)

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hi

 

 

 

 

 

 

 

hi1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

62

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Далее, из уравнения (108) получаем

h2d

i

= h (c c

),

h2

d

1

= h

(c

c

)

 

 

 

i

i i

i1

 

i1 i

i1

i1

 

 

i2

 

 

 

 

и, подставляя эти выражения в (109), приходим к уравнению

 

 

 

 

 

 

 

 

 

fi fi1

 

 

 

fi1 fi2

 

 

hi1ci2 + 2(hi1 + hi )ci1 + hici = 6

 

.

 

 

 

 

 

 

 

 

 

 

 

 

hi

 

 

 

 

 

hi1

Окончательно для определения коэффициентов с, получаем систему

уравнений

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hici1 + 2(hi

+ hi+1)ci

+ hi+1ci+1 =

 

 

fi+1 fi

 

 

 

 

fi

fi1

 

(110)

6

 

 

 

 

,

 

 

 

 

hi

 

 

 

 

 

 

 

 

 

hi+1

 

 

 

 

 

 

 

 

 

 

i =1,2,..., N 1,

c0 = cN = 0.

 

 

 

 

 

 

 

В силу диагонального преобладания система (110) имеет

единственное решение. Так как матрица системы трехдиагональная, решение легко найти методом прогонки, которая в данном случае устойчива. По найденным коэффициентам ci коэффициенты bi и di

определяются с помощью явных формул

 

 

 

 

 

 

 

 

d

 

 

c

c

b =

h

c

h2

d

 

 

f

 

f

 

 

i =1,2,..., N.

 

 

 

=

i

i1

,

i

i

 

+

 

i

 

i1

,

(111)

 

 

 

 

 

 

 

h

 

 

 

i

 

 

h

i

2

i

6

 

i

 

 

 

 

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

i

 

 

 

 

Таким образом, доказано, что существует единственный кубический

сплайн,

определяемый

условиями

а)

в) и

граничными

условиями

′′

′′

 

= 0 . Заметим, что можно рассматривать и другие граничные

s (a) = s (b)

условия.

Итак, при интерполяции основным условием является прохождение

графика интерполяционного многочлена через данные значения функции в узлах интерполяции. Однако в ряде случаев выполнение этого условия

затруднительно или даже нецелесообразно, например, если исходная

таблица значений функции получена в результате эксперимента и неизбежно уже содержит измерительную погрешность.

11 Аппроксимация функций

63

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

Пусть даны значения функции ƒ(x) в точках xk [a,b], k = =0,1,....,n.

Аппроксимация состоит в выборе вида функции ϕ(x) и определении ее коэффициентов исходя из критерия наилучшего приближения в точках xk

к ƒ(x). В качестве аппроксимирующей функции можно выбрать любую,

качественное поведение которой напоминает ƒ(x). В качестве универсальных функций используются ортогональные полиномы степени

т<п.

Введем обобщенный многочлен и будем рассматривать его значения только в узлах xk, т.е.

ϕ(xk ) = c0ϕ0 (xk ) + c1ϕ1(xk ) +... + cnϕn (xk ) , k = 0,1,...,m.

(112)

Функции ϕk называются базисными и должны быть ортогональны

друг другу. В качестве базисных функций можно выбрать канонический многочлен (62), полиномы Чебышева (86) и др.

Образуем разности

rk =ϕ(xk ) f (xk ), k = 0,1,...,m,

(113)

характеризующие отклонение в узлах xk точного значения функции ƒ(х) от ее приближенного значения, полученного с помощью обобщенного многочлена (112). Для вектора погрешностей

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

r = (r ,r ,...,r

)T

 

 

 

(114)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0 1

m

 

 

 

 

 

 

можно ввести ту или иную норму, например,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

 

 

m

 

 

 

 

 

 

 

 

 

 

 

r

 

 

 

= (r2k )12 = ((ϕ(xk ) f (xk ))2 )12

(115)

 

 

 

 

 

 

 

 

 

 

 

 

 

k=0

k=0

 

 

 

 

 

 

 

 

или

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

r

 

 

 

= max

 

r

 

 

= max

 

ϕ

 

f (x )

 

.

(116)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0km

 

k

 

 

0km

 

 

 

k

k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Задача о наилучшем приближении функции ƒ(х), заданной таблично, состоит в нахождении коэффициентов с0, с1,..., сп, минимизирующих норму

64

вектора r. В зависимости от выбора нормы получим различные задачи. Так, норме (115) соответствует задача о наилучшем среднеквадратичном приближении, а норме (116) – задача о наилучшем равномерном приближении функции, заданной таблично.

Если т=п, то независимо от выбора нормы решение с=(с0, с1,..., сn)т задачи о наилучшем приближении совпадает с решением задачи интерполяции. Действительно, в этом случае требование ||r||=0 приводит к выполнению основного условия интерполяции

ϕ(xk ) = f (xk ), k = 0,1,...,n.

12 Сглаживание сеточных функций

Пусть имеется таблица значений {ƒi}Ni=0 функции ƒ(х), полученная, например, путем измерения некоторой физической величины или с

помощью численных расчетов. Может оказаться, что ƒ(x) сильно меняется

на отдельных участках. В этом случае иногда целесообразно применить процедуру сглаживания, т.е. приближенно заменить ƒ(x) другой, более

гладкой функцией ϕ(х).

 

 

 

 

 

 

 

 

Для построения сглаженных

функций можно воспользоваться

 

 

 

 

 

 

 

(i)

 

 

среднеквадратичными приближениями. Многочлен ϕ (х) наилучшего

среднеквадратичного приближения, построенный по значениям

ƒi–1, ƒi,

ƒi+1, имеет вид

fi1 + fi + fi+1

 

fi+1 fi1

 

 

 

ϕ(i) (x) =

+

(x x ) ,

(117)

 

 

 

 

 

3

 

 

 

2h

i

 

причем

 

 

 

 

 

 

 

 

 

 

 

 

 

ϕ(i) (x ) =

fi1 + fi + fi+1

, i =1,2,..., N 1.

 

(118)

 

 

i

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Доопределим ϕ(0)(x0)=f0, ϕ(N)(xN)=fN и обозначим ϕi=ϕ(i)(xi) i=0,1,…,N.

Процедура сглаживания по формулам (118) состоит в замене

сеточной функции {ƒi}Ni=0 сеточной функцией {ϕi}Ni=0. То, что такая

замена действительно осуществляет сглаживание, можно иллюстрировать

примером, приведенным в таблице 2.

Таблица 2

i

0

1

2

3

4

5

6

7

8

9

10

11

12

ƒi

1

1

1

1

0

0

0

0

10

0

0

0

0

ϕi

1

1

1

2/3

1/3

0

0

10/3

10/3

10/3

0

0

0

 

 

 

 

 

 

 

65

 

 

 

 

 

 

Здесь функция ƒi имеет две особенности: разрыв при i=3 и выброс при i=8. Сглаживание приводит к размазыванию разрыва, а также к размазыванию выброса и уменьшению его амплитуды. На участках гладкости ƒ(x) функция ϕ(x) также остается гладкой. Для наглядности читателю предлагается построить графики функций ƒ(х) и ϕ(x).

В рассмотренном случае сглаживание свелось к осреднению функции ƒ(х) по трем соседним точкам. Можно проводить осреднение и по большему числу точек, например по пяти точкам, когда

2

2

ϕi = αj fi+ j ,

αj =1.

j=−2

j=−2

Поясним, почему осреднение приводит к сглаживанию. Будем считать, что ƒ(х) задана на равномерной сетке

ωh ={xi = ih,i = 0,1,..., N,hN = l},

причем ƒ0=ƒN=0. Осреднение ƒ(х) по формулам (118) приводит к функции

ϕi =

f

i1

+ f

i

+ f

i+1

= fi +

h2

f

 

,

(119)

 

 

 

 

 

 

 

 

 

 

3

 

 

3

xx,i

 

 

 

 

 

 

 

 

 

i =1,2,..., N 1, ϕ0 =ϕN = 0 .

Таким образом, можно считать, что процедура осреднения

представляет собой замену сеточной функции ƒ сеточной функцией Tf, где

Т=Е+h2Λ/3, Е – единичный оператор, Λ – оператор второй разностной

производной. Будем называть Т оператором осреднения.

Можно показать, что оператор Т не подавляет низкочастотные гармоники и уменьшает амплитуду высокочастотных гармоник примерно в три раза, что и объясняет эффект сглаживания.

13. Разностная аппроксимация производных

Рассмотрим задачу о приближенном вычислении производных функции u(x), определенной и непрерывной на отрезке [a,b]. Будем

считать, что u(x) обладает необходимой по ходу изложения гладкостью.

Введем согласно (101) сетку ωh и заменим предел приращения функции на

конечную разность, используя значения сеточной функции слева и справа от рассматриваемой точки x = xi :

66

ui = u ( xi ), u = (ui ui 1 ) / h,

 

x ,i

(120)

u x ,i = (ui +1

ui ) / h, u o =

(ui +1 ui 1 ) / 2 h.

 

x ,i

 

Приведенные здесь разностные отношения называются соответственно

левой, правой и центральной разностными производными функции u(x) в

точке x = xi . Если точка xi фиксирована, а шаг h стремится к нулю (при

этом количество разбиений N→ ∞), то каждое из этих разностных соотношений стремится к значению производной функции u(x) в точке xi ,

поэтому в качестве приближенного значения u' (x) можно взять любое из

них.

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

например, левую разностную производную в точке x = xi и перепишем ее в виде

 

 

u = u(x) u(x h) .

 

 

 

 

 

 

x,i

 

 

h

 

 

 

 

 

 

Используя разложение функции u(x) в ряд Тейлора

 

 

 

'

(x) +

h2

''

(ξ),ξ (x h, x) ,

(121)

u(x h) = u(x) hu

2

u

получим

 

 

 

 

 

 

 

 

 

 

 

u = u' (x ) h u'' (ξ

 

 

 

 

 

).

 

(122)

 

 

x,i

 

i

 

2

i

 

 

 

 

 

 

 

 

 

 

 

 

Погрешность

u

u' (x ) ,

 

возникающая

при

замене

 

x,i

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

дифференциального

выражения

 

u' (x)

разностным

выражением

u ,

 

 

 

 

 

 

 

 

 

 

 

x,i

называется погрешностью аппроксимации. Из разложения (122) видно, что погрешность аппроксимации является величиной O(h) при h 0 . В этом случае говорят, что имеет место аппроксимация первого порядка. Обратим внимание, что в этом разделе речь идет о разностной аппроксимации в отличие от аппроксимации функций, рассмотренной в разделе 11. Объединяет эти два раздела лишь английский термин (в обоих случаях речь идет о приближенной замене).

Приведем разложения, аналогичные (122), для других разностных отношений:

u

x,i

= u' (x ) + h u" (ξ(1) ),

ξ(1)

(x

, x

),

(123)

 

i

2

i

i

i

i+1

 

 

 

 

 

 

 

 

 

 

 

 

 

67

 

 

 

 

 

 

 

uo

= u' (x ) + h2

u"' (ξ(2) ),

ξ(2)

(x

, x

),

(124)

x,i

i

6

i

i

i1

i+1

 

 

 

 

 

 

 

 

 

Из разложения (124) видно, что центральная разностная производная аппроксимирует u' (x) со вторым порядком и, следовательно, является более точным приближением к u' (x) , чем левая или правая разностные

производные. Наряду со (122) (124) можно использовать менее детальную запись тех же разложений, а именно

u = ui' + o ( h ), u x ,i = ui' + o ( h ), u o

= ui' + o ( h 2 ).

 

x ,i

 

 

x ,i

 

 

 

 

 

Вторую производную u" (x) можно приближенно заменить в точке

xi ωh второй разностной производной

 

 

 

 

 

u =

1 (u

x,i

u ) =

ui+1 2ui +ui1

.

(125)

 

xx,i

h

x,i

 

h2

 

 

 

Разложение по формуле Тейлора приводит к следующему

выражению для погрешности:

 

 

 

 

 

 

 

 

 

u

u" (x ) = h2

u(4) (ξ

),

 

(126)

 

xx,i

 

i

12

i

 

 

 

 

 

 

 

 

 

 

т.е. имеет место аппроксимация второго порядка.

Мы привели простейшие интуитивно понятные примеры аппроксимации дифференциальных выражений разностными, порядок аппроксимации которых относительно невысок.

Записывая интерполяционный многочлен Лагранжа L(x) и его остаточный член RL (x) (см. (67) и (84)) для случая пяти узлов

интерполяции (n=4) и дифференцируя их соответствующее количество раз, получим следующие выражения для производных функции в центральном узле x = xi :

 

u' (x )=

1

(u

8u

 

+8u

 

u

)

+

h4

uV ,

(127)

 

12h

 

 

 

 

 

 

i

i2

 

i1

 

i+1

i+2

 

30 *

 

u'' (xi )=

1

 

(ui2 +16ui1 30ui +16ui+1 ui+2 )+O(h4 ).

(128)

12h

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таким образом, получены формулы повышенного порядка аппроксимации. Отметим, что в случае трех узлов интерполяции (n=2)

68

получаются выражения, совпадающие с записанными ранее центральными разностными производными.

Для численного вычисления производной функции на концах отрезка [a,b] (где не определены, например, ui2 или ui+1 ) можно воспользоваться

левой и правой разностными производными соответственно, а также формулами повышенного порядка аппроксимации, которые можно получить, записав продифференцированный многочлен Лагранжа не в центральном, а в левом или правом узле интерполяции.

В общем случае погрешность, возникающая в результате замены дифференциального выражения разностным, зависит как от распределения узлов сетки, так и от гладкости функции.

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

14 Численное интегрирование

14.1 Квадратурная формула. Частичные отрезки

Численное вычисление определенных интегралов

I = b f (x)dx

a

основано на замене интеграла конечной суммой

n

In = ck f (xk ),

k=0

где ck – числовые коэффициенты и xk – точки отрезка [a, Приближенное равенство

b

n

f (x)dx ck f (xk )

a

k=0

(129)

(130)

b], k=0,1,…,n.

называется квадратурной формулой, а сумма вида (130) – квадратурной суммой. Точки xk называются узлами квадратурной формулы, а числа ck – коэффициентами квадратурной формулы. Разность

69

b

n

 

Ψ = f (x)dx ck f (xk )

(131)

a

k =0

 

называется погрешностью квадратурной формулы. Погрешность зависит как от расположения узлов, так и от выбора коэффициентов. При оценке погрешности в приводимых ниже примерах функция f(x) предполагается достаточно гладкой.

Введем на [a, b] равномерную сетку ωh с шагом h (101) и представим интеграл (129) в виде суммы интегралов по частичным отрезкам:

b

N xi

 

f (x)dx = f (x)dx.

(132)

a

i=1 x

 

 

i1

 

Для построения формулы численного интегрирования на всем отрезке [a, b] достаточно построить квадратурную формулу для интеграла

xi

 

f (x)dx

(133)

xi1

на частичном отрезке [xi–1, xi] и воспользоваться свойством (132).

14.2 Формула прямоугольников

Заменим интеграл (133) выражением f(xi–1/2)h, где xi–1/2=xi–0,5h. Геометрически такая замена означает, что площадь криволинейной

трапеции ABCD заменяется площадью прямоугольника ABC’D’ (см. рис. 4). Тогда получим формулу

xi

 

f (x)dx f (xi1/ 2 )h,

(134)

xi1

которая называется формулой прямоугольников на частичном отрезке[xi–1, xi].

70

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