![](/user_photo/_userpic.png)
книги / Численные методы. Ч. 5
.pdfРис. 1.4. Зависимость времени t выполнения расчетов от числа т сегментов разностной сетки
Выводы
1.Процедура метода Галёркина использована для аппроксима ции заданной функции cosx линейной комбинацией кусочно-пос тоянных функций. Сформирована система линейных алгебраических уравнений для определения коэффициентов разложения функции cos я: по указанной системе функций.
2.Разработана вычислительная программа определения коэффи циентов разложения заданной функции по системе кусочно-посто янных функций.
3.С использованием разработанной программы определены ко эффициенты и построены разложения заданной функции cos х для 2, 4, 8, 16, 32 и 64 кусочно-постоянных функций на сегментах постоян ной длины (см. рис. 1.2).
4.Для указанной последовательности разложений определены погрешности аппроксимации заданной функции (см. табл. 1.1) соот ветствующими линейными комбинациями кусочно-постоянных
функций.
5. Показано, что с уменьшением длины h сегментов погреш ность аппроксимации, определяемая чебышёвской нормой, умень шается (см. рис. 1.3). Установлено, что погрешность аппроксима ции имеет первый порядок относительно длины сегментов (шага интегрирования).
![](/html/65386/197/html_5l53EQ6EFU.btyR/htmlconvd-6CUTDc22x1.jpg)
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А |
ЗА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.
Это показывает, что погрешность аппроксимации заданной функции методом Галёркина с использованием кусочно-линейных