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

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

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

Рис. 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 х с использованием кусочно­ линейных пробных функций.

Программа 1.2

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

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

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

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

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

#define Ne 64 void main(void)

{double xO, 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; k++)

 

 

 

 

{ if(k==0)

F [kj = (1-cos(h))/h;

 

else if(k==Ne) F[k]= - (1+cos(M_PI-h))/h;

else

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

f o r (i=0 ;

i<=Ne; i++)

 

 

 

{ if (i==0

ScSc k==0)

C[k] [i] =h/3 .0 ;

 

else

if(i==Ne &&

k==Ne)

C[k][ij=h/3.0;

 

else if(i==k) C [k] [i]=2.0*h/3.0;

 

 

else if(i==k-l

|| i==k+l)

C [k] [i]=h/6.0;

 

 

else

C [k] [i]=0.0;

 

//Решение

системы линейных

алгебраических

уравнений

G A USS(С , F,

Ne+1);

 

 

 

 

J_______________________________________________

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

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

[о,я] = <7, U G2U<?3U G4,

где Gx=[0,тг/4], G2= [л/4,л/2], G3 =[л/2,Зл/4] и С?4 =[3я/4,л]. На

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

4 л л

Z ai |ф*ФА = /ф* cosxdx’ к = 0,4,

(1.7)

‘=° О

О

 

относительно коэффициентов ап i = 0,4.

Рис. 1.5. Пробные кусочно-линейные функции на сегменте [0, к/4] (а); кусочно-линейные функции,

ассоциированные с узлами сегментов (б—е)

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

Л

I

Л

7

Jcp\dx= —= 0,261799,

\% ^d x = — = 0,130899,

о

^

о

6

я

л

л

 

 

 

л

1- c o s /г

 

/ф 0ф2dx = |ф 0фзdx = |ф 0ф4dx = 0 ,

 

/ф 0 cosxdx =

 

 

h

!

 

 

 

 

 

 

 

J<p,%dx = — = 0,130899,

J<pfdx=— = 0,523599,

 

Я

 

1

 

Я

Л

 

 

|ф,ф2<Л: = — = 0,130899,

п

|ф,ф3аЬс= |ф,ф4с&: = 0,

 

п

 

6

 

 

п

 

 

 

п

 

 

 

 

 

 

 

 

Jcp, COSJCdx = 2 co sh -\-co s2 h = 0,527393;

 

 

 

л

 

1

 

 

l*

 

 

 

Jcp2cp0dx = 0 ,

J(p2cp,<i3c = — = 0,130899,

 

 

\<V22dx=—

= 0,523599,

|ф 2ф3^

= -

= 0,130899,

|ф 2ф4й& =

 

n

 

 

 

 

 

 

 

 

f(p2 cosxdx =- cos h - 2 cos 2h + cos 3h = 0 ;

 

 

я

 

л

 

n

 

h

 

 

|ф 3ф0^ =

|ф 3ф,аЬс: = 0,

|ф 3ф2г&= —= 0,130899,

 

 

О1%

 

|ф 3ф4<& = — = 0,130899,

 

Jф3а£г=— = 0,523599,

 

/ф, c o s * * = _ C 0 S 2 A - 2 C 0 S 3 ^ C 0 S 4 * = _ 0 527393.

Л

Я

Я

П

h

|ф 4ф0dx= |ф 4ф,а5: = |ф 4ф2<& = 0,

|ф 4ф3яЬ; = — = 0,130899,

0

0

0

о

0

|<p\d x= - = 0,261799,

|(р3 cos xdx =J

+cos3h = -0,372923.

o

3

0

h

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

0,261799а0 + 0,130899а, + 0а2 + 0а3 + 0а4 =0,372923,

0,130899а0 + 0,523599а, + 0,130899а2 4-0а3 + 0а4 =0,527393,

«0а0 +0,130899а, +0,523599а2 +0,130899а3 +0а4 =0,

0а0 + 0а, +0,130899а2 +0,523599а3 +0,130899а4 =-0,527393,

0а0 + 0а, +0а2 +0,130899а3 +0,261799а4 =-0,372923

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

Таблица 1.3

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

кусочно-постоянными пробными функциями

0,261799

0,130899

0,0

0,0

0,0

0,372923

0,130899

0,523599

0,130899

0,0

0,785398

0,527393

0,0

0,130899

0,523599

0,130899

0,0

0,0

0,0

0,0

0,130899

0,523599

0,130899

-

0, 527393

0,0

0,0

0,0

0,130899

0,261799

-

0,372923

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

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

а0 =1,05239

а, =0,74415, а2 =0, а3= Ч ),74415, а4 =-1,05239.

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

 

4

А = cos (дг) -

а(.ф, (*)

 

/=0

представления функции cos х разложением (1.2) при т = 4.

а

б

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

В табл. 1.4 приведены значения погрешности аппроксимации функции cos х при различных значениях числа т сегментов. Эти же данные представлены в графическом виде на рис. 1.7, б. С использо­ ванием формулы (В.1) приближенно определяется порядок погреш­ ности аппроксимации функции / ( x ) = cosx разложением (1.2)

6 = (In 0,215854 - In О,000201)/(In1,570796 - In0,049087) = 2,013724.

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