Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Численные методы Часть 5..pdf
Скачиваний:
9
Добавлен:
15.11.2022
Размер:
7.37 Mб
Скачать

относительно коэффициентов a .,i = l,w, разложения (1.2). Матрица

коэффициентов и правая часть этой системы уравнений имеют вид

 

о

о

о

О А О

0

0

0

А

0

0

0

0

А

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

sin (Л)

sin (2А)- sin (h)

sin(3A)-sin(2A) ►

-sin[(/w -l)A ]

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

Программа 1.1

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

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

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

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

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

#define Ne 64 void main(void)

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

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

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

{ F [k]=sin((k+1)*h)-sin(k*h); for(i =0 ; i<Ne; i++)

{if (i==k) C[k][i]=h; else C[k] [i]=0.0;

//Решение

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

G A USS(С,

F, N e ) ;

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

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

[о,я]=<7, и е 2 ис7,и<?4.

где <7,=[0,л/4], G2=[n/4,n/2], G} =[л/2,Зл/4] и G4 = [3я/4,я]. На

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

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

4

я

71

___

 

Z *J<P * (x )<Pi(x )d x = J*P* (^ )C0SAT£*r,

k = 1,4,

(1 .5 )

'=1

0

0

 

 

относительно коэффициентов an i = 1,4.

В соответствии с выражениями (1.5) подсчитываются значения интегралов (с учетом определения (1.4) пробных функций):

л л л л

|ф ?(х)А = J<p\(x)dx= | ф32(д:)dx= Jcp^ (JC)<^C= h = л/4 = 0,785398,

0

0

0

0

 

л

л

л

 

J<pi W <P2W a

= | ф. (*)ф3 (*)<&= /ф| (■*)ф4(-г)л = °.

 

0

0

0

 

л

л

л

 

|ф 2 (* )ф | ( * ) < & = /ф 2 ( х )фз {x)dx= J(p2 ( дс) ф 4 {x)dx = 0,

 

0

0

о

 

л

л

л

 

|фз(*)ф. (x)dx=|ф 3(*)ф2 (*)<& = |фз(л:)ф4 (*)<& = 0,

 

0

0

0

 

л

л

л

 

|ф 4(х)ф, (x)dx= |ф 4 (^)ф2 (x)dx = |ф 4 (*)ф3 (x)dx = 0,

 

0

0

0

ля/4

|ф, (x)cos;«£c = Jcos;tc& = smA = sm(ft/4) = V2/2 = 0,707107,

оо

лл/2

Jcp2(x)c° sxcfcc= JcosxA = sin x |^ = sin(rc/2)-sin(rc/4) = I - V 2/2 =

Оп/4

=0,292893,

лЗл/4

J(p3(x )c o s x (ic = J cosx<i* = s in x |^ 4 = sin (3rc/4)-sin(rc/2) = >/2/2-1 =

Ол/2

=-0,292893,

л

л

Jcp4 (JC)COSjcrfr = Jcosxdfr = sin jc|"^4 = sin7t:-sin(3K/4) = 0 - V 2/2 =

ОЗл/4

= -0,707107

9K-Y)

Ф-(х)

1

1

1 1

1 1

1

 

1

I 1 1----1----1----

0

л/'4

л/2

Зл/4

л

0

Л;Ч

л/2 Зл/4

л

 

 

а

 

 

 

 

б

 

 

Ф?(х)

 

 

 

 

ф4(Х )

 

i ----

1----1----

г—

 

 

0

л/4

л/2 3TC/4 л

0

rc/4 л/2 Зл/4 л

 

 

в

 

 

Рис. 1.1. Пробные кусочно-постоянные функции на отрезке [0, л]

Подстановка полученных значений в выражение (1.5) приводит к системе четырёх линейных алгебраических уравнений

0,785398а, +0,0а2 +0,0а3 + 0,0а4 = 0,707107, 0,0а, +0,785398а2 +0,0а3 + 0,0а4 =0,292893,

'0,0а, +0,0а2 +0,785398а3 +0,0а4 =-0,292893, 0,0л, + 0,0л2 + 0,0л3 + 0,785398я4 = —0,707107

относительно коэффициентов я, разложения (1.2) (табл. 1.1).

Таблица 1.1

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

0,785398

0,0

0,0

0,0

0,707107

0,0

0,785398

0,0

0,0

0,292893

0,0

0,0

0,785398

0,0

- 0,292893

0,0

0,0

0,0

0,785398

-0,707107

Результаты расчётов

Использование Программы 1.1 позволило найти решение этой системы уравнений:

я, =0,900317, а2=0,372923, а3=-0,372923, а4 = -0,900317.

Аппроксимация функции / ( X) = C O S A : на отрезке [0, к] представ­ лением (1.2) при т = 4 показана на рис. 1.2, а. Аппроксимация той же функции с использованием т = 64 кусочно-постоянных функций приведена на рис. 1.2, б. На рис. 1.3, а изображена зависимость от координаты х погрешности

4

Д = C O S JC - 5 > /< P / ( JC) i=\

представления функции cos* разложением (1.2). В табл. 1.2 приведе­ ны значения погрешности (1.1) аппроксимации функции cos* при различных значениях числа слагаемых в разложении (1.2), опреде­ лённые с помощью чебышёвской нормы. Эти же данные приведены в графическом виде на рис. 1.3, б.

С использованием формулы (В.1) приближенно определяется по­ рядок погрешности аппроксимации функции cos х разложением (1.2):

/> = (1п0,636620 - In 0,024539)/(In 1,570796 - In 0,049087) = 0,939455.

 

 

 

 

 

Таблица 1.2

 

Погрешность 5Шкусочно-постоянной аппроксимации

 

функции cos х при различном числе т

 

т

h

8m

I т

h

8m

2

1,570796

0,636620-10+о

16

0,196350

0,978598-10'1

4

0,785398

0,372923-10^

32

0,098175

0,490480-10_|

8

0,392699

0,193839-10^

64

0,049087

0,245388-10“'

О

7г/4

л/2

371/4

х

б

Рис. 1.2. Аппроксимация cos х кусочно-постоянными функциями с использованием 4 (а) и 64 (б) сегментов на отрезке [0, л]

Это показывает, что погрешность аппроксимации заданной функции методом Галёркина с использованием кусочно-пос­ тоянных функций приближенно оценивается как величина первого порядка относительно длин h сегментов одинаковой длины, т.е.

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

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

а

б

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

на отрезке [0, л] (а) и зависимость погрешности аппроксимации от длин сегментов (б)

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

Выводы

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

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

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

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

функций.

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

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

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

1.2. Кусочно-линейные функции

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

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

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

i = l,m9

равной длины

h =xi - x i ] =к/т, где

= (/-1 )я //и ,

х ^ т /т .

На каждом сегменте

определяются

две кусочно­

линейные пробные функции:

 

 

 

Фи (*) = (*/" * ) / А»

=

xeG , =[*w ,x,].

(1.6)

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

представлено следующим образом:

 

 

 

 

 

Ф.-(*) = |( * м - * ) / А> х е С м> / =

1;

 

 

О,

G, uG ,+p

 

 

Число пробных функций совпадает с числом узлов, п = т + 1.

* - м = { [О,1 Г *x<tGmГ г А. '

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

71

ния (1.6) пробных функций вычисляются интегралы J(pjt(jc)cp/(x)dx

о

п

и ]ф* (*)cos xdx. Для k =i =0 первый из этих интегралов

 

21 ^

 

 

j

(* “ *l)3

А

 

 

]ф о (**0 ^ ' =

J"

"

dx —'

ЗА

3 '

 

Если

k =i - 1, функции

<ры (х)

и <p,(jt)

отличны от нуля на об­

щем сегменте [хм ,х,],

 

 

 

 

 

 

 

 

| ф,-> М Ф ,М ^ = j

 

) i v ..

 

 

 

 

А

 

 

 

 

 

ЗА2

6 '

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x i - \

Если

к =

функции <р4 (х) = <р( (х)

отличны от нуля на сегменте

 

 

}ф? (*)<& =

]ф,2(х)<& +

| Ф,2 (x)dx =

 

 

 

О

 

 

 

 

X,;

 

 

 

г ( * = % £ & + “j

h2

 

 

ЗА2

 

(* -* ы )3

2A

= /

h2

J

 

 

 

ЗА2

3 '

Если

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

cp,. (x)

и cpJ+l (x)

отличны от нуля на об­

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

 

 

 

 

 

 

 

 

]ф,+.(*)ф /(*)<& = J ------------------- Ldx =

 

 

 

А

 

 

ЗА2

6 '

 

 

 

 

 

 

 

 

 

Для к - i —m значение интеграла

j<Pl(x)d x= J

 

А

ЗА

3 '

А2

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

отличны от нуля на различных сегментах, т.е.

d x - 0. Иными

словами, полученные соотношения могут быть представлены в виде:

]фо (*)<&=^ ;

0 , k < i - 1,

пЛ/6, k = i - 1,

|ф * Ф А = 2А/3, к =/, / = 1,/w —1 . А/6, £ = / + 1,

0 , к > i + 1,

Интеграл в правой части выражения (1.3) с учетом определения (1.6) пробных функций определяется выражениями:

л

1X

X

1

 

_ 1 - COSJC,

J*cp0 cos лг^йс =

J——— cosxdx = —[JC, sinjc-cosjc-jcsinjc]

A

 

 

 

 

 

я

 

^

JC— JC

 

■**+|

 

jtp* cosxdx- J -------- — cosxatc +

J — ——cos xdx =

 

 

 

**-i

 

 

 

 

fc o sx + x sin x -x

.sin*]**

+ —\xt sin x -c o sx -x sin x l

 

A1

 

 

Jj*-'

A1 *

J

 

 

_

co sx ,-,-2 co sx ,+ co sx t+, £ = j-— j

 

 

 

 

A

 

 

Jcpmcosxdx = j ——^2-Lcosxabc = —[cosx + xsinjc-jc^j sinx]

1 + cosxm—\

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

+

я, А

+

а20

+

+

 

 

а » °

3

~ в ~

 

 

 

 

 

a0h

я,2А

 

a2h

 

 

ат0

+

3

+

~ 6 ~

+

+

6

 

 

 

 

а00 +

axh

+

a22h

+

+

ат0

 

3

 

~ 6

 

 

 

 

 

 

 

 

 

 

axh

а00 +

ах0

+

а20

+

+

т

1 cos А

 

 

 

 

h

 

 

 

1 - 2 COSA + COS2A

 

 

 

h

 

_

cosh- 2 cos2h+ cosЗ /7

 

 

 

h

 

II 1

+ О О СЛ

1---------1

T 1

t

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

’A/3

h/6

0

0

(1-cos h)/h

h/6

2h/3

h/6

0

- ( 1 - 2 C O S A + C O S 2A)/A

0

h/6

2/2

0

> * - (cos h - 2 cos 2A + cos 3A)/h

0

0

0

A/3_

- [ 1 - C O S (W -1)A]/A

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

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