- •Выполнил:
- •Алгоритм решения
- •Реализация алгоритма
- •Z ai |ф*ФА = /ф* cosxdx’ к = 0,4,
- •Разрешающие соотношения
- •Алгоритм решения
- •Результаты расчётов
- •Разрешающие соотношения
- •Алгоритм решения
- •Реализация алгоритма
- •2.1. Аппроксимация решения кусочно-линейными функциями
- •Алгоритм решения
- •Результаты расчетов
- •Разрешающие соотношения
- •Алгоритм решения
- •Реализация алгоритма
- •Разрешающие соотношения
- •Алгоритм решения
- •Реализация алгоритма
- •3.1. Явная разностная схема
- •Алгоритм решения
- •Реализация алгоритма
- •Разрешающие соотношения
- •Программа 3.2
- •Реализация алгоритма
- •Алгоритм решения
- •Реализация алгоритма
относительно коэффициентов 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А |
ЗА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 х с использованием кусочно линейных пробных функций.