
книги / Численные методы. Ч. 5
.pdfТаблица 1.9
Матрица коэффициентов и правая часть системы линейных алгебраических уравнений для построения аппроксимации функции cos х иерархической системой кусочно-непрерывных полиномов третьей степени
0,261799 0,261799- |
0,020562 0,130899 |
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
0,372923 |
||
0,261799 0,418879 |
0,0 |
0,261799 |
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
0,476323 |
|
- 0,020562 |
0,0 |
0,009228 0,020562 |
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
- 0,006112 |
|
0,130899 0,261799 |
|
|
, |
- , |
|
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
0,527393 |
|
0,020562 0,523599 0261799 0 0205620,130899 |
|
||||||||||||
0,0 |
0,0 |
0,0 |
0,261799 0,418879 |
0,0 |
0,261799 |
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
0,197299 |
|
0,0 |
0,0 |
0,0 |
- 0,020562 |
0,0 |
0,009228 0,020562 |
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
- 0,014756 |
|
0,0 |
0,0 |
0,0 |
|
|
|
, |
- |
, |
|
0,0 |
0,0 |
0,0 |
0,0 |
0,130899 0,261799 0,020562 0,523599 0261799 |
0 0205620,130899 |
|
|||||||||||
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
0,261799 0,418879 |
0,0 |
0,261799 |
0,0 |
0,0 |
0,0 |
- 0,197299 |
|
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
- 0,020562 |
0,0 |
0,009228 0,020562 |
0,0 |
0,0 |
0,0 |
- 0,014756 |
|
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
0,130899 0,261799 0,020562 0,523599 0,261799- 0,020562 0,130899 - 0,527393 |
|||||||
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
0,261799 0,418879 |
0,0 |
0,261799 - 0,476323 |
||
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
- 0,020562 |
0,0 |
0,009228 0,020562 ^0,006112 |
||
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
0,130899 0,261799 0,020562 0,261799 - 0,372923 |
|
Л |
Л |
|
71 |
|
п |
|
|
} Ф7/2 Ф^ = J<P7/2 <P3/A = |
f (p7/2 <p'V2 ^ = |
f ф7/2 ф'7/2^ |
= 0 i |
|||
|
o |
o |
o |
o |
|
|
|
|
л |
я |
л |
я |
|
|
|
|
J(p'7/2(P0dx = |ф'7/2ф|/2<яЬс = |ф7/2ф1/2^ = |ф7/2ф|<^Х= 0> |
||||||
|
o |
o |
o |
o |
|
|
|
|
л |
л |
л |
я |
|
я |
|
|
|ф'/2ф3/2^ = J<P7/2<P3/2<^X: = J(P7/2(P2^= |
JФ7/2Ф5/2^ |
= JФ7/2Ф5 / 2 = 0» |
||||
|
0 |
0 |
0 |
0 |
|
0 |
|
|
Я |
|
Ь 3 |
|
ЯГ |
|
|
|
|ф7/2ф3бЬс = “ — = ”^ J020562 , |
J Ф7/2Ф7 / 2 = 0» |
|||||
|
|(ф'7/2 fd x = ^ - |
=0,009228, |
|ф'7/2ф4л = ? - =0,020562 |
||||
|
|
105 |
|
|
|
30 |
|
*, , |
(2й2-24)(cos3A-cos4A) |
12(sin3/H-sin4A) |
|||||
|ф'7/2 cosxdx =4---------^ 5 -------------- - + — ---------------1= -0,006112; |
|||||||
л |
я |
|
я |
|
п |
|
h2 |
|ф4ф1/2^ = |ф4Фз/2Л = |ф4Ф5/2^ = 0 > |
^ |
Ф ^ = ТТ = 0,020562 . |
|||||
0 |
0 |
|
0 |
|
о |
|
^ |
Значения коэффициентов системы линейных алгебраических уравнений, используемой для построения аппроксимации функции cos х иерархической системой кусочно-непрерывных полиномов третьей степени, и правая часть этой системы приведены в табл. 1.9.
Результаты расчётов
Решением этой системы уравнений являются коэффициенты
а0 =0,999777, д1/2 = 0,070434, а\/2 = -0,00988, а, =0,706949,
я3/2 = 0,029175, а'ъ,2= -0,023848 |
а2 =0,0, а5/2 =-0,029179, |
а5/2 = -0,023849, д3 = -0,706949, а1/2 = -0,070434, |
|
alj2 =-0,009879, |
а4= -0,999779 |
разложения cos х по иерархической системе кусочно-непрерывных полиномов третьей степени. В табл. 1.10 приведены значения по грешности (1.1) аппроксимации функции cos* при различных значе ниях числа слагаемых в разложении (1.2). Эти же данные представ лены в графическом виде на рис. 1.18.
Таблица 1.10
Погрешность 8Шаппроксимации функции cos х иерархической системой кусочно-непрерывных полиномов при различном числе т сегментов
т |
h |
5m |
т |
h |
6m |
2 |
1,570796 |
0,325789-10'2 |
16 |
0,196350 |
0,883963-10-6 |
4 |
0,785398 |
0,222766-10'3 |
32 |
0,098175 |
0,557239-10'7 |
8 |
0,392699 |
0,141048-Ю’4 |
64 |
0,049087 |
0,169180-10"7 |
С использованием формулы (В.1) приближенно определяется порядок погрешности аппроксимации функции cos* разложением (1.2). Для иерархической системы кусочно-непрерывных полиномов 3-й степени порядок погрешности аппроксимации оценивается зна чением (для прямолинейного участка)
Ь= (in 0,325789 • 10-2 - 1п0,557239 -10-7)/(In 1,570796 - In 0,098175) =
=3,95882.
Это показывает, что погрешность аппроксимации методом Галёркина функции cos* иерархической системой кусочно-непре рывных полиномов 3-й степени погрешности можно приближенно оценить как величину, пропорциональную четвёртой степени длины h сегментов, т.е.
8-= / - X a^ | = 0 (A4)-
В силу этого 5т ->0 при —>0 или т <». Это позволяет утвер ждать, что процесс аппроксимации функции COSJC иерархической системой кусочно-непрерывных полиномов 3-й степени сходится равномерно на отрезке [0, я].
Рис. 1.18. Зависимость от длины h сегментов погрешности аппроксимации функции cos х иерархической системой пробных функций 3-й степени
На рис. 1.19 представлена зависимость времени / выполнения расчетов от числа т сегментов разностной сетки.
Рис. 1.19. Зависимость времени / выполнения расчетов от числа иг сегментов для иерархической системы кусочно-непрерывных функций 2-й степени
Выводы
1. Процедура метода Галёркина использована для аппроксима ции функции cos х иерархической системой кусочно-непрерывных полиномов 3-й степени. Сформирована система линейных алгебраи ческих уравнений для определения коэффициентов разложения функции cos х по указанной системе функций.
2.Разработана вычислительная программа определения коэффи циентов разложения заданной функции по иерархической системе кусочно-непрерывных полиномов 3-й степени.
3.С использованием разработанной программы определены ко эффициенты и построены разложения функции COSJC по иерархиче ской системе кусочно-непрерывных полиномов 3-й степени для 2, 4, 8, 16, 32 и 64 сегментов постоянной длины.
4.Для указанной последовательности разложений определены
погрешности аппроксимации заданной функции (см. табл. 1.10) с помощью иерархической системы кусочно-непрерывных полино мов 3-й степени.
5. Показано, что с уменьшением длин сегментов погрешность ап проксимации уменьшается (см. рис. 1.18). Установлено, что погреш ность аппроксимации пропорциональна четвёртой степени длин сег ментов (шагам интегрирования).
6. Выполненное исследование показывает, что процесс аппрок симации функции cos х иерархической системой кусочно-непрерыв ных полиномов 3-й степени сходится равномерно на заданном отрез ке [0, тс].
7. На компьютере с процессором Intel® Pentium® 4 (тактовая частота 2,2 ГГц, объем оперативной памяти 512 Мбайт) для аппрок симации функции cos х на разностной сетке, содержащей 64 сегмен та, с использованием иерархической системы кусочно-непрерывных полиномов второй степени требуется 3,8-10"2 с.
1.4.4. Кусочно-непрерывные полиномы 4-й степени
Задание. Аппроксимировать методом Галёркина на отрезке [0, к] функцию cos х с использованием иерархической системы ку сочно-непрерывных полиномов 4-й степени. Сформировать систему линейных алгебраических уравнений относительно коэффициентов разложения этой функции по заданнной системе функций; разрабо тать вычислительную программу для определения коэффициентов
разложения для 2, 4, 8, 64 сегментов постоянной длины; для ука занной последовательности определить погрешности аппроксима ции; исследовать зависимость погрешности аппроксимации от дли ны h сегментов; исследовать сходимость процесса аппроксимации; оценить быстродействие вычислительной программы.
Разрешающие соотношения
Для повышения порядка аппроксимации функции cos х система функций (1.15) на каждом из сегментов дополняется кусочно-не
прерывными полиномами1 |
четвёртой степени (рис. 1.20): |
|
Ч>м (*) = (*/ -* )/А , |
|
|
Ф/-1/2(*) = - 4 ( * |
- tx ~ x ,)/h 2, |
|
Фы/2(*) = “4 (х - х,_, ){х- x,_l/2 \x - x ,) /h 2, |
(1.16) |
|
ф 'i/2(х )= - Н х - х,_, )(*- *м/2f (х - х, )/h2, |
|
|
Ф/(^) = (^ - |
)/* - |
|
Рис. 1.20. Кусочно-непрерывные полиномы четвертой степени на сегменте [0, я]
1Общее число пробных функций п = 4т+ 1.
Это, в свою очередь, требует вычисления дополнительных инте гралов для формирования системы уравнений (1.3):
я 2 х>
/ф ' 1/2 (*)ф, (*)<& = ТГ J(* - *М )(* - *,-|/2 Д * - ) 2^ =
П” .
_2_ (■* —xiУ , 2h(x-xif |
| 5А2(дг-дг,)4 |
| А3(дс-дг,.)3 |
- |
h |
■ Г~ ■ |
||||
А3 |
6 |
5 |
|
16 |
12 |
|
— , |
1= 1,т: |
|
|
|
|
120 |
|
|||||
|
п |
|
2 Х‘*Р |
- Xi+1/2 |
|
-*,41 )2<& = |
|
||
|
/фГ+1/2(*)ф,■(*)<& |
= 7 1 |
J ( * _Х1)(х |
|
|
||||
|
п |
|
ft |
|
|
|
|
|
|
2_ (-У--У,+|)6 , 2//(jc- |
JC,+I )s |
t 5h2(x -x M У | hz{x-xM)3 |
_A^_ |
||||||
h3 |
6 |
5 |
|
16 |
|
|
12 |
|
120’ |
|
|
|
i = 0,/w -l; |
|
|
|
|
||
|
я |
|
g |
|
|
|
|
|
|
|
|ф '|/2 (*)ф,-1/2 (*№ = 74 |
|( X “ *i-l )2 (* " X i-\J2 f(X~Xif < b = |
|
||||||
|
n |
|
|
|
|
|
|
|
|
_8_ (дг-дг,)7 |
| А(дс—дг,.)6 | 13А2(дг-дг,.)5 | ЗА3(х-д:,.)4 |
| A4(.t-x,)3 |
_A^ |
||||||
A4 |
7 |
2 |
20 |
8 |
|
12 |
|
105’ |
|
|
|
|
|
/ = l,m; |
|
|
|
|
|
П g Jf,
/фм/2(*Ж-|/2 |
= 7 7 |
J(* “ x i-l У(*- |
|
П |
|
ft |
|
{x-x._V2f |
|
|
|
В |
|
12 |
64 |
|[ф'|/2 (*)f dx = T |
i \ X~ */-l |
||
о |
h |
*ы |
|
X i-V 2 У ( х ~ |
X i )2^ |
= |
"н |
и" |
;э| |
II О |
||
тн |
|
|
x -x ,fd x =
-X , - J
9
*■'(•^-^м/г)7 ! Л4 14
|
1 |
х1 J* <7 |
^ |
-------- |
|
ю |
|
г |
|
оо ° |
>*| |
-1
= |
А5 |
. |
. |
2520 |
, 1=1,т; |
||
|
|
|
=-p-{(4jc3 -2 4 A)COSA + (A4 -12A2)sin A -
-(2JC/_1/2 + jt,_, + A,.)[(3A2 - 6)cos x + (A3 - 6*)sin x\ +
+(A2_i/2 +2A'|._]/2JC/_I + 2X,._1/2A. + A,._JA, ) [2ACOS A + (A2 -2)sin A]-
~ { X i - \ X f - V 2 + X ? - V 2 X i + 2 A /_ 1A/_ 1 2 A J )(cOS A + A sin A ) + Ay_, A A( sin A } ' =
= |
48-A2 , |
v 5Л2 -48 / . |
\ |
. -j— |
--------(cos A;-_. + cos A-) |
------- 5— (sin A(_, -sinAj, |
i = \,m, |
||
|
2h |
h |
|
|
Система 4ш + 1 линейных алгебраических уравнений относительно коэффициентов ai,i = 0,m, разложения (1.2) получается после подста новки значений интегралов в выражение (1.3). Матрица коэффициентов и правая часть этой системы уравнений принимают вид
Л/3 |
А/З |
—А2/30 |
А3/120 |
А/6 |
0 |
0 |
0 |
0 |
0 |
“ |
А/3 |
8А/15 |
0 |
A3/l 05 |
А/З |
0 |
0 |
0 |
0 |
0 |
|
-А2/30 |
0 |
2A3/l 05 |
0 |
а2/зо |
0 |
0 |
0 |
0 |
0 |
|
А3/ 120 А3/105 |
0 |
А5/2520 |
А3/120 |
0 |
0 |
0 |
0 |
0 |
|
|
h/в |
А/З |
Л2/30 |
Л3/120 |
2А/3 |
А/З |
- а2/зо |
А3/120 |
А/6 |
0 |
|
0 |
0 |
0 |
0 |
А/З |
8Л/15 |
0 |
А3/Ю5 |
А/З |
0 |
|
0 |
0 |
0 |
0 |
- а2/зо 0 |
2А3/105 |
0 |
л2/зо |
0 |
|
|
0 |
0 |
0 |
0 |
А3/120 |
A3/l05 |
0 |
А5/2520 А3/120 |
0 |
|
|
0 |
0 |
0 |
0 |
Л/6 |
А/З |
а2/зо |
А3/120 |
2А/З |
0 |
|
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
А/З |
(l-cosA )/A |
|
- 4 (l + cosA)/A+8sinA/A2 |
|
(2A2 —24) (1-cos A)/A2 + 12sinA/A |
|
|(48-A 2)(l + cosA)/2A + (5A2-48)sinA/A2 |
| |
-(l-2cosA+cos2A)/A |
|
< -4(cosA + cos2A)//?-8(sinA- sin2A)/A2 |
l |
(2A2 -24)(cosA -cos2A)/A2 + 12(sinA + sin2A)/A |
|
|(48-A 2)(cosA + cos2A)/2A-(5A2 -48)(sinA -sin 2A)/A2
- (cos A - 2 cos 2A + cos 3A)/A
-^1 + C O S ((/W -1)A)J/A
В приведённой системе уравнений выделены столбцы и строки, добавление которых, по сравнению с системой уравнений, приведён ной в подразд. 1.4.3, обусловлено включением функции
в разложение (1.2).
Алгоритм решения
Текст Программы 1.6 на языке Си описывает вычислительный ал горитм, реализующий процедуру аппроксимации функции COSJC с ис пользованием иерархической системы кусочно-непрерывных полино мов 4-й степени.
Программа 1.6
//Аппроксимация функции. Система иерархических пробных функций
//Полиномы четвёртой степени
//Neчисло сегментов
//С массив для коэффициентов
//F массив правых частей
//х массив координат узлов
#define Ne 64 |
|
void main(void) |
|
{ long double xO, x l f h, |
C[4*Ne+l] [4*Ne+l] , F[4*Ne+l], x[Ne+l]; |
int i , k ; |
|
for(k=0; k<Ne+l; k++) |
x[k]=xO+h*k; |
for(k=0; k<4*Ne+l; k++)__________________________________________
for(k=0; k<Ne; k++)
{ if(k==0) { C[4*k][4*k]=h/3.0;
F [4*k] = (1.0-cos(h))/h;
else |
} |
{ C[4*k][4*k]=2.0*h/3.0; |
|
|
F [4*k]= - (cos((k-1)*h)- |
2.0*cos(k*h)+cos((k+1)*h))/h;
}
C [4*k] [4*k+l]=C[4*k+l] [4*k]=h/3.0; C [4*k+l] [4*k+1]=8.0*h/15.0;
C [4*k] [4*k+2]=C[4*k+2] [4*k]=-h*h/30.0; C [4*k+l] [4*k+2]=C[4*k+2] [4*k+l]=0.0;
C [4*k+2] [4*k+2]=2.0*h*h*h/105.0;
C [4*k+2] [4*k+4]=C[4*k+4] [4*k+2]=h*h/30.0; C[4*k+4] [4*k]=C[4*k] [4*k+4]=h/6.0; C[4*k+l][4*k+4]=C[4*k+4][4*k+l]=h/3.0;
C [4*k] [4*k+3]=C[4*k+3] [4*k]=h*h*h/120.0;
C [4*k+l] [4*k+3]=C[4*k+3] [4*k+l]=h*h*h/105.0; C [4*k+2] [4*k+3]=C[4*k+3] [4*k+2]=0.0;
C [4*k+3] [4*k+3]=C[4*k+3] [4*k+3]=h*h*h*h*h/2520.0; C[4*k+4] [4*k+3]=C[4*k+3] [4*k+4]=h*h*h/l20.0;
F[4*k+l]=-4.0*(cos(k*h)+cos((k+1)*h))/h - 8 .0*(sin(k*h)- sin((k+1)*h))/ (h*h);
F [4*k+2] = (2.0*h*h-24.0)*(cos(k*h)-cos((k+1)*h))/ (h*h) + 12 . 0*(sin(k*h)+sin((k+1)*h))/h;
F [4*k+3] = (48.0-h*h)* (cos(k*h)+cos((k+1)*h))/ (2.0*h)- (5.0*h*h-
48 . 0)*(sin(k*h)-sin((k+1)*h))/ (h*h);
}
C[4*Ne][4*Ne]=h/3.0;
F[4*Ne]=-(1.0+cos((Ne-1)*h))/h;
// Решение |
системы линейных алгебраических уравнений |
G A USS (С, |
F, 4*Ne+l); |
Ь _______________________________________________________
Реализация алгоритма
Заданный отрезок разбивается на четыре сегмента равной длины
[0,Jt]=G, UG2UG3UG4,
где G, =[0,л/4], G2 =[тс/4 ,л/2], G3 =[л/2,З д/4] и G4 =[Зл/4 ,д]. Заданная функция cos х представляется разложением (1.2). Соотношения (1.3) принимают вид системы линейных алгебраических уравнений
лл
]<Р*ФА= }ф* C O S xd x, |
(1.17) |
|
о |
о |
|