книги / Численные методы. Ч. 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). Установлено, что погрешность аппроксима ции имеет первый порядок относительно длины сегментов (шага интегрирования).
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.
Это показывает, что погрешность аппроксимации заданной функции методом Галёркина с использованием кусочно-линейных