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

книги / Численные методы. Ч. 5

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

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

8 = / -

= о ( л !).

Таблица 1.4

Погрешность Ъткусочно-линейной аппроксимации функции cos х при различном числе т сегментов

т

h

5m

т

h

5m

 

2

1,570796

0,215854 10°

16

0,196350

0,321687

10 2

4

0,785398

0,523867-10 '1

32

0,098175

0,803448-10_3

8

0,392699

0,129161 10_|

64

0,049087

0,200814

10’3

О

тт/4

я/2

Зтг/4 х

 

 

а

б

Рис. 1.7. Погрешность кусочно-линейной аппроксимации функции cos х с использованием 4 сегментов на отрезке [0, я] (а) и зависимость

погрешности аппроксимации от длин сегментов (б)

В силу этого 6т —>0 при И —>0 или т —>°°. Это позволяет ут­ верждать, что процесс аппроксимации функции cos х линейной ком­ бинацией кусочно-линейных функций (1.2) сходится равномерно на отрезке [0, я].

Рис. 1.8. Зависимость времени / выполнения расчетов от числа т сегментов разностной сетки

На рис. 1.8 представлена зависимость времени t выполнения рас­ четов от числа т сегментов разностной сетки.

Выводы

1.Процедура метода Галёркина использована для аппроксима­ ции заданной функции cos* линейной комбинацией кусочно-линей­ ных функций. Сформирована система линейных алгебраических уравнений для определения коэффициентов разложения функции cos * по указанной системе функций.

2.Разработана вычислительная программа определения коэффи­ циентов разложения заданной функции по системе кусочно-линей­ ных функций.

3.С использованием разработанной программы определены ко­ эффициенты и построены разложения заданной функции cos* по системе кусочно-линейных функций для 2, 4, 8, 16, 32 и 64 сегментов постоянной длины (см. рис. 1.6).

4.Для указанной последовательности разложений определены по­ грешности аппроксимации заданной функции (см. табл. 1.4) соответст­ вующими линейными комбинациями кусочно-линейных функций.

5.Показано, что с уменьшением длин сегментов погрешность аппроксимации уменьшается (см. рис. 1.7). Установлено, что по­ грешность аппроксимации имеет второй порядок относительно дли­ ны сегментов (шага интегрирования).

6. Выполненное исследование показывает, что процесс аппрок­ симации функции cos х линейной комбинацией кусочно-линейных функций сходится равномерно на заданном отрезке [0, тс].

7. Для аппроксимации функции COSJC с использованием кусочно­ линейных функций на разностной сетке, содержащей 64 сегмента, на компьютере с процессором Intel® Pentium® 4 (тактовая частота 2,2 ГГц, объем оперативной памяти 512 Мбайт) требуется 2,5-10-3 с.

1.3. Кусочно-квадратичные функции

Задание. Аппроксимировать методом Галёркина на отрезке [О, к] функцию cos х с использованием кусочно-квадратичных проб­ ных функций. Сформировать систему линейных алгебраических уравнений относительно коэффициентов разложения этой функции по заданнной системе функций; разработать вычислительную про­ грамму для определения коэффициентов разложения для 2, 4, 8, 64 сегментов постоянной длины; для указанной последовательности

определить погрешности аппроксимации; исследовать зависимость погрешности аппроксимации от длины h сегментов; исследовать сходимость процесса аппроксимации; оценить быстродействие вы­ числительной программы.

Разрешающие соотношения

Заданный отрезок [0, тс] разбивается на т сегментов G,

/ = 1,т, равной длины h =xi - хм = тс/ти, где

= (/ -1) %/т,

xi - in/т . На каждом сегменте

определяются три кусочно­

квадратичные пробные функции:

ф,-1 (х)

( 1.8)

Всё множество пробных функций для отрезка [0, тс] может быть представлено следующим образом1:

1Общее число пробных функций п = + 1.

 

 

 

 

 

 

х,)/й2,

xeG ,,

 

Ф

. М

1

А

' А

* '

 

хй G,;

 

 

 

 

 

0,

 

 

2(*-*М/2 )(*-*,-. )А 2,

хе G,,

 

 

ф /(*)= 2(X ~ Х,+1 /2

)(X - Х|+, )//г ,

x eG f+1,

 

 

 

 

 

0,

 

 

х«ёG,.uGj+l,

 

 

Ф м/2(^)=— -—

^

--------- .

* e G ,>

i= 1>w;

 

/

\ ( 2 ( ^ — Х т-\/2 )(■*• — Х т-1 ) / ^ »

Х ^

G m’

 

< м * ) Н {

 

 

 

' 0,

 

х<£ Gm.

 

Для формирования системы уравнений (1.3) с учетом определе-

 

 

 

 

 

 

 

 

 

л

ния (1.8) пробных функций вычисляются интегралы

JcpA.(JC) ( JC)

 

л

 

 

 

 

 

 

 

о

 

 

 

 

 

 

 

 

 

и

(x)cos xdx. Первый из этих интегралов для k - i - О

 

о

 

 

 

 

 

 

 

 

 

 

Л

 

 

4 Х'г

2

 

 

 

 

\^>l{x)dx =- j

j( x - x 1/2)

[ x - x ,f dx =

 

 

_4

(дг-х,)5 | h (x - x ,)4 | h2(x - x ,)3

2h

 

A4

 

 

 

 

 

12

 

15

Если k = i - 1, функции <p,_, (x) и ф. (x) отличны от нуля на общем

сегменте [хы ,х(],

 

 

X

1

1

 

 

A* т

4_

X i-\/2)

2( х - х ,_1/2)3

 

 

 

 

А

Л4

30'

Если k = i - 1/2, функции Ф,_1/2(*) и Ф,(*) отличны от нуля на

общем сегменте

71

8

J

2

 

,-./2

( х)Ф, ( х)dx = - - Г

j ( х - хм f (х - хм/2) ( x - Xi)dx =

п

” .

 

 

 

(* -* i)5 ЗА (х-х,)4

| А2(х-х,.)3

h_

 

 

 

 

15'

-Ч-1 Если £ = /, функции Ф*(*) = Ф,(*) отличны от нуля на общем

сегменте [х,_„х,+1],

\(^t (x)dx =~ \{ x - x Ml2) \ x - x ^ ) 2d x + ^ } (x - x i+1/2)2(x -j:w )2dc =

_4 ( x - x ,,) 5 A (x -x f_,)4

^ ( x - x , . , ) 3

 

A4

 

12

 

(* -* ,+ .)5 + h{x ~ x,+ S +? { х ~ *,+, )3

4A

 

 

12

15'

При A-1/2 = /-1 /2

функции (pt_,/2 (x) = (p,_iy2 (JC) отличны от нуля

на общем сегменте [х(._р х(],

 

 

)фы/2

=

*,У dx =

 

п

 

 

 

16 ( x - Xif

| А (х -х,)4 t

А2(х-х,.)3

А4

 

 

15'

Если А = / + 1/2, функции ф1+1/2 (х) и ф.(х) отличны от нуля на общем сегменте [х,,xi+1 ],

л

8

Л,+1

 

 

 

2

|+|/2(*)ф; (*)<& = —ТТ J ( x - x ,) ( x - x ,+l/2)(x - x ,+1)

dx =

8_ {х ~ хм )5 , Щ х ~ хм У

, ^2(* - * м )3

h_

V

5

 

8

6

 

15

Если k = i +1, функции

ф1+| (х) и

ср, (х) отличны от нуля на об­

щем сегменте [x, ,xj+1],

 

 

 

 

 

 

4

1

 

 

2

 

|ф,+|(* )ф ,(* )А = Т7 J ( x - x ,) ( x - x w/2)

( x - x M)dx =

 

 

•t.-i

 

 

 

 

 

4_ (х ~ хмц)5

h2 (x ” xw/2)3

h_

 

h2

 

 

 

30'

 

Для k = i = m значение интеграла

 

 

 

Я

^

Xm

 

2

j

 

| ф ™ ( * ) < & = Т 4 -

J

X m-\/2)

A =

 

 

, Н х ~ хт-\) ^ 2( x - x m_,)

2A

 

 

 

 

12

 

15'

Для прочих соотношений индексов к и i функции срЛ(х) и ф. (х)

 

 

 

п

 

 

 

не имеют общих сегментов, т.е. |ф*фXdx = 0.

 

 

 

л

 

о

 

 

 

 

 

 

 

 

 

Интегралы

|ф Л.(x)cosx<ix: в правой части выражения (1.3) с уче-

 

0

 

 

 

 

 

том формул (1.8) определяются формулами

л^ *1

]ф0 cos xdx =— J (x - x 1) ( x - x 1/2)cosx<ir =

^ 2 XCOSAT+ (AC2 -2)sin x -(x1/2 +^,)(cosjc + xsinx) + xl/2A:1sinA:J ' =

3cos xn+ cos x,

(,

4 v

4 .

= ---------

1-----------

[ l - ?

J S.n ,0 - F sm*,;

2 xk

 

 

 

2 X*+|

« « * = * J (x - ^ .,)(x - x t.V2)cosxdc+-^- J (дс—jqttV2)(x-Ajbrt)ooexcfc=

j[^2xcos;t+(;c2 -2) sinj:-(xt_1+ хк_ц2)(cosx+ xsinx) + xk_y2xkAsinxj * +

y^2xcosx+(x2 -2 )sin x -(x t+V2 + xi+1)(cosx + xsin x) + xt+V2x,(+lsinxj'*' =

= ------

---------■£-*---------

---

+ ^ r ( sm xk-\ ~ sm xk+i), k = l,m - u

 

K

4

x>

 

Jcpt4/2cosxdx =- -

j

J (х -х * _ ,)(х -х 4)со8хА =

 

 

 

x*-l

—“ ["2XCOSJC+ (X2 -2 )8 тх -(х л +xJt_1)(cosx+Jcsinx) + xitxjt_1sinx"| * =

8 ( .

\

4 /

\

, \—

= — ^-(sinjc*., -sinx*)

(cosx^ +cosxk),

k = \,m;

h

 

h

 

 

к

2

J (x -x m.,)(x -x m.l/2)cosxA =

f(pmC0Sxdx = - j

оП xm,

-^-[2xcosx+(x2-2)sinx-(xml +*„H/2)(cosx+xsinx)+X(FMXiH/2 sin x jj =

cosxm,

+3cosx_

4 .

4"i .

W-l

W I

n t

 

+ — Sinjfm-1 + P - T T siDJCm-

Подстановка полученных значений в выражение (1.3) приводит к системе 2/я + 1 линейного алгебраического уравнения

2h

Л

h

Л

L

^ Л

а0 — + ai/2 —

 

+ аз/20

+ а20 + ---+ ат0 =

3+cosA 4—sin А,

АА2

А

А

-

л

.

л

 

"0Т5+а,/215 + а |15 + аз/2°

 

т° =

 

=-^-sinA“ (l+cosA),

 

 

 

 

h

h

Ah

h

h

+

+a

n

-an— +0,,,— + o.— + a,/2---- CL

0 =

°30

^/215

15

; 15

^30

 

 

 

l+6cosA+cos2/?

4 .

 

 

 

 

= --------------------------

 

 

7-sin2«,

 

 

 

hh

лn /2 8 /2 / 2 a00+al/20+a, — +aj/2— +a2— +...+am0 -

8

 

 

4

 

 

= — (sin 2h- sin h)- —(cosh +cos 2h),

 

.

A

h

h

Ah

 

a00+aV20-al— +ch/2— +a2 — +...+am0=

_ COSA+6COS2A+COS3/J

4(sinA-sin3A)

 

"

 

h

+

h2

 

 

 

 

2/?

 

ao0+ al/20+ a,0+ a3/20+---+am— =

 

cos("(w -l)Al-3

4

r ,

 

°L „

относительно коэффициентов а, разложения (1.2). Матрица коэффи­ циентов и правая часть этой системы уравнений имеют вид

2A/15

A/15

-h/30

0

0

0

Л/15

8A/15

A/15

0

0

0

-h/30

A/15

4A/15

A/15

-h/30

0

0

0

A/15

8A/15

A/15

0

0

0

-h/30

A/15

4A/15

0

0

0

0

0

0

2A/15

(3 + cosA)/A--4sinA/A 2

8sin A/А2 -4(l+cosA)/A

(1+ 6 cos A + cos 2h)/h - 4 sin 2h/h2

8(sin2A-sinA)/A2-4(cosA + cos2A)/A

(cos A +6cos 2A + cos3h)/h+4(sinA - sin 3h)/h2

[cos(m - \)h - 3]/h+4sin[(»i - l)h]/h2

Алгоритм решения

Ниже приведён фрагмент программы на языке Си, реализующей процедуру аппроксимации функции cos х с использованием кусочно­ квадратичных пробных функций.

Программа 1.3

//Аппроксимация функции. Кусочно-квадратичные пробные функции

//Ne - число сегментов

//С массив для коэффициентов

//F массив правых частей

//х массив координат узлов

#define Ne 64

void main(void)

{double xO, xl, h, C[Ne][Ne], F[Ne], x[Ne+l]; int i , k ;

х0=0.0; // начальная точка xl=M_PI; // конечная точка h=(xl-xO)/Ne; // длина шага сегмента

for(k=0; k<Ne+l; k++) x[k]=xO+h*k; for(k=0; k<2*Ne+l; k++)

for(F [k]=0.0, i=0; i<2*Ne+l; i++ ) C[k][i]=0.0;

for(k=0; k<Ne ; k++)

{if (k==0)

{C [2*k] [2*kJ=2.0*h/15.0;

F [2*k] = (3.0+cos(h))/h - 4 .0*sin(h)/ (h*h) ;

}

else

{C[2*k] [2*k]=4.0*h/15.0;

F[2*k]= (cos((k-1)*h)+6.0*cos(k*h)+cos((k+1)*h))/h+

4 . 0 * (sin((k-1)*h)-sin((k+1)*h))/ (h*h);

}

C [2*k] [2*k+l]=C[2*k+l] [2*k]=h/15.0; C [2*k] [2*k+2]=C[2*k+2] [2*k]=-h/30.0; C[2*k+1] [2*k+l]=8.0*h/15.0;

C[2*k+l] [2*k+2]=C[2*k+2] [2*k+l]=h/l5.0;

F[2*k+l]= - 4 . 0*(cos(k*h)+cos((k+1)*h))/ h - 8 .0*(sin(k*h)- sin((k+1)*h))/ (h*h);

}

C[2*Ne][2*Ne]=2.0*h/15.0;

F [2*Ne] = (cos((Ne-1)*h)-3.0)/h+4.0*sin((Ne-1)*h)/ (h*h);

//Решение

системы линейных алгебраических уравнений

G A USS (С,

F, Ne+1);

1__________________________________________________________

Реализация алгоритма

Первоначально заданный отрезок разбивается на четыре сегмен­ та равной длины

[0,K] = G 1 UG2 UG3UG4,

где G,=[0,Jt/4], G2=[K/ 4 ,п/2], G3=[n/2,Зя/4] и G4 =[3д/4,д]. На

каждом из этих сегментов в соответствии с выражением (1.8) опре­ деляются кусочно-линейные пробные функции (рис. 1.9).

Заданная функция f(x) представляется разложением (1.2). Соот­ ношения (1.3) принимают вид системы линейных алгебраических уравнений

лл

X ai

= |ф * cos xdx

(1 .9 )

оо

относительно коэффициентов ах, / = 0,1/2,1,3/2,..., 4.