You are on page 1of 99

Записки на лекционния курс по „Програмиране и изчислителна физика”.

И. Христосков, юни 2012 г.

ПРОГРАМИРАНЕ И ИЗЧИСЛИТЕЛНА ФИЗИКА, 2012 г.

1. Принципи на числения анализ. Особености на машинните пресмятания ............ 2

2. Преки методи за решаване на системи от линейни алгебрични уравнения ......... 8

3. Итеративни методи за системи с големи разредени матрици .............................. 18

4. Подобряване на точността на числени оценки ...................................................... 25

5. Интерполация............................................................................................................ 33

6. Числено интегриране................................................................................................ 39

7. Обикновени диференциални уравнения................................................................. 48

8. Нелинейни уравнения............................................................................................... 56

9. Минимизация ............................................................................................................ 64

10. Генериране на случайни числа с избрано разпределение................................... 75

11. Моделиране на данни ............................................................................................. 81

12. Собствени стойности и собствени вектори на матрица...................................... 90

1/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

1. Принципи на числения анализ. Особености на машин-


ните пресмятания
Изчислителна физика е специфично приложно поле на числения анализ, състоящо
се в изучаване и прилагане на числени алгоритми за решаване на задачи на физиката, за
които съществува количествена теория.

Предмет на числения анализ е създаването, прилагането и изучаването на методи


за решаване на математически задачи чрез машинно изпълнявана последователност от
аритметични действия. Това включва три свързани помежду си кръга от дейности:

− получаване на числени стойности на решения на уравнения, пресмятане на сто-


йности на математически изрази, функции, функционали и т.н.;

− разработване на методи (числени алгоритми) за намиране на такива стойности;

− анализ на свойствата на тези методи.

Крайна приложна цел на числения анализ е ефективното пресмятане на точни


приближения на решенията на математически задачи. Двата основни типа затруднения
при постигането на тази цел са:

− неизбежните грешки от закръгление, възникващи в хода на пресмятанията;

− съществуването на задачи, чието точно решаване изисква безкраен обем инфор-


мация и/или безкраен брой изчислителни операции. Практическата невъзмож-
ност за удовлетворяване на това изискване налага търсенето на приблизително
решение, чието отклонение от точното решение се нарича грешка от дискрети-
зация.

Някои принципи и особености на изчислителните методи за решаване на матема-


тически задачи са илюстрирани в следващите раздели – напр. чрез задачите за дифе-
ренциране, интегриране, решаване на линейни и нелинейни алгебрични уравнения, ин-
тегриране на обикновени диференциални уравнения и т.н.

2/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

Особености на представянето на числени данни

Цели числа
Общият модел за представяне на едно цяло число е:
q
i = s × ∑ wk × r k −1 , (1)
k =1

където i е цялото число, s е неговият знак (+1 или -1), q е броят числови позиции
(разряди) за представяне на числото, r е основата на бройната система, а wk < r са нео-
трицателни множители.

При машинно представяне на целите числа основата на бройната система е r = 2, а


броят числови позиции е q = 7, 15 или 31.

Така, при q = 7 и записване на знака в най-левия двоичен разряд (бит) (напр. чрез
0 за „+” и 1 за „-”), поредицата 01100110 ще съответствува на
1 × 2 6 + 1 × 2 5 + 0 × 2 4 + 0 × 2 3 + 1 × 2 2 + 1 × 21 + 0 × 2 0 = 102 .

Приетото в примера кодиране на знака изисква различни алгоритми за събиране и


за изваждане, а също така излишно въвежда два записа на нулата. По тази причина се
прилага т.нар. допълнително представяне на целите числа, при което (отново при q = 7
и един двоичен разряд за знака) с поредиците 00000000 – 01111111 се кодират последо-
вателно числата от 0 до 127, а с поредиците 11111111, 11111110, 11111101, …,
10000000 – съответно числата -1, -2, -3, …, -128. Така събирането и изваждането се реа-
лизират с един общ алгоритъм за събиране на числа със знак. Пълният брой различни
цели числа, които могат да се запишат в поредица от n бита е 2n, като тези числа ще
бъдат в диапазона от -2n-1 до 2n-1-1.

Алгоритъмът за записване на отрицателно число е следният:

а) Числото се записва като положително. Например, за 126: 01111110

б) Битовете се инвертират. За горния пример: 01111110 → 10000001

в) Към полученото се добавя 1: 10000001 + 00000001 = 10000010

И наистина, +126 + -126 = 01111110 + 10000010 = 00000000

При операциите между аритметични данни от цял тип е важно да се помни, че:

3/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

− резултатът от операцията ще бъде също от цял тип – напр. 7/2 ще даде 3, 8/3 ще
даде 2, и т.н.

− ефектът от препълване е такъв, че напр. при n = 8 резултатът от операцията


125 + 5 ще бъде -126.

Реални числа
Стойността на едно реално число x се кодира чрез стойностите на две цели числа
– мантиса m и показател n:

m
x= k −1
× 2n , (2)
2

където k е броят двоични позиции на полето за запис на мантисата.

Стандартните пълни дължини на полето за запис на едно реално число са 32 и 64.


При дължина 32 за мантисата се отделят 24 бита, а за показателя – 8 бита. При дължина
64 за мантисата се отделят 54 бита, а за показателя – 10 бита.

При така приетия начин на кодиране, ако мантисата се записва като цяло число в
допълнително представяне, нейните възможни стойности ще бъдат в интервала [-1, 1),
и числото 1.0 няма да има точен машинен запис. Този голям недостатък се преодолява,
като мантисата се представя поотделно чрез своя знак, за който се отделя 1 бит, и своя
модул, за който остават k-1 бита. Показателят n като правило се записва като цяло чис-
ло в допълнително представяне.

1
Теглото на най-младшия бит на мантисата, ε m ≡ , се нарича машинен епсилон.
2 k −1
Например, при дължина на полето за запис на едно реално число 32 (= 24 + 8) бита,
ε m = 10 −23 = 1.192 × 10 −7 . Машинният епсилон е мярка за минималното представимо от-
носително разстояние между две съседни реални числа и обуславя ограничената точ-
ност на машинните аритметични операции с такива числа. По тази причина обикновено
се приема, че относителната грешка на машинното представяне на едно реално число
е ε m , тъй като това е горната граница на ефекта от закръгление до най-близкото предс-
тавимо число. Както ще бъде показно по-долу, обаче, относителната грешка на резулта-
та от аритметична операция между две реални числа в някои случаи може да бъде мно-
го по-голяма.

4/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

При 8 бита за запис на показателя n, неговите възможни стойности са между -128


и +127. Следователно, модулът на четирибайтовите реални числа е в диапазона от
2 −128 = 2.94 × 10 −39 до 2127 = 1.7 × 10 38 .

Очевидните ограничения при аритметичните операции с реални числа са:

− опасност от препълване (заради ограниченото поле за запис на показателя);

− очаквана относителна грешка на резултата не по-малка от ε m (заради ограниче-

ното поле за запис на мантисата). В частност, ε m = 1.192 × 10 −7 при четирибай-


тови реални числа;

− опасност от катастрофална загуба на точност при изваждане на две почти ра-


вни числа. Нека, например, двоичните представяния на две реални числа са с
еднакви показатели, а мантисите им се различават помежду си само по съдър-
жанието на най-младшия бит. Ясно е, че в този случай ефективният брой битове,
в които може да се запише мантисата на резултата, е два (един + един за знака)
вместо 24. Така относителното тегло на грешката от закръгление на разликата,
което иначе за всеки от операндите типично е съизмеримо с ε m , при разглежда-
ния пример ще бъде близко до 1/2.

Устойчивост на алгоритмите
Устойчив е такъв алгоритъм, при който малки грешки във входните данни водят
до контролируемо малки грешки в резултата. Неустойчив е алгоритъм, при който мал-
ки грешки във входните данни могат да доведат до непропорционално големи грешки в
резултата. Неустойчивостта може да бъде и присъщо свойство на решаваната задача.

Въпросът за устойчивостта на един алгоритъм може да бъде илюстриран чрез


следния пример.

Нека задачата е да се пресметнат интегралите:


1
E n = ∫ dxx n e x −1 , n = 1,2,... (3)
0

Чрез интегриране по части може да се покаже, че

5/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

En = e −1 ∫ x n de x = e −1  x n e x − ∫ e x dx n 
1 1 1

0  0 0 
, (4)
= e e − n ∫ e x x n −1dx  = 1 − nEn −1 , n = 2,3,...
1
−1
 0 

1 1 1 1
xde x =  xe x − ∫ e x dx  = .
1 1
където E1 = ∫
e 0 e  0 0  e

Ако рекурентната връзка (4) се избере за алгоритъм за решаване на задачата (3),


този алгоритъм ще бъде неустойчив по следната причина.

Стойността на E1, с която се стартира алгоритъмът, неизбежно ще съдържа отно-


сителна грешка от закръгление, обусловена от ε m . Нека, в частност, абсолютната греш-

ка на E1 е δ 1 = ε m E1 , т.е. машинното представяне на E1 е E1 + δ1 , а точната стойност е

E1. Поради по-големите от 1 и нарастващи множители n в рекурентната връзка (4), точ-


ната (без натрупване на допълнителни грешки от аритметичните операции) пресмeтна-
та стойност на E2 ще бъде 1 − 2 E1 − 2δ 1 . Така, абсолютната грешка на E2 ще бъде
δ 2 = 2δ 1 , абсолютната грешка на E3 ще бъде δ 3 = 3δ 2 = 3 × 2 × δ 1 , а абслоютната грешка
на En – n!×δ 1 . Относителната грешка ще нараства даже по-бързо, тъй като от (3) се
вижда, че 0 < E n < E n −1 . Например, при действителна стойност на E10 = 0.084 и четири-

байтово представяне на реалните числа ( ε m = 1.192 × 10 −7 ) абсолютната грешка ще въз-


лезе на 0.16, а относителната ще бъде 1.9.

На основата на (4) може да се изгради устойчив алгоритъм по следния начин:

1 − En
E n −1 = , n = ...,3,2,1 (5)
n

За стартиране може да се използува оценката:

1 1 1
E n = ∫ dxx n e x −1 ≤ ∫ dxx n = , (6)
0 0 n +1

1
(Това е така, защото при 0 ≤ x ≤ 1 , ≤ e x −1 ≤ 1 .)
e

или, при достатъчно голямо n, може да се започне с E n = 0 .

На всяка стъпка абсолютната грешката на текущата оценка E n ще се умножава с


1/n. (Относителната грешка ще намалява по-бързо от абсолютната, защото

6/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

0 < E n < E n −1 .) Тогава, например, при стартиране с n=20, абсолютната грешка на E10 ще

1 1 1 1
бъде не по-голяма от ... ≅ 7 × 10 −15 . (В действителност, поради неточност на
21 20 19 10
операциите в (5), не може да се разчита на относителна грешка на резултата, по-малка
от ε m .)

7/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

2. Преки методи за решаване на системи от линейни алге-


брични уравнения
Задачата е да се реши системата от нехомогенни линейни алгебрични уравнения:

Ax = b , (1)

където b е ненулев вектор. Системата ще има ненулево решение x само ако


det (A ) ≠ 0 .

Така наречените преки методи за решаване на задачата (1) изискват краен брой
аритметични операции и при липса на грешки от закръгление водят до точно решение.

Неточността на преките методи за решаване на такива линейни системи се обус-


лавя единствено от грешките от закръгление (грешки от дискретизация няма). Както ще
бъда показано в края на този раздел, освен от прилагания метод, тази неточност ще за-
виси и от т.нар. число на обусловеност на матрицата A на системата.

Гаусова елиминация
Методът се състои в съставяне на система Ux = c , (2)

чието решение x съвпада с това на (1) и чиято матрица U е горна триъгълна, т.е.
uij = 0, i > j .

Смисълът на преминаването от (1) към (2) е, че система с триъгълна матрица мо-


же да се реши чрез последователно заместване:

cn
xn =
u nn
cn −1 − u n −1,n x n
x n −1 =
u n −1,n −1
... (3)
n
ci − ∑u
j =i +1
ij xj
xi =
uii
...

Процедурата за изграждането на системата (2) се базира на едно от основните


свойства на линейните системи, съгласно което заместването на дадено уравнение с

8/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

линейна комбинация между него и които и да е други уравнения не променя решението


на системата.

В този смисъл, построяването на (2) може да стане съгласно следния алгоритъм:

за j = 1,..., n :
{за i = j + 1,..., n :
a ij
{добавяне към i-тото уравнение на j-тото, умножено с f ij ≡ − ,
a jj
~
т.е. a~ik = a ik + f ij a jk , k = j,..., n ; bi = bi + f ij b j } (4)
така че новата стойност на a ij да стане нулева}.
}
Очевиден проблем на този алгоритъм е, че знаменателят a jj , наричан водещ еле-

мент, може да се случи нулев или много малък по модул, така че действията в най-
вътрешния цикъл да не могат да се изпълнят. За преодоляване на този проблем се из-
ползува друго основно свойство на линейните системи – размяната на реда на уравне-
нията не променя решението на системата.

Така, в хода на външния цикъл, за всяко j, т.е. всеки стълб, се търси максималният
по модул матричен елемент измежду a ij , i = j,..., n . Ако това е a mj , m-тото уравнение се

разменя с j-тото, след което се пристъпва към елиминацията (4). Новият водещ елемент
ще бъде максимален по модул измежду всички възможни, а модулите на множителите
f ij ще бъдат минимални. Търсенето (и размяната) не засягат елементите над реда j, за-

щото ще се наруши постигнатата до момента частична горна триъгълна структура на


матрицата.

Тази процедура, наречена избор на водещ елемент, повишава устойчивостта на


алгоритъма и съответно точността на решението на системата по следната причина.

− новите стойности a~ik (i, k = j + 1,..., n ) и на bi (i = j + 1,..., n ) се формират чрез до-


~

бавяне към старите на относително най-малка по модул добавка (измежду въз-


можните). Така се потиска натрупването на грешки от закръгление (виж казано-
то по повод на устойчивостта в Глава 1) и се минимизира рискът от катастро-
фална загуба на точност поради вадене на близки числа. Действително, от (4)
следва, че в граничния случай на много голям множител f ij , когато

aik << f ij × a jk и bi << f ij × b j , i-тото уравнение на системата ще бъде изцяло

подменено с j-тото и системата ще стане неопределена. В междинните случаи

9/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

~
ефектът от грешките от закръгление при пресмятане на a~ik и bi поради голям

множител f ij , т.е. малък по модул водещ елемент, ще бъде частична загуба на

информация за i-тото уравнение, изразяваща се в доближаване на матрицата U


на крайната система (2) до особената, т.е. до повишаване на нейното число на
обусловеност.

LU разлагане
Методът се състои в намиране на долна триъгълна матрица L и горна триъгълна
матрица U, такива, че A = LU . Ако това бъде направено, системата (1) може да се реши
 Ly = b
чрез две серии от последователни замествания: L(Ux ) = b ⇒  .
Ux = y

Предимствата на този метод пред гаусовата елиминация са:

− LU разлагането не засяга вектора на десните части, така че е възможно с мини-


мални допълнителни изчислителни разходи (само за обратните замествания) да
се решат произволно много системи с еднаква матрица и различни вектори на
десните части, т.е. задачата AX = B , където стълбовете на B са вектори на дес-
ните части, а стълбовете на X – съответните им вектори на решението. (Такава
задача може да се реши и чрез гаусова елиминация, но само за неголям брой
предварително известни стълбове на B.) В частност, ако B е единичната матри-
ца, X ще бъде A-1, което е и общо прилаганият начин за обръщане на матрица.

 n   n 
− детерминантата на A може да се пресметне лесно като  ∏ lii  ×  ∏ uii  . При
 i =1   i =1 
гаусовата елиминация това е невъзможно, защото детерминантата на U от (2)
няма проста връзка с детерминантата на A.

Алгоритъмът за намиране на елементите на L и U е както следва (алгоритъм на


Краут (Crout)):

– Тъй като пълният брой елементи на L и U е с n по-голям от уравненията, които


могат да се използуват за тяхното намиране, а именно
min (i , j )

∑l
k =1
ik u kj = a ij , i = 1,..., n, j = 1,..., n , (5)

се полага lii = 1, i = 1,..., n (6)

10/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

– уравненията (5) се използуват за намиране на uij и lij в следния ред:

за j = 1,..., n :
{за i = 1,..., j :
i −1
{ uij = a ij − ∑ lik u kj
k =1

Това следва от (5) и (6). uij се записва на мястото


на a ij . Лесно може да се провери, че при този ред на
обхождане на индексите всичко отдясно на равенство-
то е вече определено.}
за i= j + 1,..., n :
j −1
{ zij = aij − ∑ lik u kj
k =1

От (5) следва, че величините zij са числителите на


z ij
lij ( lij = ). Те се записват на мястото на a ij . И тук
u jj
може лесно да се провери, че при този ред на обхож-
дане на индексите всичко отдясно на равенството е
вече определено.}
}
Изборът на водещ елемент u jj при пресмятане на lij е абсолютно нужен за числе-

ната устойчивост на алгоритъма на Краут. Отчитайки, че изразите за zij съвпадат по

структура с израза за u jj , и че всички пресмятани величини се записват на мястото на

съответните елементи на масива A, може да се съобрази, че разместването на реда j на


този масив с ред m > j е равностойно на достигане на текущия етап от LU разлага-
нето, но на матрица, получена от първоначалната матрица A чрез предварително
разместване на въпросните нейни редове.

В този смисъл, изборът на водещ елемент се свежда до намиране на пози-


цията m на максималното по модул измежду u jj и zij , i = j + 1,..., n , и размест-
ване на редовете j и m на двумерния масив A, в който се съхраняват
всички пресметнати величини и все още непроменените елементи на матри-
цата A.
След което, за i = j + 1,..., n :
z ij
{ lij =
u jj
lij се записват на мястото на zij .}

11/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

Фиг. 1. Алгоритъм на Краут за LU разлагане на матрица. Елементите на първона-


чалната матрица се променят в реда, указан от буквите a, b, c, и т.н. Маркираните учас-
тъци показват вече променените елементи, които се използуват за промяната на два
типични елемента, отбелязани с „×”. Илюстрацията е от NUMERICAL RECIPES IN FORTRAN 77:
THE ART OF SCIENTIFIC COMPUTING (ISBN 0-521-43064-X) Copyright (C) 1986-1992 by Cambridge
University Press.

Анализ на грешката на решението

Векторни и матрични норми

Нормата x на вектора x е число със следните свойства:

− x ≥ 0 , при което x = 0 само за x = 0

− αx = α × x , където α е скалар

− x+y ≤ x + y
Най-често се използуват следните векторни норми:
1/ p
 p
− x p
=  ∑ xi  ,1≤ p < ∞
 i 
− x ∞
= max xi
i

Нормата A на матрицата А е число със следните свойства:

− A ≥ 0 , при което A = 0 само за A = 0

− αA = α × A , където α е скалар

12/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

− A+B ≤ A + B
Най-често се използуват следните матрични норми:

− A max
= max a ij – max-норма
i, j

1/ 2
 
=  ∑ aij
2
− A  – норма на Фробениус
F 
 i, j 
Ax
− A = max – операторна норма, породена от дадена векторна норма
x≠0 x
В сила са и следните твърдения и определения:

− Ax ≤ A × x – за всяка операторна и съответната й векторна норма, както и за A F


и

x 2

− AB ≤ A × B – за всяка операторна норма, както и за A F

Ax
− A ∞
≡ max ∞
= max ∑ a ij
x ≠0 x i
∞ j

Ax
− A 1 ≡ max 1
= AT = max ∑ a ij
x ≠0 x1 ∞ j
i

− A 2 = max λi (A ) , ако A е нормална матрица, т.е. AA + = A + A ( λi (A ), i = 1,... са соб-


i
ствените стойности на A).

Обусловеност на матрица
Нека x e точното решение на системата (1), а нейното числено решение x̂ е точно
решение на системата

(A + δA )xˆ = b + δb . (7)

Мярка за грешката на решението е нормата на вектора δx ≡ xˆ − x . Чрез изваждане


на (1) от (7) се получава δx = A −1 (− (δA )xˆ + δb ) , или:

δx  δA δb 
≤ κ (A ) ×  + ,

(8)
xˆ  A A × xˆ 

където κ (A ) ≡ A −1 × A се нарича число на обусловеност на матрицата A. Може

λmax (A )
да се покаже, че за 2-норма и нормална матрица, κ (A ) = .
λmin (A )

В рамките на този подход може също така да се покаже, че

13/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

δx  δA δb 
≤ κ (A ) ×  +  (9)
x  A b 

Полезна е и следната връзка между грешката на решението и лесния за пресмята-


не остатък на системата r ≡ Axˆ − b :

r = A (xˆ − A −1b ) = A (xˆ − x ) = A (δx ) ⇒ δx = A −1r ⇒ δx ≤ A −1 ⋅ r (10)

Пример: ефект от избора на водещ елемент при LU разлагане


Общата стратегия за анализ на грешката на численото решение на една линейна
система, получено чрез прилагане на конкретен алгоритъм, е:

− намиране на тези пертурбации δA и δb , при които за конкретния използуван


алгоритъм численото решение на системата (1) е точно решение на системата
(7).

− пресмятане на числото на обусловеност на матрицата A и оценяване на греш-


ката на численото решение съгласно (8) или (9).
i −1 j −1
Така, най-напред, на основата на изразите uij = a ij − ∑ lik u kj и zij = aij − ∑ lik u kj
k =1 k =1

може да се обоснове твърдението, че:

A = LU + E , където E ≤ nε m L U (11)

и където n е редът на системата, а L и U са изчисленото LU разлагане. Тук и по-


нататък с X се означава матрица, съставена от модулите на елементите на матрицата

X. Ако X = X , което е вярно за max-нормата, 1-нормата и нормата на Фробениус, но

не за 2-нормата, то E ≤ nε m L × U .

{Приетият начин за отчитане на грешките от закръгление при аритметични операции е


fl (a o b ) = (a o b)(1 + δ ) , където δ ≤ ε m . С o се бележи една от операциите +, -, *, /, а fl (⋅) означава
машинното представяне на дадено реално число. На тази основа разпространението на грешките при
n
пресмятане на израз от вида ∑x y
i =1
i i се анализира по следния начин. Натрупването на сумата става чрез

последователността от присвоявания si = si −1 + xi yi , i = 1,..., n, s0 = 0 . Всяко присвояване изисква


машинно представяне на междинните резултати, така че:

14/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

fl (s1 ) = x1 y1 (1 + δ )
fl(s 2 ) = [x1 y1 (1 + δ ) + x 2 y 2 (1 + δ )](1 + δ ) ≈ s 2 (1 + 2δ )
fl (s3 ) = [s2 (1 + 2δ ) + x3 y 3 (1 + δ )](1 + δ ) ≈ s 2 (1 + 3δ ) + x3 y 3 (1 + 2δ )
... (11)

 n 
fl ∑ xi y i  ≡ fl (sn )
 i =1 
= [sn −1 (1 + (n − 1)δ ) + x n y n (1 + δ )](1 + δ ) ≈ sn −1 (1 + nδ ) + x n y n (1 + 2δ )
 n 
≈ s n (1 + nδ ) ≡  ∑ xi y i (1 + nδ )
 i =1 
Приблизителните равенства са заради пренебрегването на членове, съдържащи δ2, а последното –
заради пренебрегване на разликата между множителя (1 + 2δ ) за последното събираемо и множителя
(1 + nδ ) за големия брой останали събираеми.
От демонстрирания резултат следва, че

fl (AB ) − AB ≤ nε m A B (12)}

Обратният ход се състои в решаване на системите Ly = b и Ux = y . От (11) и (12)


следва, че числените решения на тези системи ще удовлетворяват уравненията

(L + δL )yˆ = b и (U + δU )xˆ = yˆ , където δL ≤ nε m L и δU ≤ nε m U (13)

На основата на горното:

b = (L + δL )yˆ
= (L + δL )(U + δU )xˆ
= [LU + L(δU ) + (δL )U + (δL )(δU )]xˆ , (14)
= [A − E + L(δU ) + (δL )U + (δL )(δU )]xˆ
= (A + δA )xˆ

където δA = − E + L(δU ) + (δL )U + (δL )(δU )

Следователно:

δA = − E + L(δU ) + (δL )U + (δL )(δU )


≤ E + L δU + δL U + δL δU
(15)
≤ nε m L U + nε m L U + nε m L U + n 2ε m2 L U
≈ 3nε m L U

Както по-горе, при определени типове норми ще бъде в сила и връзката

δA ≤ 3nε m L × U . (16)

15/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

δA
LU разлагането ще бъде числено устойчиво, ако = O (ε m ) . Съгласно (16), това
A

L × U
условие ще бъде изпълнено, ако 3nε m = O (ε m ) .
A

От друга страна, частичният избор на водещ елемент при алгоритъма на Краут


гарантира, че max lij = 1 , т.е. L max
= 1 . Следователно, ако същевременно и т.нар. ко-
i, j

ефициент на нарастване g ≡ U max


A max
е малък или е слабо растяща функция на n,

LU разлагането ще бъде устойчиво.


i −1
И действително, натрупването на сумата uij = a ij − ∑ lik u kj започва със замества-
k =1

нето a~ij = aij − li1u1 j , където li1 ≤ 1 и u1 j = a1 j ≤ A max


, така че a~ij ≤ 2 A max
. Чрез прос-

ледяване на индивидуалните стъпки лесно може да се види, че всяко следващо замест-


ване също удвоява горната граница на междинния резултат, така че в крайна сметка
U max
≤ 2 n −1 A max
, т.е. g ≤ 2 n −1 . Тази оценка всъщност е много завишена, защото на

практика g ∝ (n 1 / 2 ÷ n 2 / 3 ) .

Итеративно подобряване на точността на решението


Изчисленото решение на системата (1) е xˆ ≡ x + δx , където x е точното решение, а
δx е неговата грешка. Умножаването на x̂ с матрицата на системата води до вектор на
десните части

A (x + δx ) = b + δb . (17)

Чрез изваждане на (1) от това равенство се получава

A (δx ) = δb (18)

Изразът (17) може да бъде решен относно δb и резултатът да бъде заместен в


(18):

A (δx ) = A (x + δx ) − b = Axˆ − b ≡ r , (19)

където r е остатъкът на системата (1) за изчисленото решение x̂ .

Така, системата (19) може да се реши относно грешката δx , след което да се по-
лучи подобрено приближение на решението ~ x = xˆ − δx . Тази процедура може да се пов-

16/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

таря многократно до достигане на сходимост. Това е особено удобно да се прави на


базата на LU разлагането, защото решаването на (19) ще се свежда единствено до обра-
тния ход. Пресмятането на остатъка r трябва да бъде в двойна точност, тъй като него-
вите компоненти се формират като разлики на много близки числа.

17/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

3. Итеративни методи за системи с големи разредени мат-


рици
Разгледаните по-горе преки методи дават точно решение (в рамките на натрупва-
нето на грешки от закръгление), но изискват съхраняване на пълната матрица на систе-
мата и от порядъка на n 3 линейни операции за решаване на задачата (n е броят на урав-
ненията).

Алтернативен подход е изграждането на редица от последователни приближения


на решението чрез алгоритми, изискващи единствено да се организира умножаване на
даден вектор с матрица, която е в проста връзка с матрицата на системата. За целта е
нужно да се съхраняват (или формират в процеса на пресмятане) само ненулевите еле-
менти на въпросната матрица. Недостатък на итеративния подход е, че решението е по
построение приблизително и, следователно, съдържа грешки от дискретизация.

Точкова релаксация (метод на Якоби)


Итерационният процес е следният:

1  
xi( j ) =  bi − ∑ aij x (j j −1)  ,
  (1)
aii  j ≠i 

където j е поредният номер на итерацията (приближението).

Или, ако

A =D−L−U, (2)

където D съдържа диагоналните елементи на A, а L и U – съответно под- и надди-


агоналните, но взети с обратен знак, то (1) може да се запише във вида:

x ( j ) = D −1 (L + U )x ( j −1) + D _1b = Bx ( j −1) + q , (3)

където B ≡ D −1 (L + U ) и q ≡ D _1b . (4)

Векторът на началното приближение x (0 ) се избира произволно.

Нека истинското решение на системата е x, a ε ( j ) ≡ x ( j ) − x е векторът на грешката


на j-тото приближение. Изваждайки почленно равенството x = Bx + q (което е в сила,
защото x е истинското решение) от дефиниционното уравнение на итерационния про-
цес (3), се получава:

18/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

ε ( j ) = Bε ( j −1) , или ε ( j ) = B j ε (0 ) . (5)

Нека λi са собствените стойности на матрицата B, подредени така, че


λ1 ≥ λ2 ≥ ... ≥ λn , a v1 , v 2 ,..., v n са съответните им собствени вектори. Доколкото B е
такава, че собствените й вектори образуват базис в n-мерното пространство, всеки n-
компонентен вектор, включително и ε (0 ) , може да се представи чрез линейна комбина-
n
ция между тези вектори: ε (0 ) = ∑α i v i .
i =1

(В частност, ако някои собствени стойности на произволна матрица са различни, то съответните


им собствени вектори са линейно независими. Също така, ако дадена матрица е реална и симетрична, то
всички нейни собствени стойности и собствени вектори са реални, а собствените вектори, съответству-
ващи на различни собствени стойности, са взаимно ортогонални.)

Тогава:
n n
ε (1) = ∑ α i λi v i , ..., ε ( j ) = ∑α i λij v i . (6)
i =1 i =1

Явно е, че ако |λ1| < 1, то при j → ∞ ε ( j ) ще клони към нулевия вектор и дефини-
раният итерационен процес ще се схожда към истинското решение на системата
Ax = b .

Сега ще покажем, че ако матрицата А е диагонално преобладаваща, максималната


собствена стойност на матрицата на итерационния процес B е по модул по-малка от
единица.

Нека v1,k е максималната по модул компонента на собствения вектор v1:

v 1,k = max v 1,i . Тогава, от k-тото равенство на системата Bv1 = λ1 v1 , а именно


i

∑b
i =1
ki v 1,i = λ1 v 1,k , следва:

n v 1,i n v 1,i n
λ1 = ∑ bki
i =1 v 1,k
≤ ∑ bki
i =1 v 1,k
≤ ∑ bki < 1 .
i =1
(7)

Последното неравенство се дължи на факта, че A е диагонално преобладаваща,


aij
т.е. aii > ∑ aij , така че съгласно (2): bii = 0 и bij = − (i ≠ j ) .
j ≠i aii

19/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

Последователна релаксация (метод на Гаус-Зайдел)


Естествено развитие на метода на Якоби е идеята при пресмятането на поредната
компонента на новото приближение на решението да се използуват вече получените
негови компоненти, т.е.

1  
xi( j ) =  bi − ∑ a ik x k( j ) − ∑ a ik x k( j −1)  . (8)
aii  k <i k >i 

Или, в матричен вид:

x ( j ) = D −1Lx ( j ) + D −1Ux ( j −1) + D −1b


. (9)
⇒ x ( j ) = (1 − D −1L ) D −1Ux ( j −1) + (1 − D −1L ) q
−1 −1

Може да се покаже, че ако матрицата A е диагонално преобладаваща, то този ите-


рационен процес, наречен метод на Гаус-Зайдел, или последователна релаксация, се
схожда по-бързо от метода на Якоби.

По-нататъшно усъвършенствуване на метода на Гаус-Зайдел е т.нар. последова-


телна свръхрелаксация, или SOR (successive over-relaxation). При този метод се търси
подходяща линейна комбинация между двете последни приближения x ( j ) и x ( j −1) , по-
лучени по метода на Гаус-Зайдел, която да води до допълнително намаляване на векто-
ра на грешката на j-тата стъпка на итерационния процес:

x ( j ) = x ( j −1) + ω (x ( j ) − x ( j −1) ) .
~ (10)

Методът е сходящ при 0 < ω < 2 , като може да се покаже, че максимално намаля-
ване на грешката, т.е. максимално ускоряване на сходимостта, се получава при

( )
ω = 2 1 + 1 − λ21 , където λ1 е максималната собствена стойност на матрицата B на

метода на Якоби. На практика множителят ω често се избира емпирично и е напр. в


интервала 1.3 – 1.8.

Оптимален едностъпков итерационен процес


Друг тип итерационни схеми са от вида:

x ( j ) = x ( j −1) − C(Ax ( j −1) − b ) = (1 − CA )x ( j −1) + Cb = Bx ( j −1) + q , (11)

където B ≡ (1 − CA ) и q ≡ Cb . (12)

20/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

Както беше показано, такава итерационна схема ще бъде сходяща точно тогава,
когато всички собствени стойности на B са по модул по-малки от 1. Изборът на засега
произволната матрица C се прави така, че максималната по модул собствена стойност
на B да бъде минимална, тъй като е явно, че тогава ще се постигне максимална скорост
на сходимост (на намаляване на вектора на грешката).

Най-простият избор на C, а именно C = α1 , където α е подлежащ на определяне


параметър, води до т.нар. оптимален едностъпков итерационен процес:

( )
x ( j ) = x ( j −1) − α Ax ( j −1) − b = (1 − αA )x ( j −1) + αb = Bx ( j −1) + q , (13)

където B ≡ (1 − αA ) и q ≡ αb . (14)

Нека λi (i = 1, ..., n) са собствените стойности на A и тази матрица е положително


определена, т.е. λi > 0. Интервалът в който попадат тези собствени стойности обикно-
вено може да бъде предварително оценен: 0 < m ≤ λi ≤ M.

(Може да се покаже, че ако Ci , i = 1,..., n са кръгове с центрове в a ii и с радиуси

ri = ∑ a ik , i = 1,..., n , и ако областта D е обединение на тези кръгове, то всички собствени стойности


k ≠i

на матрицата A лежат вътре в тази област. Така, ако собствените стойности са реални, то

   
m ≥ min a ii − ∑ a ik  и M ≤ max  a ii + ∑ a ik  .)
i
 k ≠i  i
 k ≠i 

От определението (14) за матрицата на итерационния процес B следва, че нейните


собствени стойности ще бъдат µi = 1 − αλi (i = 1,..., n ) . Ако µ1 е максималната по модул

измежду тях, то скоростта на сходимост ще бъде максимална, ако α се подбере така, че


µ1 = max 1 − αλ i → min .
i

Поради огромния брой на собствените стойности λi (n е обикновено много голя-


мо) може да се приеме, че те заемат непрекъснати стойности в интервала [m, M]. Тогава
условието за α се преобразува във вида: max 1 − αλ → min . То се изпълнява при
m ≤λ ≤ M

1 − αm = 1 − αM , т.е. α = 2 / (M + m ) . (15)

M −m
Явно е, че при тази стойност на α, µ1 ≡ max 1 − αλ = .
m ≤λ ≤ M M +m

21/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

α=2/(m+M)
µ=1-αλ

α<2/(m+M)
α>2/(m+M)
µmax

µmax

-1

0 m M
λ

Фиг.1 Избор на ъглов коефициент α за оптималния едностъпков итерационен


процес. При α = 2 / (M + m ) максималната стойност на µ за m ≤ λ ≤ M е минимална.

Метод на полиномите на Чебишев


Изборът C = Pr −1 (A ) в (11), където Pr −1 е подлежащ на определяне полином от
степен r-1, води до т.нар. метод на полиномите на Чебишев. При него итерационният
процес има вида:

x ( j ) = x ( j −1) − Pr −1 (A )(Ax ( j −1) − b ) = (1 − APr −1 (A ))x ( j −1) + Pr −1 (A )b = Bx ( j −1) + q , (16)

където B ≡ (1 − APr −1 (A )) = Qr (A ) и q ≡ Pr −1 (A )b . (17)

Ако λi са собствените стойности на A, то собствените стойности на B ще бъдат

µi = 1 − λi Pr −1 (λi ) = Qr (λi ) . (18)

Следвайки разсъжденията от предходния случай, полиномът Qr трябва да се из-

бере така, че µ1 = max Qr (λ ) → min .


m ≤λ ≤ M

От друга страна, измежду всички полиноми от дадена степен (напр. r) този, чийто
максимален модул е минимален при вариране на независимата променлива във фикси-

22/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

ран интервал, е полиномът на Чебишев Tr(x). За него въпросният фиксиран интервал на


x e [− 1, 1] . Следователно, най-добрият избор за Qr (λ ) е:

 2λ − (M + m )    M + m 
−1

Qr (λ ) = Tr   Tr  −  . (19)
 M − m    M − m 

(Направена е смяна на независимата променлива, така че нейният диапазон на из-


менение от [m, M] да стане [-1, 1], и е въведена подходяща нормировка, защото съглас-
но (18) Qr (0) = 1 .)

Максималната по модул стойност на този полином при вариране на λ в интервала


−1
 1  M + m  r  M + m  − r  
[m, M] е    +   и тя е минималната измежду всички въз-
 2  M − m   M − m  
  
можности за полиноми от степен r, дефинирани в интервала [m, M]. Както се вижда,
тази стойност ще намалява с увеличаването на r.

Практическата организация на итерациите при разглеждания метод съответствува


на прилагане r пъти на оптималния едностъпков итерационен процес – всеки път с раз-
лична стойност на параметъра α:

x ( j ,i +1) = x ( j ,i ) − α i (Ax ( j ,i ) − b ) = (1 − α i A )x ( j ,i ) + α i b, i = 1,..., r . (20)

Цикълът започва с последното приближение на решението: x ( j ,1) ≡ x ( j −1) , а полу-


ченото ново приближение е x ( j ) ≡ x ( j ,r +1) . По изчислителни причини стойността на r се
избира относително малка.

Сравнявайки с първоначалната формулировка на този метод (16) се вижда, че в


този случай изискването (19) ще се отнася за полинома:

r
 r  r 1 
Qr (λ ) = ∏ (1 − α i λ ) = ∏ α i ∏  − λ  . (21)
i =1  i =1  i =1  α i 

Така, ако αi са реципрочни на нулите βi на полинома на Чебишев


 2λ − ( M + m ) 
Tr   , които са
 M −m 

M +m M −m π(2i − 1)
βi = + cos , (22)
2 2 2r

23/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

то полиномът Qr (λ ) в записа (21) ще съвпада с желания полином Qr (λ ) в записа


(19). (Два полинома от еднаква степен и със съвпадащи нули се различавяат само по
общ нормиращ множител, а записът (21) автоматично осигурява желаната нормировка
Qr (0) = 1 .)

µ=1-αoptλ
µ=Q3(λ)
µmax

µmax
0
µ

µmax

µmax

-1

0 m M
λ

Фиг. 2 Метод на полиномите на Чебишев при r = 3 . Пунктирната линия съответс-


твува на оптималния едностъпков итерационен процес.

Контрол на сходимостта
Всички разгледани дотук методи се характеризират с монотонно намаляване на
модула на вектора на грешката в хода на итерациите, т.е. редицата от последователните
приближения x (0 ) , x (1) ,..., x ( j −1) , x ( j ) ,... се схожда монотонно към точното решение на ли-
нейната система x. В този смисъл, критерият за прекратяване на итерациите ще бъде
x ( j ) − x ( j −1) ≤ ε x ( j ) , където ∗ е някаква векторна норма, а ε е подходящо избрано малко

число. На практика е удобно да се използува следният критерий за сходимост:


max x k( j ) − x k( j −1) < ε max x k( j ) . Така се избягват допълнителни итерации заради малки и
k k

маловажни бавно схождащи се компоненти на вектора на решението.

24/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

4. Подобряване на точността на числени оценки


Предмет на настоящото разглеждане са методи и подходи за уточняване на оце-
нената стойност на функции, интеграли, производни и т.н. Доколкото в често срещани
случаи пресмятанията се свеждат до сумиране на редове или до използуване на реку-
рентни връзки между последователни приближения на търсената величина, тук се
включват и техники за ускоряване на сходимостта при пресмятане на сумите на редове
или при итеративно приближаване към гранична стойност.

Общ подход: екстраполация на Ричардсън


Често прилагана стратегия е т.нар. екстраполация на Ричардсън, чиято същност се
свежда до елиминиране на компоненти на грешката от дискретизация на основата на
знание за зависимостта на тази грешка от някой параметър на избрания изчислителен
метод.

Така например, оценката на определен интеграл по метода на трапеците има


следния вид:

I ≡ ∫ f (x )dx = Tm + E m ,
b
(1)
a

където I е истинската стойност на интеграла,

1 1 
Tm = h  f 0 + f1 + ... + f m−1 + f m  (2)
2 2 

е нейната числена оценка, а

Em =−
(b − a)
3
f ' ' (η ), η ∈ [a , b] (3)
12m 2

е грешката от дискретизация при пресмятане на тази оценка. m е броят равноотда-


лечени абсциси в интервала [a, b] , в които се пресмятат функционалните стойности,
при което f 1 = f (a ) и f m = f (b ) .

Нека има две оценки, I1 и I2, получени при съответно m1 и m2 равноотдалечени аб-
сциси:

25/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

I = I1 −
(b − a)
3
f ' ' (η1 )
12m12
(4)
I = I2 −
(b − a )3 f ' ' (η 2 )
12m22

Тогава, ако се приеме, че f ' ' (η1 ) ≅ f ' ' (η 2 ) = ∆ , то от системата (4), което е с две
неизвестни – I и ∆, може да се елиминира ∆ и да се определи I:

m22 I 2 − m12 I 1 m12


I≅ = I + (I 2 − I 1 ) (5)
m22 − m12 m22 − m12
2

При този пример параметърът, от който по известен начин зависи грешката от


дискретизация, е броят абсциси m. Знанието за тази зависимост се използува за форми-
ране на уточнена оценка на търсения интеграл на основата на две апроксимации, полу-
чени при различни стойности на m.

Ускоряване на сходимостта на редове


Тук е уместно най-напред накратко да се напомнят някои определения и свойства,
свързани с редици и редове.

1. Редица: {a k }k =1,...,n,...
∞ n
2. Ред: ∑ a k ⇒ {sn }n=1,... ( sn = ∑ ak )
k =1 k =1

a n ≤ a n +1 : нарастващ ред; a n ≥ a n +1 : намаляващ ред; монотонни редове. При положителни чле-


нове редът е положителен. Знакопроменлив ред: a1 − a 2 + a 3 − a 4 + ... , където членовете ai са с еднакъв
знак.

3. Сходимост на редица. Cauchy: Редицата {a k }k =1,...,n,... се схожда тогава и само тогава, ако за

всяко ε>0 a n − a m < ε при всички достатъчно големи n и m. Или: {a k }→ a .

4. Сходимост на ред. Cauchy: {sn }→ s тогава и само тогава, ако за всяко ε>0
a m +1 + a m +2 + ... + a n < ε при всяко достатъчно голямо m и n>m. В частност (n=m+1) редът ще се
схожда, ако членовете am клонят към 0 при m → ∞ .

5. Допълнителни критерии за сходимост



Геометричен ред: Ако p е произволно и q < 1 , то ∑ pq k −1
→ p / (1 − q ) .
k =1
Ако Σan и Σbn са положителни редове и ако an ≥ bn при всяко n, то от сходимостта на Σan следва
сходимост на Σbn и обратно – от разходимостта на Σbn следва разходимост на Σan.

26/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

Например, от сходимостта на геометричния ред ∑ pq n −1


при p > 0 и 0 < q < 1, следва, че ако
a n +1 / a n → l и l < 1, то положителният ред Σan се схожда; и обратно – ако l > 1, то редът Σan е разхо-
дящ. Ако границата l съществува, но е равна на 1, то може да се приложи следният критерий: Ако f(x) > 0
е функция, дефинирана за x > 0, и f(∞) → 0, то редът Σ f (n) е сходящ или разходящ съответно за крайна

или безкрайна стойност на ∫ f (x )dx .
1
Знакопроменлив ред. Такъв ред се схожда, ако {an} намалява монотонно към 0.

6. Σan е абсолютно сходящ, ако Σ|an| е сходящ. В противен случай редът е условно сходящ. Cauchy:
ако редът е абсолютно сходящ, той е сходящ.

δ2 -процес на Ейткин (Aitken)


Нека редът Σan е сходящ, така че:

s − s n +1 = C n (s − s n ); C n < 1 , (6)

където s е сумата на реда, т.е. границата на редицата от парциалните суми


{sk }k =1,...,n,... .

Ако константите C n могат да се приемат за приблизително равни помежду си, т.е.

C n → C , то:

s − s n +1 ≅ C (s − sn ) (7)

От системата с две неизвестни, s и C,

s − s n +1 = C (s − s n )
(8)
s − s n + 2 = C (s − sn +1 )

се елиминира C и се определя границата на реда s:

s − s n + 2 s − s n +1
=
s s − s2
⇒ s = n n + 2 n +1 = s n + 2 −
(sn +2 − sn+1 ) = s − (∆ n +2 )
2 2

n+2
s − s n +1 s − sn sn + 2 − 2 s n +1 + s n s n + 2 − 2 s n +1 + sn ∆ n + 2 − ∆ n +1

Процесът на Ейткин е подходящ за ускоряване на сходимостта на всякакви лине-


йни итерации. Той е и още един пример за общия подход на Ричардсън, при който се
използува връзката (7) между грешката на парциалната сума sn и нейния пореден номер
n.

Числено диференциране
Общоприет начин за апроксимиране на първата производна на дадена функция е
т.нар. крайна разлика, пример за която е лявата страна на израза:

27/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

f (x + h ) − f ( x )
= f ' ( x ) + hf ' ' (x ) + ...
1
(9)
h 2

При оценяване на производната чрез крайна разлика трябва да се държи сметка не


само за грешката от дискретизация, която очевидно намалява със стъпката h, но и за
грешката от закръгление. Тъй като с намаляване на h се очаква двете функционални
стойности в числителя да се доближават помежду си, грешката от закръгление ще нара-
ства и може да се стигне до катастрофална загуба на точност.

Важен източник на грешка от закръгление може да бъде и неточното машинно


~
представяне на ефективната стъпка h ≡ ( x + h ) − ( x ) . Ясно е, че абсолютната грешка от
~
закръгление на израза за h ще бъде ∝ ε m x , където ε m е машинният епсилон, а относи-

телната – ∝ ε m x / h . Лесно може да се съобрази, че дължащата се на неточното предс-


~
тавяне на h относителна грешка на крайната разлика (9) ще бъде от същия порядък и
често може да се окаже недопустимо голяма. Този проблем винаги може да се преодо-
лее като стойността на h се да се избере така, че машинното представяне да ефективна-
та стъпка да бъде точно. За целта в програмната реализация трябва да се вмъкнат редо-
ве от типа на:

temp=x+h; h=temp-x. (10)

При вече осигурено точно представяне на ефективната стъпка, грешката от закръ-


гление при пресмятане на крайната разлика (9) ще бъде

er ∝ ε f f (x ) / h , (11)

където ε f е относителната грешка при пресмятане на f . В общия случай ε f ≥ ε m ,

но при липса на по-точна информация може да се приеме, че ε f ≈ ε m .

Като се вижда непосредствено от (9), грешката от дискретизация при пресмятане


на производната е

et ∝ h f ' ' ( x ) . (12)

Така, пълната грешка при пресмятане на производната ще бъде:

ε f f (x )
e(h ) = er + et = + h f ' ' (x ) . (13)
h

28/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

Получената явна зависимост на пълната грешка от стъпката h може да се използу-


ва за намиране на оптимална стойност hopt, осигуряваща минимална грешка. (Естестве-
но, тя подлежи на модифициране съгласно (10), така че да се осигури точно машинно
представяне на ефективната стъпка.)

И така, минимизирането на e(h ) води до:

f (x )
hopt ∝ ε f = ε f xc ∝ ε f x ≈ ε m x . (14)
f ' ' (x )

Тук е прието, че „характерната дължина на изменение на функцията”

f (x )
xc ≡ е приблизително равна на x , както е и в типичния случай.
f ' ' (x )

При такава стъпка минималната сумарна грешка на крайната разлика ще бъде

e(hopt ) ∝ ε f f (x ) f ' ' (x ) , а съответната относителна грешка:

e(hopt ) f (x ) f ' ' (x )


∝ εf ∝ ε f ≈ εm . (15)
f ' (x ) ( f ' (x ))2
При опростяването на израза (15) е прието, че f, f’ и f’’ са с общ мащаб, което е и
най-често срещаната ситуация.

По-точен израз за оценяване на производната е т.нар. централна крайна разлика:

f (x + h ) − f ( x − h )
= f ' (x ) + h 2 f ' ' ' (x ) + ...
1
(16)
2h 6

Както и при (9), оценката на грешката на (16) е получена на основата на развитие-


то на функционалните стойности в числителя в ред на Тейлор около x. Ясно е, че стига
да не е в противоречие с други елементи на логиката на пресмятанията, начинът (16)
винаги трябва да се предпочита пред (9).

На основата на анализ, аналогичен на направения в предходния случай, се полу-


чава, че оптималната стъпка ще бъде:

 f (x ) 
1/ 3

hopt ∝ ε f   =εf xc ∝ ε f x ≈ εm
1/ 3 1/ 3 1/ 3 1/ 3
 f ' ' ' (x )  x, (17)
 

29/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

при което минималната сумарна грешка е e(hopt ) ∝ ε f f (x ) f ' ' ' (x )


2/3 2/3 1/ 3
, а отно-

сителната грешка на централната крайна разлика ще бъде:

e(hopt ) f (x ) f ' ' ' (x )


2/3 1/ 3

∝ε f ∝ε f ≈ εm
2/3 2/3 2/3
. (18)
f ' (x ) f ' (x )

Следователно, при ε m ≈ 10 −7 тази грешка ще бъде ≈10-5, докато при предната кра-

йна разлика (9) аналогичната стойност ще бъде ≈10-4.

Екстраполация на Ричардсън при числено диференциране. Метод на


Ридърс (Ridders)
Този метод се основава на построяване на редица от диференчни оценки (т.е.
оценки чрез крайни разлики от типа на напр. (16)) при прогресивно намаляваща стъпка
h и използуване на знания за зависимостта на компонентите на грешката от дискрети-
зация от степените на h, така че на базата на тези диференчни оценки да се формират
приближения с нарастващ ред на точност.

f (x + hi ) − f ( x − hi )
Нека Di1 ≡ , i = 1... N , (19)
2hi

където hi = h0 c i −1 и c < 1.

Грешката от дискретизация на Di1 е:

f ' ' ' ( x )hi2 + f (5 ) (x )hi4 + ... = k1hi2 + k 2 hi4 + ... = ε 1 + ε 2 + ...
1 1
Ei1 = (20)
3! 5!

(Тук и по-долу долният индекс i на диференчната оценка Di j нараства с намаля-


ване на стъпката, а горният индекс j нараства с увеличаване на реда на точност.)

От (19) и (20) следва, че грешката от дискретизация на Di1+1 ще бъде:

f ' ' ' (x )hi2+1 + f (5) (x )hi4+1 + ... = c 2ε 1 + c 4ε 2 + ...


1 1
Ei1+1 = (21)
3! 5!

На основата на (19) – (21) може да се състави следната схема на изграждане на


диференчни приближения от все по-висок ред.

1. От уравненията (за истинската стойност на производната D и за компонентите


на грешката ε1, ε2, ...)

30/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

D = Di1 + ε 1 + ε 2 + ε 3 + ε 4 + ...
D = Di1+1 + c 2ε 1 + c 4ε 2 + c 6ε 3 + c 8ε 4 + ...
(22)
D = Di1+2 + c 4ε 1 + c 8ε 2 + c12ε 3 + c16ε 4 + ...
D = Di1+3 + c 6ε 1 + c12ε 2 + c18ε 3 + c 24ε 4 + ...

се елиминира ε1 и се получават уравненията:

 Di1+1 − c 2 Di1  2 c 2 (c 4 − 1)ε 3 c 2 (c 6 − 1)ε 4


D = D =
 2
 − c ε2 + + + ...
1 − c 2 
i +1
 1− c2 1− c2
 D1 − c 2 Di1+1  6 c 8 (c 4 − 1)ε 3 c10 (c 6 − 1)ε 4
D = Di2+2  = i +2 
 − c ε + + + ... (23)
1− c2 1 − c2 1− c2
2
 
 D 1 − c 2 Di1+2  10 c14 (c 4 − 1)ε 3 c18 (c 6 − 1)ε 4
D = Di2+3  = i +3 
 − c ε + + + ...
1 − c2 1 − c2 1 − c2
2
 

2. От тях се елиминира ε2 и се получават уравненията:

 Di2+ 2 − c 4 Di2+1  6 c 6 (c 6 − 1)ε 4


D = D  =3
i+2  + c ε 3 − + ...
 1 − c4  1 − c2
(24)
 D 2 − c 4 Di2+ 2  12 c14 (c 6 − 1)ε 4
D = Di3+ 3  = i + 3 
 + c ε − + ...
1 − c4 1 − c2
3
 

3. От тях се елиминира ε3 и се получават уравненията:

 D 3 − c 6 Di3+ 2  12
D = Di4+ 3  = i + 3  − c ε 4 + ... (25)
 1 − c6 

и т .н .

Вижда се, че тази схема на изграждане на последователните приближения може


да се запише по следния начин:

α j = c 2α j −1
D j
− α j Di j

, където ( j = 1,...)
i +1
Di +j +11 = (26)
1−α j
α0 = 1

Последователността на пресмятане на Di j е илюстрирана на долната схема. Чис-


лата в клетките показват реда на тяхното запълване. Както следва от (26), съдържание-
то на всяка клетка се формира с използуване на съдържанието на нейните северен и
северозападен съседи.

31/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

i→ 1 2 3 4 5 6 7 8 …
j↓
1 1 2 4 7 11 16 22 29 …
2 3 5 8 12 17 23 30 …
3 6 9 13 18 24 31 …
4 10 14 19 25 32 …
5 15 20 26 33 …
6 21 27 34 …
7 28 35 …
8 36 …
… …

На всяка стъпка се прави оценка на грешката:

( )
E t = max Di +j +11 − Di j , Di j++11 − Di +j 1 . (27)

Ако тя е по-малка от най-малката предходна аналогична оценка Emin, Di j++11 се при-


ема за най-добро текущо приближение на производната, а за нова стойност на Emin се
D jj++11 − D jj ≥ s × E min
приема Et. Цикълът се прекъсва, ако .
(s > 1)

32/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

5. Интерполация
Нека са дадени функционалните стойности

y i ≡ f (xi ), i = 1,..., n , където x1 < x 2 < ... < x n −1 < x n .

Интерполация е заместването на функцията f (x ) за x ∈ [x1 , x n ] с друга функция

ϕ (x ) , така че да са изпълнени условията:

ϕ (xi ) = y i , i = 1,..., n (1)

Интерполиращата функция ϕ (x ) се избира така, че да има удобен аналитичен


вид и да приближава f (x ) между възлите xi , i = 1,..., n , т.е.

ϕ (x ) ≈ f (x ), xi < x < xi +1 (2)

Предполага се също, че възлите са избрани така, че двойките (xi , y i ), i = 1,..., n да

описват „представително” поведението на f (x ) за x ∈ [x1 , x n ] . При такъв избор на въз-

лите може да се очаква, че между тях функцията f (x ) ще бъде непрекъсната и достатъ-


чно гладка. В този смисъл, за интерполиращата функция ϕ (x ) е естествено да се поис-
кат същите свойства.

Полиномна интерполация
Ако се избере ϕ (x ) да бъде полином на x, то от условията (1) могат да се опреде-
лят общо n негови коефициента. Следователно, с изключение на частния случай, когато
стойността на коефициента пред x n −1 се окаже нулева, степента на този полином ще
бъде n-1.

Тук е уместно да се отбележи, че полиномът, определен от условията (1), е единс-


твен. Наистина, ако допуснем противното, т.е., че Pn −1 (x ) и Qn −1 (x ) са два различни по-
линома от степен n-1, удовлетворяващи условията (1), то полиномът
Rn −1 ( x ) ≡ Pn −1 ( x ) − Qn −1 (x ) , който в общия случай е също от степен n-1, трябва да удовле-

творява условията Rn −1 ( xi ) = 0, i = 1,..., n . Това, обаче, е невъзможно, тъй като Rn −1 (x )

може да има най-много n-1 нули. Следователно, Pn −1 (x ) и Qn −1 (x ) са идентични.

33/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

Удобен начин за конструиране на единствения интерполиращ полином за двойки-


те (xi , y i ), i = 1,..., n е следният:

n
Pn −1 (x ) = ∑ y i L(ni−) 1 ( x ) , (3)
i =1

където полиномите на Лагранж L(ni−) 1 ( x ) имат свойството:

L(ni−) 1 (xi ) = 1
L(ni−) 1 (x j ) = 0, j ≠ i
(4)

Техният явен вид е:

∏ (x − x ) j
(i )
(x ) = j ≠i

∏ (x − x )
Ln −1 (5)
i j
j ≠i

Удобство на представянето (3) е, че полиномите на Лагранж L(ni−) 1 ( x ) се строят

единствено с използуване на информация за възлите xi , i = 1,..., n , а функционалните

стойности y i , i = 1,..., n не са нужни.

Проблем на глобалната полиномна интерполация, т.е. на търсенето на общ поли-


ном Pn −1 (x ) , удовлетворяващ всяко от условията (1) е, че степента на този полином на-
раства с броя на възлите n, а заедно с нея нараства и вероятността някои от нулите на
Pn −1 (x ) да попаднат между интерполационните възли. Ефектът е илюстриран на Фиг. 1.

Следователно, при голям брой възли е целесъобразно полиномната интерполация


да бъде локална:

ϕ (x ) = Pm(i ) ( x ), x ∈ [xi , xi +1 ], (6)

където степента m на всеки от локално дефинираните полиноми Pm(i ) (x ) е ниска, а


техните коефициенти се избират от изискването за интерполация (1) и от допълнителни
изисквания за гладкост на интерполиращата функция ϕ (x ) , т.е. за непрекъснатост на
достатъчен брой нейни производни.

Интерполираща функция от вида (6), изградена съгласно споменатите изисквания,


се нарича сплайн.

34/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

Ако, в частност, m = 1, получената прекъснато-линейна интерполираща функция


може да удовлетвори само условията (1), но не и допълнителни изисквания за гладкост.
В този случай явният вид на локалните полиноми ще бъде:

P1(i ) ( x ) = ω (i ) (x ) y i +1 + ω (i ) ( x ) yi , (7)

x − xi x −x
където ω (i ) (x ) ≡ и ω (i ) ( x ) ≡ i +1 = 1 − ω (i ) (x ) (8)
xi +1 − xi xi +1 − xi

Вижда се, че (7) и (8) съвпадат с (3) и (5) за n = 2.

n=100
n=20
Pn-1(x)

0 1 2 3 4 5 6
x

Фигура 1. Глобална полиномна интерполация на sin( x ) в интервала [0,2π ] . При голяма


степен на полинома (n = 100) част от нулите попадат между интерполационните възли.

Естествен кубичен сплайн


Естественият кубичен сплайн е реализация на подхода (6) за случая m = 3.

Удобно е локалните полиноми P3(i ) ( x ), i = 1,..., n − 1 да се търсят във вида:

P3(i ) ( x ) = ω (i ) ( x ) yi +1 + ω (i ) ( x ) yi + ψ (i ) (x )zi +1 + ψ (i ) ( x )zi , (9)

където zi , i = 1,..., n са подлежащи на определяне величини, ω (i ) (x ) и ω (i ) ( x ) са по-


линомите от първа степен (8), а

35/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

( xi +1 − xi )
(ω (x ) − ω (x )) и ψ (x ) ≡ ( xi +1 − xi )
(ω (i )3 (x ) − ω (i ) (x ))
2 2
ψ (x ) ≡
(i ) (i ) 3 (i ) (i )
(10)
6 6

са полиноми от трета степен със следните свойства:

1) ψ (i ) (xi ) = ψ (i ) ( xi +1 ) = 0; ψ (i )
(xi ) = ψ (i ) (xi +1 ) = 0

2) ψ ' '(i ) (x ) = ω (i ) (x ); ψ ' '(i ) (x ) = ω (i ) ( x )

От първото свойство, (9) и (8) следва, че сплайнът ϕ (x ) ще удовлетворява интер-


полационните условия (1). От второто свойство, (9) и (8) следва, че

d 2 P3(i )
2
(x ) = ω (i ) (x )zi +1 + ω (i ) (x )zi , (11)
dx

т.е. втората производна на сплайна ϕ (x ) ще бъде непрекъсната и ще интерполи-


ра между величините zi , i = 1,..., n , които имат смисъл на втори производни на сплайна
в интерполационните възли.

Величините zi , i = 1,..., n подлежат на определяне. Те могат да бъдат намерени от


изискването за непрекъснатост на първата производна на сплайна в интерполацион-
ните възли (между тях тя е непрекъсната, тъй като е полином от втора степен):

dP3(i ) dP3(i +1)


(xi +1 ) = (xi +1 ), i = 1,..., n − 2 (12)
dx dx

Лесно може да се провери, че условията (12) водят до следната система от линей-


ни уравнения за zi :

xi − xi −1 x −x x −x y − yi yi − yi −1
zi −1 + i +1 i −1 zi + i +1 i zi +1 = i +1 − , i = 2,..., n − 1 (13)
6 3 6 xi +1 − xi xi − xi −1

Броят на тези уравнения е с две по-малък от броя на неизвестните. Така, решение-


то на (13) ще бъде еднозначно при допълнителен избор на стойности напр. за z1 и zn .

За естествения кубичен сплайн този избор е z1 = zn = 0 .

Матрицата на системата (13) е тридиагонална, симетрична и диагонално преобла-


даваща, така че подходящ метод е гаусовата елиминация без избор на водещ елемент.

Нека, в общия случай, уравненията от такава система се запишат във вида:

36/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

a i xi −1 + bi xi + ci xi +1 = d i , i = 1,..., n
(14)
(a1 = cn = 0)
Лесно може да се провери, че след правия ход на елиминацията те ще придобият
вида:
~ ~
bi xi + ci xi +1 = d i , i = 1,..., n
, (15)
( c n = 0)

където:

~  a  ~  a ~
bi = bi +  − ~ i ci −1 ; d i = d i +  − ~ i d i −1 , i = 2,..., n
 bi −1   bi −1  (16)
(~ ~
b1 = b1 ; d 1 = d 1 )
Обратният ход за системата (15) е:
~ ~ ~
( ~
)
x n = d n bn ; xi = d i − ci xi +1 bi , i = n − 1,...,1 (17)

При вече известни и съхранени xi , yi , zi , i = 1..., n пресмятането на интерполирана

стойност y* = ϕ (x *) , където x * е произволна избрана стойност на независимата про-


менлива, става съгласно (9) след намиране на индекса i, за който xi ≤ x* ≤ xi +1 .

Намирането на този индекс може да стане чрез т.нар. двоично търсене, което изи-
сква log2 n изпълнения на стъпки 2), 3) и 4) от долния алгоритъм.

1) Въвеждане на индекси il и ir с начални стойности il = 1 и ir = n

Aко ir − il > 1 , повтаряне на стъпки 2), 3) и 4):

2) Намиране на индекса im = (il + ir ) 2 (целочислено делене)

3) Проверка дали x * е между xil и xim .

4) Ако да, то ir = im ; ако не, то il = im

5) i = il .

37/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

2
f(x)=1/(1+25x )
2.0 интерполиращ полином на Лагранж
f(x)
интерполационни възли
1.5

1.0

0.5

0.0

-0.5
-1.0 -0.5 0.0 0.5 1.0

2
f(x)=1/(1+25x )
1.0 f(x)
естествен кубичен сплайн
интерполационни възли

0.5

0.0
-1.0 -0.5 0.0 0.5 1.0

Фигура 2. Функция на Рунге: f (x ) = 1 (1 + 25 x 2 ) . Сравнение между глобалната поли-


номна интерполация от 10-та степен през 11 възела и интерполацията с естествен куби-
чен сплайн.

38/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

6. Числено интегриране

Нека I ab ≡ ∫ dxf ( x ) . Задачата е да се оцени стойността на този интеграл с макси-


b

мална точност при минимални изчислителни разходи.

Елементарни алгоритми

Правило на правоъгълниците
Методът се състои в разбиване на [a, b] на подинтервали [xi , xi +1 ], i = 1,..., n ,
(x1 = a; xn +1 = b ) , локално интерполиране на f (x ) с полиноми от нулева степен през цен-
 x + xi +1 
тровете на всеки подинтервал, ϕ (x ) = f (ξi ), x ∈ [xi , xi +1 ] ,  ξi ≡ i  , интегриране на
 2 
този полином в границите на подинтервала, и сумиране на получените локални оценки
xi +1

Ri ≡ ∫ dxϕ (x ) :
xi

n n
I ab ≅ ∑ Ri ≡ ∑ hi f (ξi ) (hi ≡ xi +1 − xi ) (1)
i =1 i =1

Грешката от дискретизация може да се оцени чрез развиване на подинтегралната


функция в тейлоров ред около центъра на всеки подинтервал:

f ( x ) = f (ξi ) + (x − ξi ) f I (ξi ) +
(x − ξi )2 f II (ξi ) +
(x − ξi )3 f III (ξi ) +
(x − ξi )4 f IV (ξi ) + O (hi5 )
2 6 24

(ξi ) + O (hi7 )
3 5
I i ≡ ∫ f ( x ) = hi f (ξi ) + 0 + f II (ξi ) + 0 +
xi +1 hi hi IV
f (2)
xi 3× 2 × 4 5 × 24 × 16

= Ri + i f II (ξi ) + i f IV (ξi ) + O (hi7 )


3 5
h h
24 1920
= Ri + E1 + E2 + O (hi7 )

Фигура 1. Правило на правоъгълниците


39/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

Правило на трапеците
Методът се състои в разбиване на [a, b] на подинтервали [xi , xi +1 ], i = 1,..., n ,
(x1 = a; xn +1 = b ) , локално интерполиране на f (x ) с полиноми от първа степен през кра-
xi +1 − x x − xi
ищата на всеки подинтервал, ϕ (x ) = f ( xi ) × + f (xi +1 ) × ,
hi hi

x ∈ [xi , xi +1 ] (hi ≡ xi +1 − xi ) , интегриране на този полином в границите на подинтервала, и


xi + 1

сумиране на получените локални оценки Ti ≡ ∫ dxϕ (x ) :


xi

n n
I ab ≅ ∑ Ti ≡ ∑
hi
( f (xi ) + f (xi +1 )) (3)
i =1 i =1 2

Грешката от дискретизация може да се оцени чрез развиване на подинтегралната


функция в тейлоров ред около центъра на всеки подинтервал:

f IV (ξi ) − O (hi5 )
2 3 4
f ( xi ) = f (ξi ) − f (ξi ) + i f II (ξi ) − i f III (ξi ) +
hi I h h hi
2 2×4 6×8 24 × 16

f IV (ξi ) + O (hi5 )
2 3 4
f ( xi +1 ) = f (ξi ) + i f I (ξi ) + i f II (ξi ) + i f III (ξi ) +
h h h hi
2 2×4 6×8 24 × 16

f IV (ξi ) + O (hi7 )
3 5
Ti = hi f (ξi ) + 0 + f (ξi ) + 0 +
hi II hi
(4)
2×4 24 × 16

f IV (ξi ) + O (hi7 )
3 5
I i ≡ ∫ f ( x ) = Ti − f II (ξi ) −
x i +1 2hi 4hi
xi 3× 2 × 4 5 × 24 × 16
= Ti − 2 E1 − 4 E2 + O (hi )7

Вижда се, че грешката на метода на трапеците е по-голяма от тази на метода на


правоъгълниците. Следователно, когато това е възможно, методът на правоъгълниците
трябва да се предпочита пред метода на трапеците. Той, обаче, няма да е приложим при
фиксирани абсциси ξ i , които не могат да се интерпретират като центрове на подинтер-

вали, които напълно да покриват [a, b] , но без да се припокриват взаимно.

При равноотдалечени абсциси (3) се свежда до следния „обединен” израз:

1 1 
Tab = h  f 1 + f 2 + ... + f n + f n +1  (5)
2 2 

40/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

Фигура 2. Правило на трапеците

Правило на Симпсън (Simpson)


От (2) и (4) следва, че главната компонента E1 на грешката може да се елиминира
по следния начин:

Ri + Ti = i ( f i + 4 f i +1 / 2 + f i +1 ) − E 2
2 1 h 2
I i = Si ≡ (6)
3 3 6 3

От определението на E 2 (виж напр. (2)) се вижда, че методът на Симпсън ще бъде


точен за подинтегрални функции, които във всеки подинтервал са полиноми от степен,
не по-висока от 3. Изразът (6) може да се получи и ако подинтегралната функция се
интерполира локално с полином от втора степен през точките xi , ξ i , xi +1 , и този поли-
ном се интегрира. Ограниченията за прилагане на метода на Симпсън са същите като за
метода на правоъгълниците.

Обединеният израз при равноотдалечени абсциси е:

S ab =
h
( f1 + 4 f 2 + 2 f 3 + 4 f 4 + ... + 4 f n−2 + 2 f n−1 + 4 f n + f n+1 ) (7)
3

Фигура 3. Правило на Симпсън

41/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

Контрол на точността
Задачата е да се оцени грешката на квадратурната оценка. Подходът се основава
на известните връзки (2), (4), (6) между грешката и стъпката на интегриране.

a) процедура на основата на правилото на трапеците

h1 h
Нека при стъпки h1 ≡ b − a, h2 = ,..., hk = k −1 ,... се строи редицата T1, T2, .... от
2 2
съответни оценки на интеграла съгласно (5). Тъй като по силата на (4) тази редица ще
се схожда монотонно към истината, итерацията може да се прекъсне напр. при
Tk − Tk −1
<ε .
Tk −1

От (5) се вижда, че съществува следната рекурентна връзка между членовете на


редицата от последователни приближения на интеграла:

+ hk ( f 2 + f 4 + ... + f n − 2 + f n ), k = 2,3,...
Tk −1
Tk = (8)
2

Номерацията на абсцисите (функционалните стойности) е спрямо Tk . Броят на

новите точки е 2 k −2 .

Фиг.1 Рекурентно изграждане на редицата T1, T2, .... С кръгове са отбелязани абсцисите,
в които се пресмятат допълнителните функционални стойности за прилагане на връзка-
та (8). На последния ред са отбелязани всички абсциси, функционалните стойности в
които участвуват в оценката T4. Илюстрацията е от NUMERICAL RECIPES IN FORTRAN 77: THE
ART OF SCIENTIFIC COMPUTING (ISBN 0-521-43064-X) Copyright (C) 1986-1992 by Cambridge University
Press.

б) процедура на основата на правилото на Симпсън

hk и редицата S1, S2, ... се дефинират аналогично на предходния случай. Аналоги-


чен е и критерият за сходимост.

42/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

На основата на (7) и (5), рекурентната връзка между членовете на редицата от по-


следователни приближения на интеграла се строи по следния начин. Приведени към
номерацията на абсцисите (функционалните стойности) на Tk, оценките Tk-1 и Tk ще
имат вида:

Tk −1 = hk ( f1 + 0 + 2 f 3 + 0 + ... + 0 + 2 f n −1 + 0 + f n +1 )
1 1  (9)
Tk = hk  f1 + f 2 + f 3 + f 4 + ... + f n − 2 + f n −1 + f n + f n +1 
2 2 

Вижда се, че от тях може да се формира линейна комбинация, която да бъде екви-
валентна на израза (7):

4Tk − Tk −1 hk
Sk = = ( f 1 + 4 f 2 + 2 f 3 + 4 f 4 + ... + 4 f n −2 + 2 f n −1 + 4 f n + f n +1 ) (10)
3 3

Така, със същите изчислителни усилия, които са нужни за прилагане на (8), може
4Tk − Tk −1
да се построи редица от оценки S k = , k = 2,3,... , всяка от които ще бъде с два
3
порядъка по-точна от тази по метода на трапеците. Сходимостта на тази редица, съот-
ветно, ще бъде много по-бърза от сходимостта на (8).

Гаусова квадратура

Общият подход при численото интегриране, т.е. оценяване на I ab ≡ ∫ dxf ( x ) , се


b

свежда до интерполиране на подинтегралната функция и приближаване на I ab с анали-


тичен израз за интеграла на интерполиращата функция. Крайният резултат винаги може
n
да се представи във вида I ab ≅ ∑ a i f ( xi ) , където възлите xi , i = 1,..., n са избрани по
i =1

определен начин, а коефициентите (теглата) a i , i = 1,..., n зависят от този избор. Ясно е,


че при полиномна интерполация и свободен избор на несъвпадащи помежду си възли
квадратурната формула ще бъде точна за подинтегрални функции, които са полиноми
от степен, не по-висока от n-1.

От друга страна, ако се поиска възлите да удовлетворяват специални условия (n


на брой), то може да се очаква, че общият брой от 2n условия (n за възлите + n от изис-
кването за интерполация) ще бъде достатъчен за конструиране на квадратурна форму-
ла, която да бъде точна за подинтегрални функции, които са полиноми от степен, не по-
висока от 2n-1. Именно такава е стратегията на т.нар. Гаусова квадратура.

43/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

За обосноваване и прилагане на Гаусовата квадратура са нужни някои сведения за


ортогоналните полиноми и за начина на тяхното построяване.

Полиномите pi ( x ) и p j (x ) , съответно от степени i и j, са взаимно ортогонални относно теглов-

ната функция w( x ) в интервала [a, b] , ако:

( p , p ) ≡ ∫ dxw(x ) p (x ) p (x ) = δ
i j
b

a
i j ij , (1)

където δ ij е символът на Кронекер.

Общата процедура за изграждане на система от ортогонални полиноми (процедура на Грам-

Шмидт) се състои в полагане на p0 = 1 и намиране на полиномите от по-висока степен чрез рекурентна-


та връзка

n
pn +1 (x ) = xp n (x ) + ∑ α i pi (x ) , (2)
i =0

при което коефициентите αi (отделен набор за всяко n) се определят от условията

( pn+1 , pi ) = 0, i = 0,..., n . (3)

По-конкретно, тъй като вече (p , p ) = δ


i j ij за i и j ≤ n, то условието за ортогоналност е

( pn+1 , pk ) = (xpn , pk ) + α k ( pk , pk ) = 0, k = 0,..., n . Следователно (3)

αk = −
(xpn , pk ) . (4)
( pk , pk )
Отчитайки отново взаимната ортогоналност на вече построените полиноми и постулираната реку-

рентна връзка, за числителите на коефициентите α k , k = 0,..., n − 2 се получава:

k
(xp n , p k ) = ( pn , xpk ) = ( pn , pk +1 ) − ∑α i ( pn , pi ) = 0 . (5)
i =0

Следователно, рекурентната връзка се опростява до

n
p n +1 (x ) = xp n ( x ) + ∑ α p ( x ) = ( x − β ) p ( x ) − γp
i i n n −1 , (6)
i = n −1

където β = −α n =
(xp n , pn ) и γ = −α n −1 =
(xp n , pn −1 ) . (7)
( p n , pn ) ( pn −1 , p n−1 )
Последният израз се опростява допълнително:

(xp n , pn−1 ) = ( pn , xpn−1 ) = ( pn , pn ) − α n−1 ( pn, pn−1 ) − α n−2 ( pn , pn−2 ) = ( pn , pn ) , (8)

44/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

така че γ =
( pn , p n ) . (9)
( pn−1 , pn−1 )
pi
След ортогонализацията полиномите могат да се нормират: pi ← .
( p i , pi )
Може да се покаже, че ако {xi }i =1,...,n са нулите на p n (x ) , то те са различни и реални, и

xi ∈ [a, b], i = 1,..., n .

Примери:

Полиноми на Лежандър: [a, b] = [− 1,1] и w(x ) = 1 .

Полиноми на Чебишев: [a, b] = [− 1,1] и w(x ) = 1


.
1− x2

Полиноми на Лагер: [a,b] = [0, ∞] и w(x ) = x α exp(− x ), α > −1 .


Полиноми на Ермит: [a,b] = [− ∞, ∞] и w(x ) = exp(− x 2 ).
И така, търсената квадратурна формула е от вида:
n

∑ a f (x ) ≅ ∫ dxw(x ) f (x )
b
i i
a
i =1 , (1)
w( x ) ≥ 0; ∫ dxw(x ) > 0
b

където възлите {xi }i =1,...,n и теглата {a i }i =1,...,n се избират така, че (1) да бъде точна за

полиноми от степен 2n-1.

Смисълът на въвеждането на тегловната функция w( x ) е, че с нейна помощ някоя

действителна подинтегрална функция g ( x ) може да се разложи на произведение от


функция w( x ) , която е достатъчно „сложна” и, в частност, неприводима към полином
от сравнително ниска степен, и „проста” функция f (x ) , която съвпада точно или приб-
лизително с полином от ниска степен: g ( x ) = w(x ) f ( x ) . В този смисъл, квадратурата (1)
може да бъде мощен инструмент за икономично и точно интегриране на широк кръг от
функции.

1. Нека Q0 ≡ 1, Q1 ,..., Qn ,... са ортогонални полиноми относно w( x ) в [a, b] .

За тях е в сила:

45/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

∫ dxw(x )Q (x )Q (x ) = 0, i, j ≤ n, i ≠ j ,
b
i j (2)
a

2. Нека qn −1 (x ) е произволен полином от степен n-1. Тъй като ортогоналните по-


n −1
линоми образуват базис, винаги е възможно представянето qn −1 ( x ) = ∑ ciQi ( x ) . Следо-
i =0

вателно:

∫ dxw(x )Q (x )q (x ) = 0
b
n n −1 (3)
a

Очевидно, горното твърдение е в сила и за всеки полином от степен по-малка от n.

3. Нека {xi }i =1,...,n са нулите на ортогоналния полином Qn (x ) . Може да се покаже,

че за достатъчно широк кръг тегловни функции w( x ) те ще бъдат реални, различни по-


между си, и ще се намират в интервала [a,b].

4. Нека:

а) Възлите в (1) са нулите на Qn (x ) ;

б) Теглата {a i }, i = 1,..., n са избрани така, че квадратурата (1) да бъде интер-

полационна, т.е. точна, за всички полиноми със степен n-1.

∏ (x − x )i

L (x ) =
i≠ j

∏ (x − x )
Например, полиномите на Лагранж j позволяват представянето:
j i
i≠ j

n
f ( x ) = ∑ f (xi )Li ( x ) + R ( f ; x ) . Ако f (x ) е точно полином от степен n-1, то остатъкът R ( f ; x ) = 0
i =1

n n
dxw( x ) f (x ) = ∑ f ( xi )∫ dxw( x )Li (x ) = ∑ ai f (xi ) , където ai ≡ ∫ dxw(x )Li (x ), i = 1,..., n .
b b b
и ∫
a
i =1
a
i =1
a

5. Нека Φ 2 n −1 ( x ) е произволен полином от степен 2n-1. Той винаги може да се


представи във вида:

Φ 2 n −1 ( x ) = Qn (x )qn −1 ( x ) + rn −1 ( x ) , (4)

където частното qn −1 ( x ) и остатъкът rn −1 (x ) са полиноми от степен, не по-висока от


n-1.

Тогава:

46/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

8 6 47 48
3
6447 1 448 644 472 444
n

∫ dxw(x )Φ 2 n−1 (x ) = 0 + ∫ dxw(x )rn −1 (x ) = ∑ ai rn−1 (xi ) =


b b

a a
i =1
(5)
64444447444444
8 4 6447
5 44
8
n n

∑ ai [Qn (xi )( = 0)qn−1 (xi ) + rn −1 (xi )] = ∑ ai Φ 2 n−1 (xi )


i =1 i =1

Вторият израз е поради (3) и (4), третият е еквивалентен на втория поради избора
на тегла, четвъртият е еквивалентен на третия поради избора на възли, а петият е ал-
тернативен запис на четвъртия (поради (4)).

Така беше доказано, че при споменатия по-горе избор на n на брой възли и тегла,
квадратурната формула (1) е точна за полиноми от степен 2n-1. Тук е уместно да се
напомни, че при разгледаните по-горе елементарни алгоритми тази степен не може да
бъде по-висока от n-1.

47/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

7. Обикновени диференциални уравнения


Общият запис на едно обикновено диференциално уравнение от първи ред е:

dy ( x )
= f ( x, y (x ))
dx (1)
y (x0 ) = y0

Едно ОДУ от по-висок ред може да се сведе до система от ОДУ от първи ред по
следния начин:

dy1 (x )
= y 2 (x ) {y1 (x ) ≡ y (x )}
dx
dy 2 (x )
= y3 (x )
dx
d y(x )
= f n (x, y , y ' , y ' ' ,..., y (n −1) ) ⇒
n

n
... (2)
dx
dy n −1 (x )
= yn (x )
dx
dy n (x )
= f n (x, y1 ,..., y n )
dx

dy ( x )
⇒ = f ( x,y )
dx

Общ подход за числено решаване


a) генерира се редица от абсциси x0 , x1 ,..., ; hn ≡ x n +1 − x n

б) y (x n ) се апроксимира с y n на основата на предходните стойности:

y n +1 = ϕ ( y n , y n −1 ,..., y n −k +1 ) . При k =1 методът е едностъпков.

Например, методът на Ойлер е едностъпков от следния вид:

y ( x1 ) ≈ y1 = y 0 + h0 f ( x0 , y 0 ) + O (h02 )
y (x 2 ) ≈ y 2 = y1 + h1 f (x1 , y1 )
(3)
....
y (x n +1 ) ≈ y n +1 = y n + hn f (x n , y n )

(Този метод може да бъде обоснован чрез развиване на зависимата променлива


y (x ) в тейлоров ред около началото на стъпката.)

48/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

Методи, основаващи се на Тейлоровия ред


Стига да могат да бъдат пресметнати производните на зависимата променлива до
достатъчно висок ред, интегрирането на едно ОДУ може да се извърши със съответната
желана точност:

h 2 ' ' h 3 '' ' h p (p)


y n +1 = y n + hy n' + yn + y n + ... + y n (метод от ред p) (6)
2! 3! p!

Отчитайки, че y ' ( x ) = f (x, y (x )) , висшите производни могат да се представят по


следния начин:

∂f
y ' ' (x ) = (x ) y ' (x ) + ∂f (x ) ≡ f y f + f x
∂y ∂x
y ' ' ' (x ) = ( f yy f + f xy ) f + f y ( f y f + f x ) + f yx f + f xx (7)
= f yy f 2 + f y2 f + f y f x + 2 f xy f + f xx

и т.н.

Доколкото диференцирането на дясната част на уравнението f ( x, y ( x )) не предс-


тавлява принципен проблем, изрази от вида (7) могат да се използуват за повишаване
на точността на решението (спрямо напр. метода на Ойлер) чрез прилагане на тейлоро-
во развитие на зависимата променлива y до сравнително по-висок ред.

Методи Рунге-Кута
Схемата на интегриране при тези методи е от вида:
r
y n +1 = y n + ∑ p j k j (h ) , (8)
j =1

където:

k j (h ) ≡ hf (ξ j ,η j ), j = 1,..., r
ξ j = x n + α j h, α 1 = 0 (9)
j −1
η j = y n + ∑ β jl k l (h )
l =1

Доколкото точната стойност на решението е y (x n +1 ) = y n +1 + Rr (h ) , параметрите

α j , β jl , p j се избират така, че остатъкът Rr (h ) да бъде минимален.

49/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

Съставянето на уравнения за параметрите става чрез развиване на y (x ) и k j (h ) в

ред на Тейлор и приравняване на нула на коефициентите пред степените на h в Rr (h ) до


максимално възможна степен.

Примери:

а) При r = 1

y n +1 = y n + p1k1 (h ) , при което y (x n +1 ) = y n +1 + R1 (h ) (10)

Следователно,

h2
R1 (h ) = y n + hy ' n + y ' ' ( xn + θh ) − y n − p1hf (x n , y n )
2!
(11)
h2
= (1 − p1 )hy ' n + y ' ' (x n + θh )
2!

(Приема се, че началното условие е точно, т.е. y n = y ( x n ) . Също така, за краткост

y ' n ≡ y ' (x n ) .)

Очевидният избор е p1 = 1, при което се получава схемата на Ойлер:

y n +1 = y n + hf (x n , y n ) (12)

б) При r = 2

y n +1 = y n + p1k1 (h ) + p 2 k 2 (h )
k1 (h ) ≡ hf ( x n , y n ) , при което y ( xn +1 ) = y n +1 + R2 (h ) (13)
k 2 (h ) ≡ hf (x n + αh, y n + βk1 (h ))

Следователно,

h2 h3
R2 (h ) = y n + hy ' n + y ' ' n + y ' ' ' ( x n + θh ) − y n
2! 3!
− p1hf n − p 2 h{f n + f nxαh + f ny βk1 + O (h 2 )}

( f ny f n + f nx ) − p1hf n − p2 h{f n + f nxαh + f ny βhf n }+ O (h 3 )


h2 (14)
= hf n +
2!
= (1 − p1 − p 2 )hf n +  − p 2α h 2 f nx +  − p 2 β h 2 f n f ny + O (h 3 )
1  1 
2  2 

(Приема се, че началното условие е точно, т.е. y n = y ( x n ) . Също така, за краткост

∂f
y ' n ≡ y ' (x n ) , y ' ' n ≡ y ' ' ( xn ) , f n ≡ f ( x n , y n ) , f nx ≡ (xn , y n ) , f ny ≡ ∂f (xn , y n ) .)
∂x ∂y

50/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

Уравненията за параметрите са:

p1 + p 2 = 1
1
p 2α = (15)
2
1
p2 β =
2

1
Избира се p1 = p 2 = . Тогава: α = β = 1 .
2

Така окончателно се получава следната схема:

y n +1 = y n +
h
( f (xn , y n ) + f (xn+1 , y n + hf (xn , y n ))) (16)
2

в) При r = 4 начинът на намиране на параметрите е аналогичен, но за краткост


няма да бъде разглеждан. Окончателната схема е:

y n +1 = y n +
1
(k1 + 2k 2 + 2k 3 + k 4 )
6
k1 = hf ( xn , y n )

, при което y ( xn +1 ) = y n +1 + O (h 5 )
 h k 
k 2 = hf  x n + , y n + 1  (17)
 2 2
 h k 
k 3 = hf  xn + , y n + 2 
 2 2
k 4 = hf (x n + h, y n + k 3 )

Прякото обобщение на (17) за система от ОДУ е:

y n +1 = y n +
1
(k 1 + 2k 2 + 2k 3 + k 4 )
6
k 1 = hf ( x n , y n )

, при което y (x n +1 ) = y n +1 + O(h 5 )


 h k 
k 2 = hf  x n + , y n + 1  (18)
 2 2 
 h k 
k 3 = hf  x n + , y n + 2 
 2 2 
k 4 = hf ( x n + h , y n + k 3 )

Избор на стъпката и контрол на точността


Нека всеки преход от x до x + 2h се изпълнява два пъти:

а) на една стъпка с резултат y1 , така че y (x + 2h ) = y1 + (2h ) C + O (h 6 )


5

51/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

б) на две стъпки с резултат y 2 , така че y ( x + 2h ) = y 2 + 2h 5C + O (h 6 )

(Приема се, че константата C в първата компонента на грешката е обща за двата


случая, което в действителност не е точно така.)

Величината δ ≡ y 2 − y1 се избира за оценка на грешката на y (x + 2h ) . При прие-

тото предположение за C, δ = const. × h 5 . Тогава, ако при h1 се е получила грешка δ1, то


желаната стъпка за постигане на грешка δ0 ще бъде:
0.2
δ 
h0 = h1  0  (19)
 δ1 

Ако h0 < h1 , преходът от x до x + 2h се повтаря с новата, по-малка стъпка h0. Ако

h0 > h1 , преходът напред продължава с новата, по-голяма стъпка h1.

В случая на система от ОДУ δ е вектор и, като правило, се избира нормата

δ ≡ max y 2,i − y1,i .


i

Възможни са и други варианти за конструиране на критерия за точност. Ако, нап-


ример, се дефинира δ 0 ≡ εy , ще се контролира относителната грешка за текущия пре-

dy
ход. Натрупването на грешката може да се контролира чрез избора δ 0 ≡ εh . Тъй като
dx
0.25
δ 
сега грешката се мащабира с h, коректният израз е h0 = h1  0  .
 δ1 

Твърди системи от обикновени диференциални уравнения


Една система от ОДУ е твърда, ако съществуват два или повече напълно различни
мащаба на независимата променлива, по която се менят зависимите променливи или
техни компоненти.

Например:

du ( x )
= 998u ( x ) + 1998v ( x )
dt
dv ( x )
= −999u ( x ) − 1999v ( x ) (20)
dt
u (0) = 1
v (0 ) = 0

52/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

Решението на (1) е:

u (x ) = 2 exp(− x ) − exp(− 1000 x )


v (x ) = − exp(− x ) + exp(− 1000 x )

За стабилност на който и да е от горните методи за интегриране се изисква стъпка


h << 1 / 1000 , независимо че членът exp(− 1000 x ) е с напълно пренебрежим принос в
стойностите на u и v почти веднага след началото x = 0. Тоест, за поддържане на ста-
билност се налага да се следва изменението на компонентата на решението с най-малък
мащаб.

Нека най-напред разгледаме единичното уравнение:

y ' = −cy
, (21)
c = const. > 0

чието решение е y = exp(− cx )

При схемата на Ойлер:

y n +1 = y n + hy ' n = (1 − ch ) y n (22)

е нужно да се поддържа h < 2 / c , тъй като иначе y n → ∞ , което е очевидна проя-


n→ ∞

ва на нестабилност на решението.

Схемата (22) се нарича явна, защото y n +1 се получава явно от предходната стой-

ност y n .

Най-простият начин за преодоляване на строгото ограничение за размера на стъп-


ката е използуването на т.нар. неявна схема, основаваща се на развитието
y (x ) = y ( x + h ) − hy ' (x + h ) + ... :

yn
y n +1 = y n + hy ' n +1 = (23)
(1 + ch )
Схемата (23) е безусловно стабилна, защото винаги се осигурява вярното поведе-
ние на решението: y n → 0 .
h →∞

53/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

Обобщение за система от обикновени линейни диференциални уравне-


ния
Нека y ' = −Cy , където C е положително определена матрица.

Явната схема на Ойлер дава:

y n +1 = (1 − Ch )y n (24)

Нека A = 1 − Ch . Нека 0 < λ N ≤ ... ≤ λ1 са собствените стойности на C. Тогава

µi = 1 − hλi ще бъдат собствени стойности на A. Началното условие може да се предс-

тави във вида y 0 = ∑α i c i , където ci са собствените вектори на C. Тогава,


i

y n = A n y 0 = ∑ α i µin c i = ∑ α i (1 − hλi ) c i , и вярното поведение на решението, y n → 0 ,


n

i i n→∞

2
ще се осигури само ако µ max ≡ max µi = max 1 − hλi = 1 − hλ1 < 1 , т.е. ако h < .
i i λ1

При неявната схема на Ойлер се получава:

y n +1 = y n + hy ' n +1 = (1 + Ch ) y n
−1
(25)

Нека A = (1 + Ch ) . Ако 0 < λ N ≤ ... ≤ λ1 са собствените стойности на C, то


−1

µi = (1 + hλi )−1 ще бъдат собствени стойности на A. Ясно е, че винаги е в сила неравен-


ството µi < 1 (C е положително определена).

Обобщение за система от ОДУ

 y f 
Нека y ' = f (y ) . (За случая y ' = f ( x, y ) винаги може да се положи   =   .)
 x   1

Неявната схема на Ойлер дава:

y n +1 = y n + hf (y n +1 ) (26)

Десните части могат да се линеаризират:

y n +1 = y n + h[f (y n ) + J (y n )(y n +1 − y n )]
∂f (27)
J (y n ) ≡
∂y yn

Така: y n +1 = y n + h[1 − hJ (y n )] f (y n )
−1
(28)

54/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

Заради явното развитие на десните части такъв метод се нарича полунеявен.

55/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

8. Нелинейни уравнения

Нули на функция на една променлива


Задачата е да се намери стойност на реалния аргумент x, за който

f (x ) = 0 , (1)

където f е реална скаларна функция.

Ясно е, че търсената нула може да не е единствена. Също така е ясно, че ако фун-
кцията е непрекъсната и

f (a ) × f (b ) ≤ 0 , (2)

то в интервала [a, b] тази функция заема нулева стойност нечетен брой пъти. Нека
от тук нататък интервалът [a, b] е такъв, че в него да има точно една нула на f (x ) .

Най-простият, но и най-надежден начин за локализиране на оградената нула е


методът на разполовяването. Съгласно този метод се проверява знакът на произве-
a+b
дението f (a ) × f (c ) , където c = е центърът на интервала [a, b] . Ако този знак е
2
отрицателен, b се подменя с c. В противен случай a се подменя с c. И в двата случая
дължината на новия интервал [a, b] , който огражда нулата, е 1/2 от дължината на ста-
рия. Свиването на интервала чрез разполовяване продължава, докато се изпълни усло-
вието

b−a <δ , (3)

където δ е точността, с която се желае локализирането на нулата.

b−a
Ясно е, че постижимата относителна точност , c ≠ 0 не може да бъде по-
c

добра от машинния епсилон ε m . Това твърдение се отнася и за всеки друг метод за тър-
сене на нула на функция.

Методът на разполовяването не се основава на никакви предположения за пове-


дението на функцията (освен вече направеното предположение за непрекъснатост). Не-
говата сходимост е линейна и равномерна, защото ∆(i ) = C∆(i −1) , където ∆(i ) и ∆(i −1) са

56/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

съответно текущата и предходната грешка на решението (дължина на интервала, ог-


раждащ нулата), а константата C е 1/2.

Алтернативните методи, които се базират на специални предположения за локал-


ното поведение на функцията, могат да бъдат по-бързо сходящи, ако съответното пред-
положение е изпълнено, но могат и да бъдат напълно неуспешни, ако то е силно нару-
шено.

Типичен пример е методът на Нютон-Рафсон, или на допирателните. Съгласно


него, ако текущото приближение на нулата xi е достатъчно близко до нейната истинска
стойност, и ако първата производна на функцията може да бъде пресметната, следва-
щото приближение xi +1 може да се оцени на базата на линеаризираното тейлорово раз-

витие на функцията около xi , т.е. като решение на линейното уравнение относно xi :

f ( xi ) + f ' ( xi ) × (xi +1 − xi ) = 0 , или: (4)

f (xi )
xi +1 = xi − (5)
f ' (xi )

Итерациите се прекратяват, когато x (i +1) − x (i ) < δ , където δ е точността, с която се

желае локализирането на нулата.

Сходимостта на метода може да се обоснове по следния начин. Ако точната


стойност на търсената нула е x, то:

f (xi )
ε i +1 = ε i − , (6)
f ' (xi )

където ε i ≡ xi − x и ε i +1 ≡ xi +1 − x са грешките на последователните приближения.

От друга страна,

ε i2 ε i2
f ( xi ) = f (x ) + f ' ( x )ε i + f ' ' ( x ) + ... = 0 + f ' (x )ε i + f ' ' (x ) + ...
2 2 (7)
f ' (xi ) = f ' ( x ) + f ' ' ( x )ε i + ...

Замествайки (7) в (6), се получава:

f ' ' (x ) f ' ' (x )


ε i +1 = ε i2 ≈ ε i2 (8)
2( f ' ( x ) + ε i f ' ' ( x )) 2 f ' (x )

Следователно, сходимостта на метода на Нютон-Рафсон е квадратична.

57/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

За съжаление, ако основната предпоставка за близост на текущото приближение


до истинската стойност на нулата е силно нарушена, този метод изобщо може да не
доведе до търсеното решение.

Фиг. 1 Пример за успешно прилагане на метода на Нютон-Рафсон. Илюстрацията е от


NUMERICAL RECIPES IN FORTRAN 77: THE ART OF SCIENTIFIC COMPUTING (ISBN 0-521-43064-X)
Copyright (C) 1986-1992 by Cambridge University Press.

Фиг. 2 Неблагоприятна ситуация, при която методът на Нютон-Рафсон се натъква на


локален екстремум и търсенето на нула се проваля. Илюстрацията е от NUMERICAL RECIPES
IN FORTRAN 77: THE ART OF SCIENTIFIC COMPUTING (ISBN 0-521-43064-X) Copyright (C) 1986-1992
by Cambridge University Press.

58/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

Фиг. 3 Неблагоприятна ситуация, при която методът на Нютон-Рафсон влиза в безкраен


цикъл и търсенето на нула се проваля. Илюстрацията е от NUMERICAL RECIPES IN FORTRAN
77: THE ART OF SCIENTIFIC COMPUTING (ISBN 0-521-43064-X) Copyright (C) 1986-1992 by Cambridge
University Press.

За случаи, когато пресмятането на първата производна е невъзможно или нежела-


телно, може да се прилага методът на секущите. Този метод изисква две приближе-
ния на позицията на нулата, напр. xi −1 и xi . Новото приближение xi +1 се търси като мя-

стото, в което права, минаваща през точките (xi −1 , f ( xi −1 )) и (xi , f (xi )) , пресича абсци-
сата, т.е. като решение на линейното уравнение:

f ( xi ) − f ( xi −1 )
f ( xi ) + × ( xi +1 − xi ) = 0 (9)
xi − xi −1

Както се вижда, (9) е диференчен аналог на (4). Може да се покаже, че скоростта


на сходимост на метода на секущите е:

lim ε i +1 ≈ const × ε i
1.618
(10)
i→∞

Критерият за прекратяване на итерациите и ограниченията на приложимостта на


метода на секущите са аналогични на тези на метода на Нютон-Рафсон.

59/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

Фиг. 4 Метод на секущите. Линейната интерполация или екстраполация е през двете


последно получени точки, независимо от това дали те ограждат нулата. Номерацията
указва реда на получаване на точките. Илюстрацията е от NUMERICAL RECIPES IN FORTRAN
77: THE ART OF SCIENTIFIC COMPUTING (ISBN 0-521-43064-X) Copyright (C) 1986-1992 by Cambridge
University Press.

Модификация на метода на секущите, при която нулата е винаги оградена, е ме-


тодът regula falsi. При него също се започва с две абсциси, a и b, такива, че
f (a ) × f (b ) ≤ 0 . Новото приближение на нулата, c, се търси по същия начин като при
метода на секущите, т.е. от уравнението:

f (b ) − f (a )
f (b ) + × (c − b ) = 0 (11)
b−a

Интервалът [a, b] за следващата итерация се избира по следния начин. Ако


f (a ) × f (c ) ≤ 0 , то b се подменя с c. В противен случай а се подменя с c. Критерий за
прекратяване на итерациите не е дължината на интервала [a, b] , а дължината на интер-
вала, в който функцията не променя знака си, т.е. [b, c ] в първия случай и [a, c ] – във
втория. Поради ограждането на нулата, методът regula falsi е надежден, за разлика от
метода на Нютон-Рафсон или на секущите. Сходимостта е в най-добрия случай същата,
като при метода на секущите, но за разлика напр. от метода на разполовяването, не е
равномерна, и се обуславя от изпълнението на основното предположение за локална
линейност на функцията.

60/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

Фиг. 5 Regula falsi. Линейната интерполация е в последно получения интервал, който


огражда нулата. В показания случай точка „1” остава неподвижна в продължение на
много стъпки. От цикъла се излиза, когато интервалът, в който функцията не сменя
знака си, стане достатъчно малък. В показания случай това е интервалът, ограден от
точки „3” и „4”. Номерацията указва реда на получаване на точките. Илюстрацията е от
NUMERICAL RECIPES IN FORTRAN 77: THE ART OF SCIENTIFIC COMPUTING (ISBN 0-521-43064-X)
Copyright (C) 1986-1992 by Cambridge University Press.

Фиг. 6 Пример, при който методът на секущите или regula falsi ще се нуждаят от огро-
мен брой стъпки за достигане на нулата. В този случай прост и надежден метод като
разполовяването обикновено има предимство. Номерацията указва реда на получаване
на точките. Илюстрацията е от NUMERICAL RECIPES IN FORTRAN 77: THE ART OF SCIENTIFIC
COMPUTING (ISBN 0-521-43064-X) Copyright (C) 1986-1992 by Cambridge University Press.

По-нататъшно развитие на разгледаните последни три метода е квадратичната


интерполация през три точки. Ако са налице точките (a, f (a )) , (b, f (b )) и (c, f (c )) , и

61/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

напр. a < b < c и f (a ) × f (c ) ≤ 0 , то през тях може да се построи интерполационен по-

лином от втора степен, y (x ) = P2 (x ) = αx 2 + β x + γ . Новото приближение на нулата, d,


може да се намери като корен на уравнението:

y (d ) = αd 2 + β d + γ = 0 (12)

Проблем при този подход е, че уравнението (12) има два корена и е нужна допъл-
нителна логика за избор на подходящия измежду тях.

Методът на Брент преодолява това затруднение чрез т.нар. обратна квадрати-


чна интерполация. При него полиномът от втора степен x ( y ) = P2 ( y ) = αy 2 + β y + γ се
строи през точките ( f (a ), a ) , ( f (b ), b ) и ( f (c ), c ) и новото приближение на нулата, d, се
намира като стойност на полинома при y = 0 , т.е:

d = x (0) = P2 (0) = γ (13)

Ако d е извън ограждащия нулата интервал [a, c ] , новото приближение се отхвър-


ля и търсенето продължава по метода на разполовяването. Ако новото приближение
бъде прието, то итерациите се прекратяват, ако d − b < δ , където δ е точността, с която

се желае локализирането на нулата. Ако критерият за прекратяване на итерациите не е


изпълнен, новата тройка (a, b, c ) се избира в зависимост от позицията на d и от знаците
на функционалните стойности по начин, който тук няма да бъде разглеждан.

Системи от нелинейни уравнения


Задачата се формулира като търсене на вектор x ≡ ( x1 ,..., x n ) , който да удовлетво-
рява уравненията:

Fi ( x1 ,.., x n ) = 0, i = 1,..., n (14)

В общия случай този вектор не е единствен. Също така, задачата за ограждане на


нулите в многомерния случай е практически неизпълнима. Поради това, най-често при-
лаганият метод за търсене на решение на система от нелинейни уравнения, е обобще-
ние на разгледания метод на Нютон-Рафсон за функция на една променлива. Той се
основава на тейлоровото развитие на функциите (14) около текущото приближение на
решението x (като допълнително се приема, че това приближение е достатъчно близо
до истинското решение x*):

62/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

∂Fi
δx j + O (δx 2 )
n
Fi (x + δx ) = Fi (x ) + ∑ (15)
i =1 ∂x j

Или, в матрично-векторен запис:

F(x + δx ) = F(x ) + Jδx + O (δx 2 ) , (16)

∂Fi
където J е матрицата на Якоби с елементи J ij ≡ .
∂x j

Пренебрегвайки остатъчния член и полагайки F(x + δx ) = 0 , се получава следната


линейна система за вектора δx :

Jδx = −F(x ) (17)

Така, итеративният процес ще бъде:

x i +1 = x i + δx , (18)

където x i и x i +1 са съответно старото и новото приближение на търсеното реше-


ние.

Итерациите се прекратяват, когато δx < δ , където δ е точността, с която се желае


n
локализирането на нулата. Удобна норма е напр. δx ≡ ∑ δxi .
i =1

Както и в едномерния случай, надеждността на метода не е гарантирана, ако те-


кущото приближение е далече от търсеното решение.

63/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

9. Минимизация

Едномерна минимизация
Задачата се състои в намиране на позицията на локален минимум на реалната ска-
ларна непрекъсната функция на реален скаларен аргумент f (x ) . (Ясно е, че всеки ме-
тод, предназначен за търсене на такъв минимум, може да се използува и за търсене на
максимум, след замяната: f ( x ) ← − f (x ) .)

Нека локалният минимум се търси в интервала [a, c] и нека a < b < c . Тогава, ако

f (b ) < f (a ) и f (b ) < f (c ) , (1)

то в [a, c] функцията f (x ) има минимум. Това е работният критерий за наличие


на минимум на функция на една променлива в даден интервал.

Фиг. 1 Екстремуми на функция в даден интервал. Точки A, C и E са локални максимуми.


Точки B и F са локални минимуми. Глобалният максимум е в т. G, която е на границата
на интервала, така че първата производна на функцията там не е задължително нулева.
Глобалният минимум е в т. D. В т. E са нулеви и производни от по-висок ред от първи,
което може да затрудни някои алгоритми. Точките X, Y и Z „ограждат” минимума в F,
тъй като функцията в Y е по-малка, отколкото в X и Z. Илюстрацията е от NUMERICAL
RECIPES IN FORTRAN 77: THE ART OF SCIENTIFIC COMPUTING (ISBN 0-521-43064-X) Copyright (C)
1986-1992 by Cambridge University Press.

Постижима точност
Нека b е позицията на минимума. Тогава, за близка точка x:

f ( x ) = f (b ) + f ' ' (b )( x − b ) + ...


1 2
(2)
2

64/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

Така, функционалните стойности f (x ) и f (b ) ще бъдат различими и проверката


(1) за наличие на минимум ще може да се приложи, ако вторият член отдясно в (2) не е
пренебрежимо малък спрямо първия, т.е.:

f ' ' (b )( x − b ) > ε m f (b ) .


1 2
(3)
2

x −b 2 f (b )
Или: > εm ≈ εm . (4)
b b 2 f ' ' (b )

Следователно, постижимата относителна точност на локализиране на минимума е


пропорционална на корен от машинния епсилон (3.45×10-4 при стандартното четириба-
йтово представяне на реалните числа).

Метод на златното сечение


По-нататъшното свиване на ограждащия минимума интервал [a, c], за който е в
сила (1), може да се направи чрез проверка на функционалната стойност в допълнител-
на вътрешна точка x в този интервал.

b−a x−b
Нека a < b < x < c и w ≡ ;z≡ (5)
c−a c−a

Така, ако f (x ) < f (b ) , то минимумът е в [b, c ] и чрез заместванията a ← b и


b ← x той се избира за нов интервал [a, c], удовлетворяващ изискването (1). Съгласно

(5), неговата дължина ще бъде 1 − w . В обратния случай минимумът е в интервала [a, x ]


с дължина z + w . Чрез заместването c ← x той се избира за нов интервал [a, c], удовле-
творяващ изискването (1).

Ясно е, че оптимален избор на позицията на допълнителната точка x е този, при


който и в двата случая дължината на новия интервал [a, c] ще бъде една и съща:

1 − w = z + w ⇒ z = 1 − 2w (6)

Този израз за z е равностоен на изискването точката x да се разположи симетрич-


но на b относно центъра на интервала [a, c].

От заместванията при първия случай ( f (x ) < f (b ) ) следва, че за равномерна схо-


димост, т.е. неизменно отношение на дължината на новия интервал [a, c] към тази на

65/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

стария интервал [a, c], е нужно x да се разполага в [b, c ] по същия начин, по който b се
разполага в [a, c], т.е:

z
=w (7)
1− w

След елиминиране на z от (6), за относителната дължина w се получава следното


уравнение:

w 2 − 3w + 1 = 0 (8)

3± 5
Решенията на (8) са w1, 2 = . Стойността w1 е невъзможна, защото по постро-
2
ение w < 1 . Така, за позицията на b в [a, c] остава единствената възможност:

3− 5
w= ≈ 0.38197 (9)
2

Получената пропорция е известна като златно сечение, а съответният алгоритъм


за итеративно локализиране на минимума на функция на една променлива е както след-
ва:

0. Избор на начален ограждащ интервал [a, c]. Разполагане на вътрешните точки b


b−a x−b
и x така, че = 0.38197... и = 0.38197... .
c−a c−b

1. Сравняване на f (b ) и f (x ) .

Ако f (b ) < f (x ) , то: c ← x, x←b и разполагане на b така, че


b−a
= 0.38197...
c−a

В обратния случай: a ←b, b← x и разполагане на x така, че


x −b
= 0.38197...
c−b

c−a c−a
2. Сравняване на с критерия за прекъсване δ. Ако < δ , то итерациите
c+a c+a

се прекъсват. В обратния случай се отива на т. 1.

66/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

Многомерна минимизация
Най-често задачата за търсене на локален минимум на функцията на n променли-
ви f (x ) се решава чрез последователност от едномерни минимизации по подходящо
избрани направления. Тези направления трябва да бъдат такива, че изчислителните уси-
лия за техния избор, както и броят на нужните едномерни минимизации, да бъдат ми-
нимални.

Примери са неефективен избор на направления са следните алгоритми.

А. 0. Стартиране от начална точка p0.; 1. Последователно едномерно минимизира-


не по направленията на координатните оси Ox1, Ox2, ..., Oxn, водещо до преместване
по начупената линия p 0 → p1 → ... → p n . Повтаряне на стъпка “1” до момента, в който
текущата едномерна минимизация не води до значимо намаляване на функционалната
стойност или до значимо преместване от текущо достигнатата позиция.

Фиг. 2. Последователни минимизации по координатните направления в дълга и тясна


„долина”. Освен ако долината не е оптимално ориентирана, този метод ще бъде крайно
неефективен, тъй като ще изисква твърде много стъпки, съпроводени с постоянно пре-
сичане на главната ос на долината. Илюстрацията е от NUMERICAL RECIPES IN FORTRAN 77:
THE ART OF SCIENTIFIC COMPUTING (ISBN 0-521-43064-X) Copyright (C) 1986-1992 by Cambridge
University Press.

Б. 0. Стартиране от начална точка p0.; 1. Последователно едномерно минимизира-


не по направления срещу локалния градиент в текущата отправна точка, т.е. по
− ∇f (p i ) , водещо до преместване по начупената линия p 0 → p1 → ... → p n . Повтаряне

67/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

на стъпка “1” до момента, в който текущата едномерна минимизация не води до значи-


мо намаляване на функционалната стойност или до значимо преместване от текущо
достигнатата позиция. Този метод е известен като „метод на най-бързото спускане”.

Фиг. 3. (а) Метод на най-бързото спускане в дълга и тясна „долина”. Броят на стъпките,
нужни за достигане до дъното, може да се окаже твърде голям. (b) Увеличен изглед на
една стъпка. Посоката е срещу локалния градиент, т.е. перпендикулярно на изолинията
в отправната точка. Праволинейното преместване приключва в точка, където направле-
нието на минимизация е успоредно на локалната изолиния. Илюстрацията е от NUMERICAL
RECIPES IN FORTRAN 77: THE ART OF SCIENTIFIC COMPUTING (ISBN 0-521-43064-X) Copyright (C)
1986-1992 by Cambridge University Press.

Метод на спрегнатите направления


Този метод е известен още като „метод на спрегнатите градиенти”. Неговото обо-
сноваване е следното.

Нека началото на координатната система е избрано в отправната точка xi за теку-


щата едномерна минимизация. Тогава в нейната близка околност подлежащата на ми-
нимизиране функция може да се представи в следния вид:

∂f
(x i )δxk + 1 ∑ ∂ f (x i )δxk δx j + ...
2
f (x i + δx ) = f (x i ) + ∑
k ∂x k 2 k , j ∂x k ∂x j
(1)
1
≈ c − b.δx + δxAδx
2

Диференцирането на израза (1) води до следната приблизителна оценка на гради-


ента на функцията:

∇f (x i + δx ) = Aδx − b (2)

68/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

Нека направлението на разглежданата едномерна минимизация е vi, а достигната-


та позиция на минимума по това направление е xi+1. В тази крайна позиция е в сила съ-
отношението v i .∇f (x i +1 ) = 0 . Тогава, съгласно (2), изменението на градиента при теку-

щото преместване δx ≡ x i +1 − x i = λv i ще бъде

δ (∇f ) = ∇f (x i +1 ) − ∇f (x i ) = Aλv i − b − (− b ) = λAv i (3)

Ако предходните минимизации са били по направления v k , k = 1,..., i − 1 и отправ-

ната точка xi е минимум по всички тях, т.е. v k .∇f (x i ) = 0 , то текущата минимизация ще


доведе до точка, която е минимум по текущото и по всички предходни направления, ако
градиентът в тази точка е перпендикулярен освен на текущото, и на всички предходни
направления, т.е:

v k .∇f (x i +1 ) = v k .(∇f (x i ) + δ (∇f )) = 0 + v k .δ (∇f ) = λv k Av i = 0, k = 1,..., i − 1 ,

или v k Av i = 0, k = 1,..., i − 1 (4)

Вектори като vk и vi, които удовлетворяват съотношението (4), се наричат “А-


ортогонални”, или „взаимно спрегнати относно A”.

Така, ако A и b са постоянни и взаимно А-ортогоналните направления на после-


дователните едномерни минимизации {v i }, i = 1,..., n са линейно независими помежду си,
то позицията на минимума xn+1 може да се намери след точно n такива едномерни ми-
нимизации.

Доколкото, съгласно (2), ∇f (x n +1 ) = Ax n +1 − b , то тази търсена позиция ще отгова-

ря на условието Ax n +1 − b = 0 , т.е. ще бъде решение на линейната система Ax = b . (Тук


и на разни места по-долу началото на координатната система е избрано в първата отп-
равна точка x1.)

С отчитане на обстоятелството, че съгласно (1) матрицата A е симетрична, разви-


ваната по-долу процедура може да се разглежда и като итеративен метод за решаване
на линейни нехомогенни системи със симетрични матрици.

Построяване на редица от A-ортогонални вектори.

Редицата {vj} се строи по следната A-ортогонализационна процедура, аналогична


на процедурата на Грам-Шмидт.

69/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

a) Нека има някаква система от линейно независими вектори g1, g2,…. (5)

б) Нека v1 = g1. (6)


i
в) Нека v i +1 = g i +1 + ∑ β k v k , i = 1,... (7)
k =1

Коефициентите βk се определят от изискванията за A-ортогоналност между v i +1 и

всички предходни вектори:

i
v k Av i +1 = 0 = v k Ag i +1 + ∑ β l v k Av l = v k Ag i +1 + β k v k Av k
l =1
г) (8)
v Ag
⇒ β k = − k i +1 , k = 1,..., i
v k Av k

(Матрицата A е симетрична, така че v j Av i = 0, j ≠ i .)

Процедурата а) – г) генерира линейно независими вектори {vi}, тъй като в крайна


сметка от (7) следва, че :
i
v i +1 = g i +1 + ∑ γ k g k , (9)
k =1

a {gj} са линейно независими (от (5)).

Оказва се, че при подходящ избор на базовите вектори {gi} е възможно броят на
коефициентите βk в (7) да се сведе до един (последния в сумата), с което се минимизи-
рат изчислителните разходи по прилагането на (8).

По-долу ще получим условието, при което β k = 0, k < i

От логиката за последователните едномерни минимизации следва, че:


i −1
x i = x1 + ∑ α j v j , или x i +1 = x i + α i v i , (10)
j =1

където α i имат смисъл на премествания по направленията на минимизация.

Нека базовите вектори {gi} бъдат избрани по следния начин:

g i = Ax i − b = A (x i − x n +1 ) (11)

(По построение, при постоянни A и b минимумът ще се достигне в xn+1, т.е.


Ax n +1 = b )

70/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

Следователно (от (10) и (11)):


i −1
g i = g1 + ∑α j Av j , или g i +1 = g i + αi Av i (12)
j =1

Тогава:

v j g j = v j A (x j − b ) = v j A (x j − x n +1 ) = − ∑α l v j Av l = −α j v j Av j
n

l= j
(13)
v jg j
⇒αj = −
v j Av j

От (12) следва, че:

g k +1 − g k
Av k = (14)
αk

Тогава, ако базовите вектори са ортогонални, т.е. g k g j = 0, k ≠ j , и тъй като А е

симетрична, ще се получи:

g i +1Av k =
g i +1
(g k +1 − g k ) = 0 = v k Ag i+1 , k < i (15)
αk

Последният израз е числителят на β k в (8). Следователно, процедурата за А-


ортогонализация (7) ще придобие търсения опростен вид:

v i +1 = g i +1 + β i v i (16)

Остава да се докаже ортогоналността на базовите вектори, избрани съгласно (11).

Доказателство на ортогоналността на {g i }

Това става чрез доказване на помощните твърдения а) и б) по-долу.

a) g j Av i = 0, j < i (17)

Доказателство (следва от (7)):


j −1 j −1
v j = g j + ∑βk vk → g j = v j − ∑ βk vk
k =1 k =1
j −1
⇒ g j Av i = v j Av i − ∑ β k v k Av i = 0 − 0, j < i
k =1

б) g i Av i = v i Av i (18)

71/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

Доказателство (следва от (7)):


i −1 i −1
vi = gi + ∑ βk v k → gi = vi − ∑ βk v k
k =1 k =1
i −1
⇒ g i Av i = v i Av i − ∑ β k v k Av i = v i Av i − 0
k =1

в) {gi} са взаимно ортогонални

Доказателството ще се проведе по метода на индукцията.

От (12), (13), (18) следва, че:

v 1g 1
g 2 = g 1 + α1 Av 1 = g 1 − Av 1
v 1Av 1
v 1g 1 gg
⇒ g 1g 2 = g 1g 1 − g 1Av 1 = g 1g 1 − 1 1 v 1 Av 1 = 0
v 1Av 1 v 1Av 1
(v1 = g 1 )
………..

Нека g k g i = 0, k < i (индукционно предположение)

Тогава, от (12), (17) следва, че:

g k g i +1 = g k g i + α i g k Av i = 0 + 0

От (12), (18), (13), (9) следва, че:

g i g i +1 = g i g i + α i g i Av i = g i g i + α i v i Av i = g i g i − v i g i
i −1
= g i g i − g i g i − ∑γ k g i g k = 0
k =1

Така, опростената процедура (16) за А-ортогонализация е обоснована. Остава изи-


скването, че за пресмятане на коефициентите αi съгласно (13) и βi съгласно (8) е нужно
да се знае матрицата A. Това, естествено, не е проблем, ако развиваният метод ще се
използува за решаване на линейни системи. В случая на минимизация, обаче, матрица-
та A съдържа вторите производни на многомерната функция и е силно желателно ней-
ното пресмятане да се избегне. За тази цел, в метода на спрегнатите направления се
правят следните практически подобрения (приложими както за многомерна минимиза-
ция, така и за решаване на линейни системи):

72/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

Практически подобрения

gigi
αi = − (следва от (9) и ортогоналността на базовите вектори) (19)
v i Av i

g i +1g i +1
βi = (20)
gigi

Доказателството следва от ортогоналността на базовите вектори, симетричността


на A, (12), (13), (20) и (8):

g i +1g i +1 = g i +1g i + α i g i +1 Av i = 0 − (g i g i ) = − (g i g i ) i i +1 = (g i g i )β i
g i +1 Av i v Ag
v i Av i v i Av i

Решаващо за приложимостта на развивания метод при многомерна минимизация е


елиминирането на явната зависимост от А в израза (19), основаващо се на следните
съображения.

Процедура за многомерна минимизация

Нека градиентът в отправната точка за текущата стъпка е g i = ∇f (x i ) .

Нека е проведено търсене на минимум по направлението vi и този минимум е на-


мерен в x i +1 = x i + λv i , където градиентът е g i +1 = ∇f (x i +1 ) .

Съгласно допускането (2), g i = Ax i − b и

g i +1 = A (x i + λv i ) − b = g i + λAv i (21)

Тъй като xi+1 е минимум по направлението vi, то:

v i ∇f (x i +1 ) = v i g i +1 = 0 (22)

Замествайки в (21) и отчитайки определението (13), се получава:

vigi
v i g i +1 = v i g i + λv i Av i = 0 ⇒ λ = − = αi
v i Av i

Тоест, изминатият път по текущото направление на минимизация е точно равен на


множителя αi, осигуряващ връзката между базовите вектори, нужна за обосноваване на
развиваната икономична процедура за А-ортогонализация.

И така, прилагането на метода на спрегнатите градиенти се свежда до едномерни


минимизации по направления, образувани съгласно (16) с използуване на израза (20) за

73/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

пресмятане на множителя β . Базови вектори gi са градиентите на функцията в точките


на смяна на направлението за минимизация. Тъй като предположението (2) е само при-
ближение, т.е. матрицата A и векторът b не са постоянни, броят на едномерните мини-
мизации може да бъде по-голям от n. На практика процедурата се прекъсва, когато
преместването по текущо избраното направление стане пренебрежимо малко.

74/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

10. Генериране на случайни числа с избрано разпределе-


ние
Тук най-напред е уместно да се напомнят някои свойства на случайните величини
и на техните вероятностни разпределения.

P (a ≤ x ≤ b ) е вероятността x да заеме стойност между a и b.


Нека x е случайна величина, а
Плътността на вероятностното разпределение f ( x ) на тази случайна величина е такава функ-
ция, че:
f ( x0 )∆x = P( x0 ≤ x ≤ x0 + ∆x ) при ∆x → 0 . (1)
Следователно:
x+
f (x ) ≥ 0 и ∫ f (x )dx = 1 , където x- и x+ са границите на потенциално заеманите от x стойнос-
x−
ти, които в частност могат да бъдат -∞ и +∞, а
P (a ≤ x ≤ b ) = ∫ f (x )dx
b
(2)
a

Кумулативното вероятностно разпределение F ( x ) е такава функция, че:


F ( x0 ) = P ( x ≤ x0 ) (3)
Следователно:
F ( x ) = ∫ f (x ' )dx ' ; F ( x )  →1 ; F ( x ) 
x
x →x +
→ 0 ;
x →x −
x−
dF (x )
P (a ≤ x ' ≤ b ) = F (b ) − F (a ) ; = f (x ) (4)
dx
Равномерно разпределение
Равномерното разпределение U (a, b ) има следната вероятностна плътност:
 dx
 :a ≤ x ≤b
f ( x )dx =  b − a (5)
 0 : x < a, x > b

x ∈U (0,1) , то очакването на такава случайна величина е µ = ∫ xf ( x )dx =
1
Ако , а дисперси-
−∞ 2

ята е σ2 =∫
−∞
( x − µ ) f (x )dx =
2 1
. (6)
12
Нормално разпределение
Нормалното (гаусово) разпределение N (µ ,σ ) има следната вероятностна плътност:
 1 x−µ 2

f ( x )dx =
dx
exp −  
 2  σ 
(7)
σ 2π 
 
x−µ
Ако случайната величина x има разпределение N (µ ,σ ) , то случайната величина ξ ≡ ще
σ
има разпределение N (0,1) . И обратно, ако случайната величина x има разпределение N (0,1) , то случа-
йната величина ξ ≡ µ + σx ще има разпределение N (µ ,σ ) .

75/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

Централна гранична теорема


Ако x1 , x 2 ,... са взаимно независими случайни величини с еднакво вероятностно разпределение,
n
което е с очакване µ и дисперсия σ2, то при n → ∞ случайната величина s n ≡ ∑ xi ще има разпреде-
i =1

ление (
N nµ , nσ . )
В частност, ако {xi }, i = 1,... имат разпределение U (0,1) , то случайната величина
12
ξ ≡ ∑ xi − 6 ще има разпределение, приближаващо се до N (0,1) .
i =1

Метод на преобразуването за генериране на извадка от избрано


разпределение
Нека случайната величина y = ϕ(x ) с плътност на вероятностното разпределение
g ( y ) е еднозначна функция на случайната величина x с плътност на вероятностното
разпределение f (x ) . Тогава е в сила връзката:

g ( y ) dy = f (x ) dx , (8)

където dx е произволно малко нарастване, а dy = ϕ(x + dx ) − ϕ(x ) . Или,

dx
g ( y ) = f (x ) = f (x ) ϕ (y) .
d −1
(9)
dy dy

В частност, ако y = F ( x ) , където F е кумулативното разпределение (3), съответс-

твуващо на f (x ) , то от (4), (9) и факта, че F е растяща функция на x, следва, че

g ( y ) = g (F ) = f ( x )
dx dF dx dF dx
= = = 1 . Тъй като, освен това, 0 ≤ F ≤ 1 , то случай-
dy dx dF dx dF

ната величина y = F ( x ) ще бъде с равномерно разпределение между 0 и 1.

Така, ако ξ е с равномерно разпределение между 0 и 1, то

x = F −1 (ξ ) (10)

ще бъде с избраното разпределение f (x ) .

Нека, например, f (x ) = e − x , 0 < x < ∞ . Следователно F (x ) = 1 − e − x , така че прила-


гането на (10) води до пресмятане на случайната величина x с избраното разпределение
f (x ) съгласно израза x = − ln(1 − ξ ) , където ζ ∈U (0,1) . Тъй като, от друга страна,
ζ ≡ 1 − ξ ∈U (0,1) , то окончателно:

76/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

x = − ln ζ , където ζ ∈U (0,1) . (11)

Генериране на извадка от нормалното разпределение (метод на Бокс-


Мюлер)
Нека случайните величини x1 , x 2 ,..., x n имат съвместна вероятностна плътност

f ( x1 ,..., x n ) .

Нека също така са в сила следните еднозначни изображения:

y1 (x1 ,..., x n ) = ϕ1 (x1 ,..., x n )


... . (12)
y n (x1 ,..., x n ) = ϕ n ( x1 ,..., x n )

Тогава, аналогично на (8):

∂ (x1 ,..., x n )
p ( y1 ,..., y n )dy1 ...dy n = f (x1 ,..., x n ) dy1 ...dy n , (13)
∂ ( y1 ,..., y n )

∂ (x1 ,..., xn )
където е модулът на детерминантата на матрицата на Якоби, т.е.
∂ ( y1 ,..., y n )

 ∂x1 ∂x1 
 ... 
 ∂y1 ∂y n 
det  ... ... ...  .
 ∂x n ∂x n 
 ∂y ...
 1 ∂y n 

y1 = − 2 ln x1 cos 2πx 2
Нека, в частност: . (14)
y 2 = − 2 ln x1 sin 2πx 2

x1 = exp − ( y12 + y 22 )
 1 
 2 
Тогава: (15)
1 y
x2 = arctg 2
2π y1

∂ ( x1 , x 2 )  1 − y12 2   1 − y22 2 
Детерминантата на Якобиана ще бъде: = − e   2π e .
∂ ( y1 , y 2 )  2π  

77/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

Следователно, ако независимите случайни величини x1 и x2 са всяка с разпределе-


ние U(0,1), то техните изображения съгласно (14), y1 и y2, ще бъдат независими случай-
ни величини, всяка с разпределение N (0,1) .

Метод на отхвърлянето за генериране на извадка от избрано раз-


пределение
Нека желаната вероятностна плътност е p( x ) , а f (x ) е подходящо избрана обви-

ваща функция (виж Фиг.1), такава, че f (x ) ≥ p (x ) и ∫ f (x )dx има крайна стойност.
−∞

Тъй като вероятността x да заеме стойност в даден интервал е равна на площта


под графиката на p( x ) в този интервал, то ако е възможно генерирането на равномерно
разпределени точки под графиката на f (x ) , абсцисата x0 на една такава точка би била

случайна величина с разпределение p( x ) , стига съответната й ордината y0 да бъде по-


малка или равна на p ( x0 ) .

Най-проста реализация на тази идея ще бъде изборът f ( x ) = A , където A е макси-


малната стойност на p( x ) . Това е възможно само ако дефиниционната област на p( x ) е
b
крайна, напр. a ≤ x ≤ b , така че ∫ f (x )dx
a
да има крайна стойност. Тогава алгоритъмът за

образуване на извадка от p( x ) ще бъде както следва:

1. Генериране на ξ ∈U (a, b ) и η ∈U (0, A) .

2. Сравняване на η с p(ξ ) . Ако η ≤ p (ξ ) , за случайна величина x с разпределение

p( x ) се приема абсцисата ξ. В противен случай се отива на стъпка 1.

Описаният подход, даже ако е възможен, не е икономичен, защото f (x ) и p( x )


могат да се различават много и относителният дял на отхвърлените точки да бъде мно-
го голям.

Генерирането на равномерно разпределени точки под графиката на f (x ) в общия


случай става на основата на метода на преобразуването по следния начин.

78/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

Нека дефиниционният интервал на f (x ) и p( x ) е [x − , x + ] (този интервал може да


бъде и безкраен) и нека аналогът на кумулативното разпределение за f (x ) e
x x+

F (x ) ≡ ∫ f (x')dx' . Нека A ≡ F (x+ ) = ∫ f (x')dx' .


x− x−

Тогава, аналогично на разсъжденията по повод на (10), ако ξ е с равномерно раз-


пределение между 0 и A, то x 0 = F −1 (ξ ) ще бъде с разпределение f (x ) . Така, ако x0 се
интерпретира като абсциса на точка в координатната система от графиката на Фиг.1, а
ординатата y0 на въпросната точка се избере от равномерно разпределение между 0 и
f ( x0 ) то броят такива точки в даден интервал от абсцисната ос ще бъде пропорциона-

лен на площта под графиката на f (x ) в този интервал и, следователно, тези точки ще


имат желаното равномерно разпределение под графиката на f (x ) .

В този случай алгоритъмът за образуване на извадка от p( x ) ще бъде както след-


ва:

1. Генериране на ξ ∈U (0, A) . Пресмятане на x 0 = F −1 (ξ ) . Генериране на

y 0 ∈U (0, f (x 0 )) .

2. Сравняване на y0 с p ( x0 ) . Ако y 0 ≤ p (x 0 ) , за случайна величина x с разпределе-

ние p( x ) се приема абсцисата x0. В противен случай се отива на стъпка 1.

Ясно е, че относителният дял на „успешните” попадения ще бъде равен на отно-


шението на площта под p( x ) към площта под f (x ) . В този смисъл, за ефективност на
алгоритъма е желателно f (x ) плътно да обвива p( x ) и да има лесна за пресмятане об-
ратна на своята примитивна функция. Така методът на отхвърлянето може да се раз-
глежда като заместител на метода на преобразуването за случаите, когато намирането
на обратната на примитивната функция на избраното разпределение p( x ) е трудно или
изисква големи изчислителни разходи.

79/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

Фиг. 1. Метод на отхвърлянето. Илюстрацията е от NUMERICAL RECIPES IN FORTRAN 77: THE


ART OF SCIENTIFIC COMPUTING (ISBN 0-521-43064-X) Copyright (C) 1986-1992 by Cambridge University
Press.

80/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

11. Моделиране на данни

Поставяне на задачата
Нека y i , i = 1,..., n (1)

е набор от експериментални данни, или наблюдения. Нека тези наблюдения са не-


зависими случайни величини, всяка с очакване µi и дисперсия σ i2 .

y (x i ; a1 ,..., am ) ,
Нека µi = ~ (2)

където функцията y (x; a ) има смисъл на „теоретичен модел”. Наборът


~

a ≡ a1 ,..., a m съдържа параметрите, от които може да зависи моделът ~


y , а наборът от

независими променливи x ≡ x1 ,..., xL описва количествено условията на експеримента.

Равенството (2) е твърдение, че очакванията на индивидуалните наблюдения съв-


падат със стойностите, предсказани от теоретичния модел. Основен предмет на моде-
лирането на данни е именно проверката на това твърдение.

По силата на централната гранична теорема (виж Глава 10), и ако твърдението (2)
е вярно, разпределението на наблюдението yi ще бъде гаусово:

 1  y − µ 2 
N (µi , σ i ) ≡
1
exp −  i i
 .
σ i 2π  2  σ i  
 

Тогава, отчитайки независимостта на наблюденията (1), вероятността съвкупност-


та от тези наблюдения да е реализация на избрания модел (2) ще бъде:

 1 y −~ ( ) 
2
n

P ( y1 ,..., yn )dy1...dyn = ∏
dyi y x ; a
exp −  i i
  (3)
i =1 σ i 2π
 2 σi  

Ясно е, че при вече фиксираните наблюдения и дисперсии, тази вероятност ще


бъде функция единствено на параметрите a:

P ( y1 ,..., y n )dy1 ...dy n = cF (a1 ,..., a m ) , (4)

където c е константа.

Следователно, ако задачата включва намиране на стойности на параметрите на


модела, това може да стане чрез търсена на максимум на функцията (4).

81/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

Целесъобразно е вместо максимум на F да се търси минимум на

y (x i ; a ) 
2
 yi − ~
n
S (a ) = −2 ln (F / c ) = ∑ 
2
 (5)
i =1  σi 

Както се вижда, S2 е сума от квадратите на n независими случайни величини


y −~y (x i ; a )
zi ≡ i , всяка с разпределение N (0,1) . Такава случайна величина има кумула-
σi
S2 2

(S ) = ∫
e −t t n 2−1dt
тивно вероятностно разпределение χ 2
n
2 0

, (6)
∫ e −t t n 2−1dt
0

очакване n и дисперсия 2n. По силата на централната гранична теорема, при


n → ∞ плътността на вероятностното разпределение на S2 клони към N n, 2n . (На ( )
практика изискването за достатъчно голямо n се изпълнява напр. при n > 30.)

Нека, в частност, a 0 е наборът от параметри, при който S2 има глобален минимум

със стойност S 02 . Ако този набор е намерен чрез минимизация на S 2 (a ) , то между мо-

дела и наблюденията, а следователно и между величините zi , i = 1,..., n са въведени m


връзки и тези величини вече не са взаимно независими.

Ако, обаче, моделът е линеен относно параметрите, т.е. напр.


m
y (x i ; a1 ,..., am ) = ∑ ak X k (x i ) ,
~ (7)
k =1

където базовите функции X k (x ) са произволни фиксирани функции на независи-

мите променливи x, то може да се покаже, че S 02 ще има кумулативно вероятностно

разпределение χν2 , където ν ≡ n − m е броят на степените на свобода.

При нелинеен модел горното твърдение не е в сила, но на практика се използува,


още повече че обикновено n >> m и ν ≈ n .

И така, задачата за моделиране на данни може да се формулира както следва:

а) Намиране на набора a0 от параметри на модела (2), при който вероятността на-


блюденията (1) да са реализация на този модел е максимална. При нормално разпреде-
ление на наблюденията около модела търсенето на a0 се свежда до минимизиране на

82/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

S 2 (a ) . Естествено, при предварително избрани стойности на параметрите на модела,


този етап се пропуска.

y (x; a0 ) .
б) Проверка на хипотезата, че наблюденията са реализация на модела ~

При нормално разпределение на наблюденията, вероятността величината S 02 ≡ S 2 (a 0 )


(параметрите a0 са получени чрез минимизация или са предварително избрани) да бъде
случайно надхвърлена ще бъде α ≡ P (S 2 > S 02 ) = 1 − χν2 (S 02 ) . Ако тази вероятност е много
малка (напр. под 5%), хипотезата се отхвърля. В противен случай хипотезата не се отх-
върля. Решение за приемане на хипотезата не може да се обоснове, защото винаги е
възможно да съществуват модели, чието съгласие с разглежданите наблюдения е по-
добро от това на проверявания модел.

Линейни модели
При линеен модел (7) функцията S 2 (a ) има единствен екстремум и той е мини-
мум. Следователно, неговата позиция може да се намери чрез решаване на уравнения-
та:

∂S 2
= 0, k = 1,..., m (8)
∂a k

Явният вид на (8) е:


m

n
yi − ∑ a j X j (x i )
∑ j =1
X k (x i ) = 0 (9)
i =1 σ i2

Или:

m
 n X k (x i )X j (x i ) n
yi X k (x i )
∑ ∑
j =1  i =1 σi 2  j ∑
a =
σ i2
(10)
 i =1

В матричен запис:

Aa = b , (11)

където:

83/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

n X i (x k )X j (x k )
Aij ≡ ∑
k =1 σ k2
(12)
n
yk X i (x k )
bi ≡ ∑
k =1 σ k2

Така задачата за минимизация на S 2 (a ) се свежда до формиране на елементите на


A и b съгласно (12) и решаване на линейната система (11).

Доколкото наблюденията y i , i = 1,..., n са случайни величини, от определението

(12) на вектора b следва, че намерените параметри на модела a k , k = 1,..., m също ще

бъдат случайни. Явният вид на зависимостта a k ( y1 ,..., y n ) е следната:

m m
 n yi X j (x i )
α k = ∑ Ckj b j = ∑ Ckj ∑ , (13)
j =1 j =1  i =1 σ i2 

където Ckj са елементите на ковариационната матрица C ≡ A −1 .

n m Ckj X j (x i )
Или, a k = ∑ γ i(k ) y i , където γ i(k ) = ∑ (14)
i =1 j =1 σ i2

са независещи от наблюденията коефициенти.

Тогава, съгласно закона за разпространение на грешките, дисперсията на ak ще


бъде свързана с дисперсиите σ i2 на взаимно независимите наблюдения yi по следния
начин:
2
 ∂a
n
 n
σ (a k ) = ∑σ  k  = ∑σ i2γ i(k )
2 2 2
(15)
 ∂yi
i
i =1  i =1

Или:

84/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

 m C X (x ) 
2
n
σ (ak ) = ∑ σ  ∑ kj 2j i 
2 2

σi
i
i =1  j =1 
n  m C X (x )  m C X (x ) 
= ∑ σ i2  ∑ kj 2j i  ∑ kl l2 i 
i =1  j =1 σi  l =1 σi 
m m
 n X (x )X (x ) 
= ∑∑ CkjCkl  ∑ l i 2 j i  (16)
j =1 l =1  i =1 σi 
m m m m
= ∑ Ckj ∑ Ckl Alj = ∑ Ckj ∑ Ckl Clj−1
j =1 l =1 j =1 l =1
m
= ∑ Ckjδ kj = Ckk
j =1

Следователно, дисперсиите на параметрите на модела са равни на съответните


диагонални елементи на ковариационната матрица.

Нелинейни модели
Ако векторът a(0) е достатъчно близо до позицията на търсения минимум на S2, та-
ка че тейлоровият ред на S 2 (a ) да може да бъде прекъснат до квадратичния член:

S 2 (a ) ≅ S 2 (a (0 ) ) + ∑
∂S 2 (0 )
( [ ]
1 m m ∂ 2 S 2 (0 )
a ) a i − a i(0 ) + ∑∑ ( [ ][
a ) a i − a i(0 ) a j − a (j0 ) ]
m

i =1 ∂a i 2 i =1 j =1 ∂ai ∂a j
(17)
1
= c − bδa + δaHδa
2

Приемайки израза (17) за точен, градиентът на S2 ще има вида:

∇S 2 (a ) = − b + Hδa (18)

Така, след решаване на линейната система Hδa = b , позицията на минимума на S2


ще бъде:

[
a 0 = a ( 0) + H −1 − ∇S 2 (a ( 0 ) ] (19)

На практика, заради приближението (17), изразът (19) се прилага итеративно:

a ( j ) = a ( j −1) + (H −1 )
( j −1) ( j −1)
b , j = 1,2,... , (20)

където j е поредният номер на итерацията.

Явният вид на компонентите на вектора b и на хесиана H в контекста на процеду-


рата (2) е:

85/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

1 ∂S 2 n
y −~ y (x i ; a ) ∂~
y (x i ; a )
bk ≡ − =∑ i
2 ∂ak i =1 σi2
∂ak
(21)
1 ∂2S 2 n
1  ∂~ y (x i ; a ) ∂~
y (x i ; a ) y (x i ; a )
∂2 ~
H kl ≡ =∑ 2  − [ yi − ~
y (xi ; a )] 
2 ∂ak ∂al i =1 σ i  ∂ak ∂al ∂ak ∂al 

(Разликата спрямо определенията (17) е единствено в множителя 1/2.)

Членът с вторите производни в елементите на хесиана H обикновено се пренеб-


регва по следните причини:

− При линеен модел този член е точно нулев, а при модел, близък до линейния –
пренебрежимо малък спрямо члена с първите производни;

− По силата на проверяваната хипотеза би трябвало случайните величини


y ( xi ; a )
y −~
zi ≡ i , i = 1,..., n да имат гаусово разпределение с нулево очакване и
σi
единична дисперсия и да не са корелирани с модела. Следователно,

[ yi − y (xi ; a)] y (xi ; a) → 0 .


∂2 ~
n
1

i =1 σ i
2
~
∂a k ∂a l

− Итеративната процедура (20) за минимизиране на S2 допуска големи неточности


при оценяване на матрицата H. Така например, минимизацията на S2 ще бъде
успешна и при процедура от вида

a ( j ) = a ( j −1) + cb ( j −1) , j = 1,2,... , (22)

където c е достатъчно малка положителна константа. (Вижда се, че (22) е равно-


стойно на прилагане на метода на най-бързото спускане (виж Глава 9) за мини-
мизиране на S 2 (a ) ).

Следователно, за практически цели е достатъчно хесианът да се оценява съгласно


израза:
n
1 ∂~y (xi ; a ) ∂~
y (xi ; a )
H kl = ∑ (23)
i =1 σ i ∂a k ∂a l
2

Може да се покаже, че и при нелинейния модел за дисперсиите на параметрите


a k , k = 1,..., m е справедлива оценката σ 2 (a k ) = H −1 [ ] kk .

86/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

Метод на Levenberg-Marquardt

Този метод за минимизиране на S 2 (a ) се основава на съчетаване на метода на об-


ратния хесиан (20) и метода на най-бързото спускане (22). Последният се прилага дале-
че от минимума, а с доближаване до минимума плавно се преминава към обръщане на
хесиана. Мотивацията за такава стратегия е следната. Методът на обратния хесиан мо-
же да бъде много ефективен, ако отправната точка a ( j −1) е близо до позицията на мини-
мума и е в сила приближението (18), но ако тази предпоставка не е изпълнена, прилага-
нето му може да доведе до нарастване на S 2 (a ) и отдалечаване от търсеното решение.
От друга страна, методът на най-бързото спускане, макар и не толкова ефективен, ще
гарантира намаляване на S 2 (a ) и далече от минимума, стига стъпката c да бъде доста-
тъчно малка, така че да не влиза в противоречие с локалността на информацията, съ-
държаща се в градиента ∇S 2 (a ( j −1) ).

Основните две идеи на метода на Маркварт са следните.

Първата се отнася за начина на извличане на информация за големината или поне


мащаба на стъпката при метода на най-бързото спускане (22). Такава информация не се
съдържа в градиента, който указва само посоката към най-бързото нарастване на S 2 (a ) ,
но не и нужното преместване в тази посока. Идеята на Маркварт е (22) да се замени с
изразите

∂S 2
δa k = ck bk = −ck , k = 1,..., m , (24)
∂a k

а приблизителният мащаб на търсеното преместване по всеки от параметрите на


модела да се получи от стойностите на елементите на хесиана (23).

Тъй като величината S 2 (a ) е безразмерна, компонентите на вектора b ще имат


1
размерността на , т.е. напр. cm-1, kWh, и т.н., при което всяка от тези размерности
ak

може да бъде различна. Следователно, търсеният коефициент на пропорционалност ck

между bk и δa k трябва да има размерността на a k2 . От друга страна, сред елементите на

1
H има точно един с тази размерност, а именно , и той може да се използува за оп-
H kk

ределяне на мащаба на ck в (24). Във всички случаи, обаче, такава оценка ще бъде дос-

87/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

та груба и е възможно да доведе до прекалено голямо преместване. По тази причина се


въвежда настройващ безразмерен неотрицателен множител λ, който винаги може да
бъде избран много голям, така че стъпката срещу градиента да бъде безопасно малка:

1
δa k = bk (25)
λH kk

Допълнително удобство на конструкцията (25) е, че поради гарантираната поло-


жителност на H kk (виж (23)), стъпката ще бъде винаги в правилната посока.

Втората идея се отнася до начина на съчетаване на (25) с (20). При метода на


~
Маркварт това се прави чрез въвеждане на нова матрица H със следните елементи:

H jj ≡ H jj (1 + λ )
~
(26)
H jk ≡ H jk ( j ≠ k )
~

~
и решаване на задачата Hδa = b . (27)

Така, при малки стойности на λ задачата (27) се свежда до (20), т.е. до метода на
обратния хесиан, а при големи стойности на λ – до (25), т.е. до модификация на метода
на най-бързото спускане.

Стратегията за минимизация на S 2 (a ) с използуване на (27) е следната.

• Пресмятане на S 2 (a ) с начален оценен набор от параметри на модела.

• Избиране на малка начална стойност на λ, напр. λ = 0.001 .

• (*) Решаване на линейната система (27) за δa и пресмятане на S 2 (a + δa ) .

• Ако S 2 (a + δa ) ≥ S 2 (a ) , увеличаване на λ 10 пъти (или с друг достатъчно го-


лям множител) и връщане на стъпка (*).

• Ако S 2 (a + δa ) < S 2 (a ) , намаляване на λ 10 пъти, обновяване на пробния на-


бор от параметри a ← a + δa и връщане на стъпка (*).

Итерациите се прекратяват, когато намаляването на S 2 (a ) спадне под напр. 0.01,


или в относителна мярка под напр. 10-3. Итерациите не се прекратяват при нарастване
на S 2 (a ) , защото това е само признак, че оптималната стойност на λ още не е достигна-
та.

88/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

След прекратяване на итерациите се полага λ = 0 и, както в линейния случай, се


пресмята C ≡ H −1 за оценяване на неопределеностите на параметрите.

89/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

12. Собствени стойности и собствени вектори на матрица


Скаларът λ и ненулевият вектор x са собствена стойност и собствен вектор на
квадратната матрица A, ако:

Ax = λx (1)

Ясно е, че всеки собствен вектор е определен с точност до константен скаларен


множител. Също така, от (1) се вижда, че за да съществуват ненулеви собствени векто-
ри, трябва да бъде в сила равенството:

det (A − λ 1) = 0 (2)

Ако размерността на A е n, то лявата страна на (2) е полином от степен n за λ и


собствените стойности на A са неговите нули. Тези собствени стойности не винаги са
различни помежду си и не винаги са реални. От (1) и (2) също следва, че между собс-
твените стойности и собствените вектори има еднозначно съответствие –
(λi , x i ), i = 1,..., n , без това да означава, че собствените вектори са винаги различни по-
между си. Добавянето напр. на τx към двете страни на (1) води до отместване на собс-
твените стойности с адитивна константа τ, при което собствените вектори не се проме-
нят. В този смисъл нулевата собствена стойност не е особен признак, тъй като чрез та-
кова отместване която и да е собствена стойност може да бъде направена нулева, или
обратно – ненулева.

По-нататък е уместно да се напомнят някои определения и твърдения.

1. Една матрица е симетрична, ако е равна на своята транспонирана:

A = A T , или a ij = a ji (3)

2. Матрицата е ермитова, ако е равна на комплексно спрегнатата на своята транспонирана (двойка


такива матрици се наричат взаимно ермитово спрегнати):

A = A + , или a ij = a ji * (4)

3. Матрицата е ортогонална, ако нейната транспонирана е равна на нейната обратна,

A T A = AA T = 1 , (5)

и унитарна, ако нейната ермитово спрегната е равна на нейната обратна. От (5) се вижда, че стъл-
бовете на ортогоналната матрица, разглеждани като вектори, са взаимно ортонормирани.

4. Матрицата е нормална, ако комутира със своята ермитово спрегната:

90/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

AA + = A + A (6)

Ясно е, че симетричните/ермитови и ортогоналните/унитарни матрици са нормални.

5. Всички собствени стойности на една симетрична/ермитова матрица са реални.

6. Собствените вектори на нормална матрица с различни собствени стойности са взаимно ортого-


нални и образуват базис в n-мерното векторно пространство.

7. Матрица, чиито стълбове са ортонормиран набор от собствени вектори е, очевидно, унитарна.


Също така, матрица, чиито стълбове са собствените вектори на реална симетрична матрица, е ортого-
нална, тъй като собствените вектори на въпросната реална и симетрична матрица са всичките реални.

8. Скаларът λ и векторът x, удовлетворяващи уравнението

x T A = λx T (7)

се наричат съответно лява собствена стойност и ляв собствен вектор.

Транспонирането на (7) води до:

A T x = λx (7а)

Десните собствени стойности са корени на уравнението det (A T − λ 1) = 0 . Тъй като детерминан-


тата на една матрица съвпада с детерминантата на нейната транспонирана, то левите и десните собствени
стойности на всяка матрица са идентични.

Нека XR е матрица, чиито стълбове са десните собствени вектори на A, a XL – ма-


трица, чиито редове са левите собствени вектори на A. Тогава, (1) и (7) могат да се за-
пишат съответно във вида:

AX R = X R diag(λ1 ,..., λn )
(8)
X L A = diag(λ1 ,..., λn )X L

Ако първото уравнение се умножи отляво по XL, второто – отдясно по XR, и двете
се извадят почленно едно от друго, се получава:

(X L X R )diag(λ1 ,..., λn ) = diag(λ1 ,..., λn )(X L X R ) . (9)

Тъй като единствените матрици, които комутират с диагонална матрица с различ-


ни елементи, са също диагонални, то, ако собствените стойности на A са различни по-
между си, левите и десните собствени вектори на A ще бъдат взаимно ортогонални. Те
винаги могат да бъдат нормирани (собствените вектори са определени с точност до
множител) така, че да се получи:

X L X R = 1 , т.е. X L = X −R1 . (10)

91/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

Така, умножаването на първото от уравненията (8) отляво по XL и използуването


на твърдението (10) води до израза:

X −R1 AX R = diag(λ1 ,..., λn ) . (11)

Този израз е частен случай на подобно преобразование на матрицата A:

A → Z −1AZ , (12)

където матрицата на преобразованието Z може да бъде произволна.

Подобните преобразования запазват собствените стойности. И наистина,

det (Z −1AZ − λ 1) = det (Z −1 (A − λ 1)Z ) = det (Z )det (A − λ 1)det (Z −1 ) = det (A − λ 1) . (13)

Тъй като последният израз съвпада с лявата страна на (2), собствените стойности
на Z −1AZ съвпадат с тези на A.

Отчитайки (11) – (13) се вижда, че всяка матрица A с пълен набор от собствени


вектори (т.е. всяка нормална матрица, както и повечето случайни матрици) може да
бъде диагонализирана чрез подобни преобразования, при което стълбовете на прило-
жената за целта матрица на преобразованието ще бъдат десни собствени вектори
на A, а редовете на обратната на тази матрица – леви собствени вектори на A. (Естест-
вено, елементите на получената диагонална матрица ще бъдат съответните собствени
стойности на A.)

Собствените вектори на реална симетрична матрица са реални и ортонормирани.


(Тъй като A T = A , от AX R = X R diag(λ1 ,..., λn ) следва, че X TR A = diag(λ1 ,..., λn )X TR и (сра-

вни с второто уравнение в (8)) X L = X TR . Тогава, съгласно (10), X TR X R = 1 и матрицата

X R е ортогонална.) В този случай диагонализиращата матрица на подобното преоб-


разование (11) ще бъде ортогонална. Подобно преобразование от този вид се нарича
ортогонално:

A → Z T AZ , (14)

където Z е ортогонална матрица.

На основата на горните разглеждания може да се формулира следната обща стра-


тегия за търсене на собствени стойности и собствени вектори: привеждане (или приб-
лижаване) на матрицата A до диагонален вид чрез последователност от подобни
преобразования:

92/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

A → P1−1AP1 → P2−1P1−1AP1P2 → P3−1P2−1P1−1 A P1P2 P3 → ... → diag(λ1 ,..., λn ) (15)


1424 3 123
Z −1 Z

Когато този диагонален (или практически диагонален) вид бъде достигнат, стъл-
бовете на ефективната матрица на преобразованието

X R = P1P2 P3 ... (16)

ще бъдат собствени вектори на матрицата A.

Характеристично уравнение за собствените стойности


Възможен подход за намиране на собствените стойности на A е търсенето на ко-
рените на полиномното уравнение за λ, det (A − λ 1) = Pn (λ ) = 0 , обикновено наричано

характеристично уравнение. Тъй като редът на матрицата често е голям, е желателно


характеристичният полином да се представи във вид, удобен за пресмятане и използу-
n
ване в алгоритми за търсене на нулите на полином – напр. Pn (λ ) = ∑ a i λi .
i =0

Намирането на полиномните коефициенти ai , i = 0,..., n може да стане по т.нар.


метод на Крилов, основаващ се на следните разглеждания. Нека даден достатъчно
произволен вектор y може да се представи като линейна комбинация на собствените
n
вектори x i , i = 1,..., n на матрицата A: y = ∑α i x i с ненулеви множители α i , i = 1,..., n .
i =1

Тогава, ако за ненулевия полином Qn е в сила равенството Qn (A ) = 0 , то и


n
Qn (A )y = ∑ α i Qn (λi )x i = 0 , където λi са собствените стойности на A. От последното
i =1

равенство следва, че Qn (λi ) = 0, i = 1,..., n . От друга страна, λi са нули на характеристич-

ния полином Pn, който е също от степен n, а два полинома от еднаква степен и със съв-
падащи нули могат да са различават само по общ мащабиращ множител. Така, в конте-
кста на решаваната задача полиномът Qn ще съвпада с характеристичния полином на
матрицата A.

Съгласно метода на Крилов, характеристичното уравнение се записва във вида


n −1
Pn (λ ) = λn + ∑ bi λi = 0 . Тогава, при достатъчно произволно избран, но фиксиран нену-
i =0

лев вектор y равенството

93/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

 n n −1 i 
n −1


A + ∑
i =0
b i A 

y = A n
y + ∑
i =0
bi A i y = 0 (17)

може да се разглежда като система от n линейни уравнения за n-те неизвестни


b0 ,..., bn −1

Cb = d , (17a)

където:

d k = (A n y )k , cki = (A i y )k , k = 1,...,n; i = 0,..,n-1.

Коефициентите cki = (A i y )k пред неизвестните, както и свободният член

d k = (A n y )k , могат да се получат чрез рекурентно построяване на редицата

v (0 ) ≡ y , v (1) = Av (0 ) ,..., v (n ) = Av (n −1) . (18)

Намиране на отбрани собствени стойности и собствени вектори

Степенна итерация
Нека собствените вектори на A образуват базис. Тогава, всеки вектор v 0 може да

се представи като v 0 = ∑α i x i , където x i , i = 1,..., n са собствените вектори на A. Така,


i

ако λi е собствената стойност, отговаряща на x i , то

v 1 ≡ Av 0 = ∑α i λi x i ; ...; v m ≡ A m v 0 = ∑α i λim x i . (19)


i i

Нека λ1 > λ2 ≥ ... ≥ λn . Тогава, ако α1 ≠ 0 , то

 n
 λi  
m

v m = λ α1x1 + ∑ α i   x i m
m
→ α1λ1m x1 (19a)
  λ1  
1 →∞
i =2

v m +1, j y.v m +1
От (19а) следва, че lim = λ1 , или λ1 = lim , (20)
m→∞ v m, j m → ∞ y.v
m

където y е произволен неортогонален на x1 вектор. На практика е удобно y да се


избере с компонента 1 в позицията, отговаряща на максималната по модул компонента
на v m и 0 навсякъде другаде. Така се минимизират аритметичните операции, както и
грешката при деленето.

94/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

Ускоряване на сходимостта
От (19а) следва, че скоростта на сходимост на степенния метод ще зависи от от-
λ2
ношението , известно като доминантно отношение. Ако то е твърде близо до 1,
λ1
може да се приложи някой от следните методи за ускоряване.

1) Нека, в съгласие с втория израз в (20):

m +1
 n
 λi  
n

α λ 1 + ∑ β i  
m +1
α1λ1m +1 + ∑ αi λim +1 1 1
 i = 2  λ1   m +1
   λ2 
Rm = i =2
= m→ λ1 + γ   . (21)
 λ1 
→∞
n
  λ 
m

α λ + ∑α λ
m m n
1 1 i i α1λ1m 1 + ∑ β i  i  
i =2  i = 2  λ1  
 

λ2
Следователно, при достатъчно голямо m, Rm +1 − λ1 = r × (Rm − λ1 ) , където r = .
λ1
Тогава може да се приложи δ2-процесът на Айткен:

λ1 − Rm +2 λ1 − Rm +1
= ⇒
λ1 − Rm +1 λ1 − Rm

λ1 =
Rm Rm + 2 − Rm2 +1
= Rm + 2 −
(Rm + 2 − Rm +1 ) = R − (∆ m + 2 )
2 2
(22)
m+2
Rm + 2 − 2 Rm +1 + Rm Rm + 2 − 2 Rm +1 + Rm ∆ m + 2 − ∆ m +1

2) Ако всички собствени стойности са реални, то чрез заместване в степенната


итерация на A с A − τ 1 , която има собствени стойности µi = λi − τ , при подходящ из-

µ2
бор на τ може да се намали отношението и така да се ускори сходимостта.
µ1

Например, ако собствените стойности са положителни и λn е най-малката измеж-

µ 2 λ2
ду тях, то при τ = λn ще се ускори сходимостта, защото < . В действителност,
µ1 λ1
λ2 + λn
оптималната стойност на τ е . Ако има както положителни, така и отрицателни
2
собствени стойности, τ може да се избере така, че второто и третото по големина из-
между числата µi да бъдат приблизително равни по модул и противоположни по знак.

3) Ако A е симетрична, нейните собствени вектори са ортогонални и

95/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

n n
v m Av m = v m v m+1 = ∑α i2 λi2 m +1 , а v m v m = ∑α i2 λi2 m , (23)
i =1 i =1

така че

v m v m +1   λ  2m 
= λ1 + O   2   . (24)
vmvm   λ1  
 

Обратна степенна итерация (метод на Виланд (Wielandt))


Нека е налице добра оценка τ за някоя собствена стойност, напр. λ j , т.е.

λ j − τ << λk − τ , k ≠ j . Тогава, започвайки с произволен ненулев вектор v 0 , може да се

организира итерацията

(A − τ 1)v i = v i −1 , i = 1,2,... (25)

Ако τ ≠ λi , i = 1,..., n , то (A − τ 1) съществува и итеративният процес има вида


−1

v i = (A − τ 1) v i −1 , i = 1,2,...
−1
(26)

на степенна итерация с матрица (A − τ 1) , имаща собствени стойности


−1

1
µk ≡ , k = 1,..., n , (27)
λk − τ

при което µ j >> µ k , k ≠ j . Ясно е, че така сходимостта към µ j ще е бърза.

Нека собствените вектори на A са x i , i = 1,..., n и образуват базис. Лесно може да

се провери, че те са и собствени вектори на A − τ 1 , както и на (A − τ 1) . Тогава,


−1

n n
αi
v 0 = ∑α i x i и v m = (A − τ 1) v 0 = ∑
−m
x i , т.е.
i =1 (λi − τ )
m
i =1

 λ j −τ
m

(λ −τ )
m
v m = α j x j + ∑α i   x i → α j x j (28)
 λi − τ
j m→∞
i≠ j 

Практическата процедура е следната. Нека на даден етап оценките на x j и λ j са

v m и τ m и се решава уравнението (A − τ m 1)v m +1 = v m , където v m е нормиран така, че

96/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

v m .v m = 1 . Тъй като v m +1 е подобрена оценка на x j , може да се приеме, че v m +1 ≅ x j ,

т.е. (A − τ m 1)v m +1 = v m ≅ (λ j − τ m )v m +1 . Тогава,

v m .v m = 1 ≅ (λ j − τ m )v m +1 .v m и λ j ≅ τ m +
1
. (29)
v m +1 .v m

В действителност, получената оценка на λ j се приема за ново приближение τ m +1 .

v m+1
Преди следващата итерация v m +1 се нормира: v m +1 ← .
v m+1

Преобразования на Якоби за симетрична матрица


Илюстрация на описания по-горе общ подход (15) е следната последователност от
ортогонални преобразования, водеща до асимптотично диагонализиране на реална си-
метрична матрица.

Ортогоналните матрици на преобразование се избират от вида:

1 
 ... 
 
 c ... s 
 
Ppq =  M 1 M , (30)
 − s ... c 
 
 ... 
 1

където числата c и s са косинус и синус на някакъв ъгъл ϕ, така че c 2 + s 2 = 1 ;


всички диагонални елементи, с изключение на c в редовете (и стълбовете) p и q, са 1;
всички извъндиагонални елементи, с изключение на ppq и pqp, означени с s и -s, са 0.

Така, всяко от ортогоналните преобразования ще бъде:

A (k ) = Ppq
(k )
A (k −1)Ppq
(k )
T
. (31)

Индексът k бележи поредния номер на преобразованието, k = 1,2,... , а A (0 ) е пър-


воначалната матрица A.

От (30) и (31) се вижда, че преобразованието ще засяга само матричните елементи


в редовете и стълбовете с номера p и q (по принцип различни при всяко прилагане на
(31)). Изразите за променените елементи са както следва:

97/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

a~ip ( pi ) = ca ip ( pi ) − sa iq (qi ) ; a~iq (qi ) = ca iq (qi ) + saip ( pi ) i ≠ p, i ≠ q


a~pp = c 2 a pp + s 2 a qq − 2 sca pq (qp ) ; a~qq = s 2 a pp + c 2 a qq + 2 sca pq (qp ) (32)
a~pq ( qp ) = (c 2 − s 2 )a + sc (a − a )
pq ( qp ) pp qq

Идеята на метода на Якоби е да се нулират извъндиагоналните елементи чрез по-


редица от преобразования от типа (31)/(32). В частност, както следва от последния из-
раз в (32), за нулиране на a~pq (qp ) е нужно ъгълът ϕ да бъде решение на уравнението:

c 2 − s 2 a qq − a pp
ctg(2ϕ ) ≡ = (33)
2 sc 2a pq

За съжаление, следващи преобразования, които засягат някои от вече променени-


те редове или стълбове, в общия случай ще направят предходно нулираните извъндиа-
гонални елементи отново ненулеви. Независимо от това, сходимостта на метода на
Якоби е факт и се обосновава чрез следните разглеждания.

Нека текущите суми от квадратите на диагоналните и на извъндиагоналните еле-


менти са съответно

S d(k −1) = ∑ a ii2 и S n(k −1) = ∑ a ij2 (34)


i i≠ j

Тогава, от изразите (32) и условието a~pq (qp ) = 0 може да се покаже, че:

S n(k ) = S n(k −1) − 2a 2pq и S d(k ) = S d(k −1) + 2a 2pq (35)

И наистина,

S n(k ) = S n(k −1) + ∑ [(ca ]


− saiq (qi ) ) + (ca iq (qi ) + sa ip ( pi ) ) + a~ 2 pq + a~ 2 qp
2 2
ip ( pi )
i ≠ p ,q

= S n(k −1) + ∑ [(c


i ≠ p ,q
2
]
+ s 2 )a 2 ip ( pi ) + (c 2 + s 2 )a 2 iq (qi ) + 0 , (36)

= S n(k −1) − 2a 2pq

където Sn(k −1) е сумата на квадратите на извъндиагоналните елементи, изключваща


извъндиагоналните елементи на редовете/стълбовете p и q. Второто твърдение в (35)
също може да се провери пряко, но то следва и от факта, че ортогоналните преобразо-
вания не променят сумата от квадратите на матричните елементи.

В разглеждания частен случай на матрицата (30) горното твърдение може да се докаже непосредс-

твено. Нека x е произволен ненулев вектор. За елементите на вектора y = Ppq x може пряко да се прове-

98/99
Записки на лекционния курс по „Програмиране и изчислителна физика”.
И. Христосков, юни 2012 г.

ри, че yi = xi , i ≠ p, q , y p = cx p + sx q , y q = − sx p + cx q . Аналогично на (36) може да се покаже, че


n n

∑ yi2 = ∑ xi2 . Напълно аналогично, същият резултат се получава и за y = PpqT x . Тогава, нека
i =1 i =1

B = Ppq
T
A . От горното следва, че сумата от квадратите на матричните елементи на B ще бъде равна на

C = BPpq , т.е. C = (Ppq BT ) . По същия


T T
сумата от квадратите на матричните елементи на A. Нека сега

начин следва, че сумата от квадратите на матричните елементи на C ще бъде равна на сумата от квадра-

тите на матричните елементи на B. Сравнението с (31) показва, че C се отнася към A както A (k ) към
A (k −1) в (31).

Следователно, в хода на ортогоналните преобразования извъндиагоналната норма


намалява монотонно. Тъй като нейната стойност е ограничена отдолу с нула, и тъй като
изборът на p и q, а оттам и на apq, е напълно свободен, редицата от извъндиагонални
норми може да бъде построена така, че да се схожда към нула.

В действителност, след даден номер на итерацията A (k ) ще се окаже диагонална в


рамките на точността на машинното представяне. Нейните елементи ще бъдат собстве-
(1) (2 ) (k )
ните стойности на A, а стълбовете на матрицата V = Ppq Ppq ...Ppq ще съдържат собстве-

ните вектори на A. Изграждането на тази матрица става в хода на преобразованията:


(i )
V ← VPpq , започвайки с V = 1 . Или, по-конкретно:

~
v ip = cv ip − sv iq ; ~
v iq = sv ip + cv iq , i = 1,..., n . (37)

_________________________________________________________________

99/99

You might also like