МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТ...
76 downloads
185 Views
950KB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ, МЕХАНИКИ И ОПТИКИ
С.А. Чивилихин
ВЫЧИСЛИТЕЛЬНЫЕ МЕТОДЫ В ТЕХНОЛОГИЯХ ПРОГРАММИРОВАНИЯ ЭЛЕМЕНТЫ ТЕОРИИ И ПРАКТИКУМ
Санкт-Петербург 2008
С.А.Чивилихин. Вычислительные методы в технологиях программирования. Элементы теории и практикум, – СПб: СПбГУИТМО, 2008. –108с. В пособии рассматриваются методы численного решения нелинейных уравнений, а также систем линейных и нелинейных уравнений, методы интерполяции и аппроксимации функций, методы интегрирования. Учебное пособие предназначено для студентов СПбГУ ИТМО специальностей NN 2006006802, 010500. Рекомендовано к печати Ученым Советом факультета фотоники и оптоинформатики, протокол N6 от 24 июня 2008 г.
В 2007 году СПбГУ ИТМО стал победителем конкурса инновационных образовательных программ вузов России на 2007–2008 годы. Реализация инновационной образовательной программы «Инновационная система подготовки специалистов нового поколения в области информационных и оптических технологий» позволит выйти на качественно новый уровень подготовки выпускников и удовлетворить возрастающий спрос на специалистов в информационной, оптической и других высокотехнологичных отраслях экономики.
©Санкт-Петербургский государственный университет информационных технологий, механики и оптики, 2008 ©Чивилихин С.А., 2008
2
ОГЛАВЛЕНИЕ Предисловие…………………………………………………………………… 5 Глава 1. Решение уравнений с одной переменной……………………….... ..6 1.1. Метод половинного деления…………………………………………….. 6 1.2. Метод итераций…………………………………………………………....7 1.3. Метод касательных (метод Ньютона)……………………………………11 1.4. Метод секущих………………………………………………………….... 13 Глава 2. Прямые методы решения систем линейных алгебраических уравнений…………………………………………………………………….... 15 2.1 Формулы Крамера………………………………………………………..... 16 2.2 Метод Гаусса с выделением главного элемента……………………..….. 17 2.3 Обусловленность систем линейных алгебраических уравнений………. 21 2.4 Оценка числа обусловленности………………………………………..… 24 2.5 Метод прогонки………………………………………………………..….. 26 Глава 3. Итерационные методы решения систем линейных алгебраических уравнений………………………………………………………………………. 29 3.1 Итерационные последовательности………………………………………. 29 3.2 Достаточные условия сходимости итерационного процесса……………. 30 3.3 Метод простой итерации…………………………………………………... 33 3.4 Метод Зейделя……………………………………………………………… 39 3.5 Модифицированный метод Зейделя…………………………………….....41 Глава 4. Решение систем нелинейных уравнений…………………………… 45 4.1 Метод простой итерации…………………………………………………... 45 4.2 Метод Ньютона…………………………………………………………….. 47 4.3 Модифицированный метод Ньютона………………………………….......51 4.4 Метод Зейделя……………………………………………………………….51 Глава 5. Минимизация функций……………………………………………. ...53 5.1 Нахождения минимума функции одной переменной…………………….53 5.2 Нахождение минимума функций многих переменных………………….. 55 Глава 6. Интерполяция функций……………………………………………… 58 6.1 Интерполяционный полином Лагранжа……………………………….......59 6.2 Интерполяционный полином Ньютона……………………………………62 6.3 Погрешность интерполяции…..……………………………………………63 6.4 Сходимость интерполяционного процесса………………………………..66 6.5 Интерполяционный полином Эрмита ……………………………………. 67 6.6 Интерполирование сплайнами……………………………………………..69 Глава 7. Аппроксимация функций……………………………………………..75 7.1 Метод наименьших квадратов…………………………………………….. 75 Глава 8. Численное интегрирование функций……………………………….. 80 8.1 Квадратурные формулы прямоугольников, трапеций и Симпсона…….. 81 8.2 Сходимость и точность квадратурных формул прямоугольников, трапеций и Симпсона………………………………………………………….. 87 8.3 Апостериорные оценки погрешности численного интегрирования……. 92 3
9. Лабораторный практикум……………………………………………………94 9.1 Нахождение корня уравнения………………………………………….......94 9.2 Интерполяция функции……………………………………………………. 98 9.3 Нахождения минимума функции многих переменных………………….. 99 9.4 Численное интегрирование ………………….…………………………... 100 10.Приложения…………………………………………………………………103 Приложение 1. Норма матрицы………………………………………………103 Приложение 2. Самосопряженность и знакоопределенность матриц……...104 Литература…......……………………….………………………………………107 Кафедра фотоники и оптоинформатики……………………………………...108
4
ПРЕДИСЛОВИЕ Важной частью технологии программирования является выбор численного метода, адекватного решаемой задаче. Большинство используемых численных методов являются приближенными. Поэтому, выбрав численный метод, необходимо исследовать его точность, сходимость и устойчивость применительно к решаемой задаче. При численной реализации итерационных алгоритмов, критерий окончания расчетов выбирается на основании апостериорных оценок. Настоящая книга посвящена рассмотрению указанных вопросов. Кроме того, достаточно высокий уровень используемых математических методов способствует повышению общей математической культуры читателей.
5
Глава 1. Решение уравнений с одной переменной Наиболее исследованными являются алгебраические уравнения. Известно, что уравнение порядка n имеет n корней с учетом их кратности. Однако общее аналитическое решение алгебраических уравнений существует лишь для уравнений не выше четвертого порядка. Решение уравнений первой и второй степени изучаются в школьном курсе математики. Общее решение уравнения третьей степени довольно громоздко. Существует также общее решение уравнения четвертой степеней, однако оно сложно и неудобно для практического применения. Теория Галуа утверждает, что для уравнений выше четвертой степени не существует общего решения в радикалах. Существуют аналитические решения некоторых типов неалгебраических уравнений, например, тригонометрических уравнений. Потребность же в решении уравнений весьма велика. В этих условиях большое значение приобретают универсальные вычислительные алгоритмы. В этой главе будут рассмотрены четыре таких алгоритма.
1.1 Метод половинного деления Рассмотрим уравнение
f ( x ) = 0.
(1)
В курсе анализа доказывается теорема о существовании корня уравнения (1) для непрерывной функции: Если функция f ( x ) непрерывна на отрезке
[a ,b] и принимает на его концах значения разных знаков, то на этом отрезке
существует по крайней мере один корень уравнения (1). Предположим для определенности, что функция левом конце отрезка положительное:
[a ,b]
f ( x ) принимает на
отрицательное значение, на правом -
f ( a ) < 0,
f ( b ) > 0.
Тогда, согласно приведенной теореме, на отрезке функции f ( x ) . Возьмем на отрезке и вычислим в ней значение функции
(2)
[a ,b] существует корень c
[a ,b] среднюю точку ξ = ( b + a ) / 2
f ( ξ ) . Если f ( ξ ) = 0 , то ξ является искомым корнем. При f ( ξ ) > 0 в качестве нового отрезка [a1 ,b1 ] выберем отрезок [a ,ξ], а при f (ξ) < 0 в качестве нового отрезка [a1 ,b1 ] выберем отрезок [ξ,b ]. Новый отрезок [a1 ,b1 ] также содержит корень c , но имеет вдвое меньшую длину. Повторяя эту процедуру n раз, мы получаем отрезок 6
[an ,bn ], содержащий корень c и имеющий длину hn = h0n , где h0 - длина 2 исходного отрезка [a ,b ]. Длина отрезка hn представляет собой точность ε ,
с которой мы знаем положение корня на n -ом шаге процесса половинного деления. Тогда количество шагов, необходимых для определения корня с точностью ε , можно рассчитать как
⎛h ⎞ n > log 2 ⎜ 0 ⎟ . ⎝ε⎠
(3)
Метод половинного деления требует предварительного отделения корней. Прежде, чем применять этот метод, нам нужно найти интервал [a ,b], содержащий один корень уравнения (1) для функции f ( x ) . Однако, если функция f ( x ) не только непрерывна, но и дифференцируема, то дополнительное ее исследование с помощью производной может во многих случаях решить и этот вопрос. Например, при знакоопределенной производной, функция f ( x ) является монотонной на отрезке [a ,b ], поэтому корень у нее может быть только один.
1.2 Метод простых итераций Приведем уравнение (1) к эквивалентному виду
x = ϕ( x ).
(4)
Возьмем произвольную точку x 0 из области определения функции будем строить последовательность чисел рекуррентной формулы
{xn }, определенных
xn +1 = ϕ( xn ) .
ϕ( x ) и
с помощью
(5)
Последовательность {xn } называется итерационной. На рис.1 (а - d) представлены примеры применения этого алгоритма. Из рассмотренных примеров видно, что, если абсолютное значение производной ϕ′ < 1, то итерационный процесс сходится к корню c уравнения (4). При ϕ′ > 1 итерационный процесс расходится. Сходимость является монотонной при ϕ′ > 0 и немонотонной при ϕ′ < 0 .
7
Рис. 1а. Сходящийся итерационный процесс при
0 < ϕ′ < 1
Рис. 1b. Расходящийся итерационный процесс при
Рис. 1с. Сходящийся итерационный процесс при
ϕ′ > 1
− 1 < ϕ′ < 0 8
Рис. 1d. Расходящийся итерационный процесс при
ϕ′ < −1
В наших примерах мы рассмотрели случай, когда функция ϕ имеет производную постоянного знака. Условие сходимости итерационного процесса в общем случае дает следующая теорема. Теорема о сходимости метода простых итераций. Пусть c - корень уравнения (4) и пусть функция ϕ( x ) удовлетворяет на отрезке [c − δ , c + δ] условию Липшица с константой L < 1, т.е.:
y2 − y1 = ϕ( x2 ) − ϕ( x1 ) ≤ L x2 − x1 Тогда при любом выборе
∀x1 , x2 ∈ [c − δ ,c + δ].
x0 на отрезке
(6)
[c − δ,c + δ] существует {xn } (5), сходящаяся к
бесконечная итерационная последовательность корню уравнения (4) x = c , причем этот корень является единственным на отрезке [c − δ ,c + δ]. Заметим, что условие Липшица (6) будет заведомо выполнено, если функция ϕ( x ) имеет на отрезке [c − δ , c + δ] непрерывную производную
ϕ′( x ) , модуль которой меньше единицы: ϕ′( x ) ≤ m < 1 . В этом случае
согласно формуле конечных приращений Лагранжа будем иметь
y2 − y1 = ϕ′(ξ )( x2 − x1 ) ≤ m x2 − x1 .
(7)
Мы получили неравенство (6) с константой Липшица L = m . Перейдем теперь к доказательству теоремы. Число c является корнем уравнения (4), так что c = ϕ(c ) . Возьмем произвольную точку x0 на отрезке 9
[c − δ,c + δ]. Она отстоит от точки c не больше чем на δ :
x0 − c ≤ δ .
Вычислим x 1 = ϕ( x 0 ) . При этом будем иметь
x1 − c = ϕ( x0 ) − ϕ( c ) ≤ L x0 − c ≤ Lδ .
(8)
x1 принадлежит отрезку [c − δ,c + δ] и расположена ближе к корню c , чем x0 .
Неравенство
x2
(8)
показывает,
что
точка
Продолжим построение итерационной последовательности. Вычислим = ϕ( x1 ) . При этом
x2 − c = ϕ( x1 ) − ϕ(c ) ≤ L x1 − c ≤ L2 x0 − c ≤ L2δ . x2 тоже принадлежит отрезку [c − δ , c + δ] и расположена ближе к точке c , чем x1 . На второй итерации мы опять приблизились к c .
Точка
По индукции легко доказать, что все последующие итерации удовлетворяют неравенствам
xn − c ≤ Ln x0 − c ≤ Ln δ .
(9)
Отсюда следует, что
lim ( xn − c ) = 0 , т.е. lim xn = c .
n→∞
n→∞
(10)
Нам остается доказать, что корень x = c является единственным решением уравнения (4) на отрезке [c − δ , c + δ] . Предположим, что существует еще один корень x = c1 :
c1 = ϕ(c1 ), c − δ ≤ c1 ≤ c + δ .
(11)
c1 за нулевое приближение и будем строить итерационную последовательность. С учетом (11) получим xn = c1 , n = 0 ,1,2 ,... . С другой стороны, по доказанному lim xn = c , т.е. c1 = c . Таким образом, Примем
n→∞
никаких других решений, кроме отрезке не имеет.
x = c , уравнение (4) на рассматриваемом
Центральная идея метода простых итераций - сжимающие ото10
бражения - является весьма общей. Для многих сложных нелинейных задач принцип сжимающих отображений оказывается основным методом исследования.
1.3 Метод касательных (метод Ньютона) Метод касательных является одним из наиболее эффективных численных методов решения уравнения (1). Идея метода состоит в следующем. Предположим, что функция y = f ( x ), имеющая корень c на
отрезке [a ,b], дифференцируема на этом отрезке и ее производная f ′( x )не обращается на нем в нуль. В качестве нулевого приближения для корня возьмем произвольную точку x0 ∈ a ,b и запишем уравнение касательной к
[ ]
графику функции
f ( x ) в этой точке:
y = f ( x0 ) + f ′( x0 )( x − x0 ) .
(12)
x1 пересечения касательной с осью абсцисс (рис. 2). Для определения точки x1 имеем урав-
В качестве первого приближения для корня выберем точку нение
f ( x0 ) + f ′( x0 )( x1 − x0 ) = 0 , согласно которому
x1 = x0 −
f ( x0 ) . f ′( x0 )
11
Рис.2. Построение последовательности
{xn } по методу касательных
Продолжая этот процесс, получаем последовательность с помощью рекуррентной формулы
xn +1 = xn −
{xn }, определенную
f ( xn ) . ′ f ( xn )
(13)
Условие сходимости итерационного процесса дает следующая теорема. Теорема о сходимости метода касательных. Пусть c - корень уравнения (1) - является внутренней точкой отрезка [a ,b ], а функция f ( x ) дважды непрерывно дифференцируема на данном отрезке, причем ее производные удовлетворяют неравенствам
f ′( x ) ≥ m > 0,
f ′′( x ) ≤ M , x ∈ [a ,b].
(14)
Тогда найдется такое δ > 0 , что при любом выборе начального приближения x0 на отрезке [c − δ ,c + δ] существует бесконечная итерационная последовательность (13) и эта последовательность сходится к корню c .
f ( x ) и неравенстве нулю ее производной уравнение (1) эквивалентно на отрезке [a ,b ]
В силу предположения о дифференцируемости функции уравнению
x = ϕ( x ), где
ϕ( x ) = x −
(15)
f (x ) , так что корень x = c исходного уравнения является f ′( x )
одновременно корнем уравнения (15). Исследуем возможность отыскания этого корня с помощью метода простых итераций. Вычислим и оценим производную функции ϕ( x ) :
ϕ′( x ) =
f ( x ) f ′′( x ) , 2 ( f ′( x ))
(16)
12
ϕ ′( x ) ≤
M f (x ) . m2
Теперь воспользуемся непрерывностью функции
(17)
f ( x ) и ее равенством нулю
m2 в точке c . Выберем ε = . Для данного ε можно указать такое δ : 2M 0 < δ ≤ min(c − a ,b − c ), что для всех x ∈ [c − δ ,c + δ] будет выполняться неравенство
m2 f ( x ) − f (c ) = f ( x ) ≤ ε = . 2M
(18)
Учитывая это, получаем окончательную оценку производной:
ϕ′( x ) ≤
1 , c − δ ≤ x ≤ c + δ. 2
(19)
В соответствии с результатами предыдущего параграфа неравенство (19) означает, что уравнение (15) можно решать методом итераций: при любом выборе нулевого приближения на отрезке [c − δ , c + δ] существует бесконечная последовательность, сходящаяся к корню x = c . Такой итерационной последовательностью для уравнения (15) является последовательность (13) метода касательных.
1.4 Метод секущих Некоторым компромиссом между методом половинного деления и методом касательных является метод секущих. Как и в случае метода половинного деления решается уравнение (1). Предположим, для определенности, что функция f ( x ) принимает на левом конце отрезка [a ,b ] отрицательное значение, на правом - положительное:
f (a ) < 0,
f (b ) > 0 .
Тогда, согласно теореме из п.1.1, на отрезке
(20)
[a ,b] существует корень
c функции f ( x ) . Проведем прямую линию через точки с координатами
(a , f (a )) и (b , f (b )):
13
y = f (a ) +
f (b ) − f (a ) ( x − a ). b−a
(21)
Точка пересечения этой линии с осью абсцисс лежит между точками a и b . Координата этой точки ξ может быть рассчитана как
ξ = a−
f (a ) (b − a ). f (b ) − f (a )
Рис.3. Нахождение промежуточной точки секущих
(22)
ξ интервала [a ,b] по методу
f (ξ ) = 0 , то ξ является искомым корнем. При f (ξ ) > 0 , в качестве нового отрезка [a1 ,b1 ] выберем отрезок [a ,ξ], а при f (ξ ) < 0 в качестве нового отрезка [a1 ,b1 ] выберем отрезок [ξ,b ]. Новый отрезок [a1 ,b1 ] также содержит корень c , но имеет меньшую длину. Повторяя эту процедуру n раз, мы получаем последовательность отрезков убывающей длины и содержащих корень c .
Если
14
Глава 2. Прямые методы решения систем линейных алгебраических уравнений В настоящей главе рассматриваются методы решения системы n линейных алгебраических уравнений с n неизвестными
a11 x1 + a12 x2 + ... + a1n xn = b1 a21 x1 + a22 x2 + ... + a2 n xn = b2 .............................................. an1 x1 + an 2 x2 + ... + ann xn = bn
.
(1)
Иногда нам будет удобно представлять систему (1) в виде n
∑ aij x j = bi ,
i = 1,2,..., n
j =1
или сокращенно
AX = B , где A – матрица системы, частей соответственно:
⎡ a11 a12 ⎢a a22 A = ⎢ 21 ⎢ ... ... ⎢ ⎣ an1 an 2
X и B – вектор неизвестных и вектор правых
... a1n ⎤ ... a2 n ⎥ ⎥, ... ... ⎥ ⎥ ... ann ⎦
⎡ x1 ⎤ ⎢x ⎥ X = ⎢ 2 ⎥, ⎢ ... ⎥ ⎢ ⎥ ⎣ xn ⎦
⎡ b1 ⎤ ⎢b ⎥ B = ⎢ 2⎥. ⎢ ... ⎥ ⎢ ⎥ ⎣bn ⎦
(2)
В течение всего изложения мы будем считать, что система невырожденна, т.е. определитель системы отличен от нуля
Δ = det A ≠ 0 .
15
2.1 Формулы Крамера В курсе линейной алгебры доказывается, что решение системы (1) может быть представлено в виде
xj =
Δj Δ
,
j = 1,2 ,..., n ,
(3)
Δ - определитель системы (1), а Δ j - определитель матрицы A j , которая получается из матрицы A заменой ее j -го столбца столбцом правых
где
частей системы (1):
⎡ a11 ⎢a 21 A=⎢ ⎢ ... ⎢ ⎣ an1
a1, j +1
... a1, j −1
f1
... a2 , j −1 ... ... ... an , j −1
f 2 a2 , j +1 ... ... f n an , j +1
... a1n ⎤ ⎥ ... a2 n ⎥ . ⎥ ... ... ⎥ ... ann ⎦
(4)
Эти соотношения называются формулами Крамера. При всей своей привлекательности явное решение (3), (4) пригодно лишь для аналитических исследований или для численного решения линейных уравнений низких размерностей. Это связано огромным объемом вычислений, необходимых для реализации рассматриваемого алгоритма. В самом деле, расчет определителя n -го порядка требует n! умножений. Нам же необходимо рассчитать n + 1 определитель, что требует N n = ( n + 1 )! умножений. Для оценки факториала при n >> 1 воспользуемся формулой Стирлинга n
⎛n⎞ n! ≈ 2πn ⎜ ⎟ , n >> 1, ⎝e⎠ где
e – основание натуральных логарифмов.
Тогда имеем
⎛ n + 1⎞ N n ≈ 2π(n + 1)⎜ ⎟ ⎝ e ⎠
n +1
, n >> 1.
(5) 16
Согласно (5), для решения системы из 10 уравнений по формулам Крамера
4 ⋅107 умножений. Полагая для оценки время одной −9 операции равной 10 сек , получаем время решения порядка 0.04 сек . 160 Однако решение системы из 100 уравнений требует примерно 10 159 152 операций, что занимает время порядка 10 сек ≈ 3 ⋅10 лет . Для 10 сравнения, возраст Вселенной составляет примерно 2 ⋅ 10 лет . Заметим,
требуется примерно
что современные задачи требуют решения систем линейных уравнений существенно больших размерностей.
2.2 Метод Гаусса с выделением главного элемента Одним из самых распространенных методов решения систем линейных алгебраических уравнений является метод Гаусса. На первом этапе (прямой ход) система приводится к верхнетреугольному виду. На втором этапе (обратный ход) находятся искомые значения неизвестных. Прямой ход. Рассмотрим первое уравнение системы (1):
a11x1 + a12 x 2 + ... + a1n x n = b1 .
(6)
Поскольку определитель системы не равен нулю, в левой части уравнения (6) есть по крайней мере один не равный нулю коэффициент. Найдем в этом уравнении максимальный по абсолютной величине коэффициент. Перенумеруем неизвестные xi так, чтобы слагаемое с этим коэффициентом стояло на первом месте в уравнении (6). Это эквивалентно перестановке столбцов матрицы (4) системы (1). Разделим уравнение (6) на этот коэффициент. Тогда (6) приобретает вид
x1 + c12 x2 + ... + c1n xn = f1 ,
(7)
где
c12 =
a12 a a , c13 = 13 , ..., c1n = 1n , a11 a11 a11
f1 =
b1 . a11
Второе уравнение системы (1) имеет вид
17
a21 x1 + a22 x2 + ... + a2 n xn = b2 . Умножим (7) на первый коэффициент (8). Тогда коэффициент при уравнение приобретает вид
(8)
a21 уравнения (8) и вычтем из
x1 в уравнении (8) обращается в нуль, и это
a~22 x2 + a~23 x3 + ... + a~2 n xn = b~2 , где
a~22 = a22 − a21c12 , a~23 = a23 − a21c13 , ........... . a~2 n = a2 n − a21c1n , ~ b2 = b2 − a21 f1 Применяя эту процедуру ко всем следующим уравнениям системы, получаем систему вида
x1 + c12 x2 + c13 x3 + ... + c1n xn = f1 a~ x + a~ x + ... + a~ x = b~ 22 2
23 3
2n n
2
................................................ a~ x + a~ x + ... + a~ x = b~ n2 2
n3 3
nn n
.
(9)
n
Значения коэффициентов и правых частей системы (9) вычисляются по формулам
a~ij = aij − ai1c1 j , b~i = bi − ai1 f1 . Выделим из (9) систему, содержащую
(10)
n − 1 уравнение:
18
~ (1) (1) a22 x2 + a23 x3 + ... + a2( 1n) xn = b2 ~ (1) (1) a32 x2 + a33 x3 + ... + a3( 1n ) xn = b3 ................................................ ~ (1) an( 12) x2 + an( 13) x3 + ... + ann xn = bn
.
Применим к этой системе описанную выше процедуру. И так далее. Продолжая процесс исключения, после n − 1 -го шага приведем исходную систему к виду
x1 + c12 x2 + c13 x3 + ... + c1n xn = f1 x2 + c23 x3 + ... + c2 n xn = f 2 ................................................ xn −1 + cn −1,n xn = f n −1
(11)
xn = f n или в матричной форме
Cx = f . Здесь C является верхнетреугольной матрицей с единицами на главной диагонали:
⎡ 1 c12 ⎢0 1 C=⎢ ⎢... ... ⎢ ⎣0 0
c13 c23 ...
0
... c1n ⎤ ... c2 n ⎥ ⎥. ... ... ⎥ ⎥ ... 1 ⎦
(12)
Обратный ход состоит в последовательном определении неизвестных из системы (11):
19
xn = f n xn −1 = f n −1 − cn −1,n xn xn − 2 = f n − 2 − cn − 2 ,n −1 xn −1 − cn − 2 ,n xn
(13)
.......................................................... x1 = f1 − c12 x2 − c13 x3 − ... − c1n xn
N n , необходимых для решения системы из n 1 3 линейных алгебраических уравнений методом Гаусса, дает N n = n . Для 3 Оценка числа операций
решения системы 100 линейных уравнений требуется примерно
1 6 ⋅10 ≈ 3 ⋅105 операций. Полагая, для оценки, время одной операции 3 −4 равной 10 −9 сек , получаем время решения порядка 3 ⋅10 сек . Напомним, 160 что решение такой системы по методу Крамера требует примерно 10 4 операций. Для решения системы из 10 уравнений по методу Гаусса 11 требуется 3 ⋅ 10 операций или 300 сек = 5 мин . В заключение отметим, что первый этап метода Гаусса может быть использован для вычисления определителя матрицы A . Прямой ход метода Гаусса основан на многократном выполнении операции перестановки столбцов матрицы A и сложения одной из строк матрицы с другой строкой, взятой с некоторым множителем. Обе операции не меняют значения определителя системы. Однако, при делении ведущей строки на ее диагональный элемент, определитель также делится на этот элемент. Поскольку определитель приведенной треугольной системы всегда равен единице, то определитель исходной системы (1) ( n −1 ) Δ = det A = (− 1) a11a22 ...ann , k
где k - число перестановок столбцов в процессе редукции матрицы верхнетреугольной матрице C .
A к
20
2.3 Обусловленность систем линейных алгебраических уравнений Оценим устойчивость решения системы линейных алгебраических уравнений по отношению к изменению правой части системы. Рассмотрим сначала модельный пример одного линейного уравнения
ax = b .
(14)
Решение этого уравнения имеет вид
b x= . a Малая вариация решения
(15)
δb правой части уравнения (14) приводит к вариации δx =
δb . a
(16)
Используя (15), (16), находим, что относительная вариация решения уравнения (14) равна относительной вариации его правой части
δx δb = . x b
(17)
Вернемся теперь к рассмотрению системы линейных алгебраических уравнений
Ax = b . Если определитель матрицы матрица
(18)
A не равен нулю, то существует обратная
A−1 . Тогда решение системы (18) может быть представлено в виде
Малая вариация решения
δb
x = A−1b .
(19) правой части системы (18) приводит к вариации 21
δx = A−1δb .
(20)
Отсюда получаем связь нормы вариации решения с нормой вариации правой части (смотри Приложение 1)
δx ≤ A−1 ⋅ δb .
(21)
Исходное уравнение (18) позволяет написать неравенство
b ≤ A⋅ x,
(22)
Перемножив его с неравенством того же знака (21), получим
b ⋅ δx ≤ A ⋅ A−1 ⋅ x δb , Пусть b ≠ 0 , тогда, согласно (19), переписать в виде
(23)
x ≠ 0 , и неравенство (23) можно
δb δx ≤ MA , M A = A ⋅ A−1 . x b
(24)
M A называется стандартным числом обусловленности матрицы A . Покажем, что M A ≥ 1. В самом деле, по определению обратной Число
матрицы,
A ⋅ A−1 = I , где I – единичная матрица. Тогда имеем
1 = I = A ⋅ A−1 ≤ A ⋅ A−1 = M A , что и требовалось доказать. Согласно (17), число обусловленности системы, состоящей из одного уравнения, равно единице. Если число обусловленности много больше единицы, то малые относительные вариации правой части системы приводят к большим относительным вариациям решения. Такие системы называются плохо обусловленными. Пример 1 22
Рассмотрим систему двух уравнений
x 1 + 0 ⋅ x 2 = b1 ,
⎡1 0⎤ A=⎢ ⎥, 1 ε ⎣ ⎦
x1 + ε ⋅ x 2 = b 2 , где
(25)
ε - малый параметр.
Решение системы имеет вид
x1 = b1 x2 =
b2 b1 . − ε ε
(26)
Тогда обратная матрица имеет вид
0⎤ ⎡ 1 A−1 = ⎢ −1 −1 ⎥ . ε ⎦ ⎣− ε
(27)
Найдем нормы прямой и обратной матриц и рассчитаем, согласно (24), число обусловленности системы. По определению
A = max Ax .
(28)
x =1
Введем в двумерном евклидовом пространстве вектор рана единице
x , норма которого
⎛ cos ϕ ⎞ ⎟⎟ . x = ⎜⎜ sin ϕ ⎝ ⎠ Тогда
cos ϕ ⎛ ⎞ ⎡1 0⎤⎛ cos ϕ ⎞ A = max ⎢ max = ⎜ ⎟ ⎜ ⎥ sin ϕ ⎟ ⎜ cos ϕ + ε sin ϕ ⎟⎟ , ϕ ⎣1 ε ⎦ ⎜ ϕ ⎝ ⎠ ⎝ ⎠
A = max 2 cos 2 ϕ + 2ε sin ϕ cos ϕ + ε 2 sin 2 ϕ ≈ 2 . ϕ
23
В свою очередь, норма обратной матрицы может быть рассчитана как
0 ⎤⎛ cos ϕ ⎞ cos ϕ ⎞ ⎛ ⎡ 1 A−1 = max ⎢ −1 −1 ⎥⎜⎜ ⎟, ⎟⎟ = max ⎜⎜ −1 −1 ϕ ⎣− ε ϕ ⎝ − ε cos ϕ + ε sin ϕ ⎟ ε ⎦⎝ sin ϕ ⎠ ⎠ A−1 = max cos 2 ϕ + ε − 2 (cos ϕ − sin ϕ)
2
ϕ
,
A−1 = max cos 2 ϕ + ε − 2 (2 − sin 2ϕ) ≈ ε −1 3 . ϕ
Тогда число обусловленности системы
M A ≈ ε −1 6 .
(29)
Из (29) видим, что чем меньше ε , тем больше число обусловленности системы (25), т.е. тем хуже она обусловлена. Кроме того, из приведенного примера видно, насколько громоздким является расчет норм прямой и обратной матрицы, исходя из определения (28), даже в простейшем случае системы двух уравнений. В следующем параграфе мы получим гораздо более эффективный способ оценки числа обусловленности системы.
2.4. Оценка числа обусловленности Пусть λ max - максимальное по модулю собственное число матрицы соответствующий собственный вектор:
A, x -
Ax = λ max x , тогда
λ max x = Ax ≤ A x . Следовательно, поскольку
x ≠ 0,
λ max ≤ Α . Аналогично, для минимального собственного числа
(30)
λ min матрицы A и 24
соответствующего собственного вектора
y , имеем
Ay = λ min y или
A− 1 y =
1
λ min
y.
Отсюда следует оценка
1
≤ A−1 .
λ min Перемножая неравенства (30) обусловленности матрицы A :
и
(31)
(31),
получаем
M A = A ⋅ A−1 ≥ λ max λ min .
оценку
числа
(32)
Если матрица симметричная, то все ее собственные числа вещественны, причем
A = λ max и A−1 =
1 λ min
.
поэтому для таких матриц
M A = λ max λ min ,
(33)
Из (33) видим, что число обусловленности тем больше, чем больше разброс собственных чисел матрицы. С увеличением размера матрицы число ее обусловленности имеет тенденцию к увеличению. Возвращаясь к Примеру 1, находим (33) ,
MA ≥
λ max = 1, λ min = ε . Тогда, согласно λ max = ε −1 , λ min
что согласуется с оценкой (29). 25
2.5 Метод прогонки Метод прогонки применим алгебраических уравнений вида
при
решении
систем
x0 = p0 x1 + q0 ,
линейных (34)
Ai xi −1 + Ci xi + Bi xi +1 = Fi , i = 1,...,n − 1, xn = pn xn −1 + qn .
(35) (36)
Такого рода системы возникают, например, при решении краевых задач математической физики. При этом уравнения (35) представляют собой численную аппроксимацию дифференциального уравнения, а уравнения (34) и (36) – аппроксимацию граничных условий. Для простоты изложения, рассмотрим частный случай уравнений (34) и (36):
x0 = q0 , xn = qn .
(37)
Используя (37), приведем систему (35) к виду
C1 x1 + B1 x2 = F1 − A1q0 , A2 x1 + C2 x2 + B1 x3 = F2 ,
,
M
(38)
An −1 xn − 2 + Cn −1 xn −1 = Fn −1 − Bn −1qn , Матрица этой системы имеет трехдиагональную структуру:
⎡C1 B1 0 ⎢A C B 2 2 ⎢ 2 ⎢0 A3 C3 ⎢ ⎢... ... ... ... ⎢⎣0 0 0
0
... 0
0
... 0
B3
... 0
... ... ... 0 ... An −1
⎤ ⎥ 0 ⎥ ⎥. 0 ⎥ ⎥ Cn −1 ⎥⎦ 0
(39)
Это существенно упрощает решение системы (38) благодаря специальному методу, получившему название метода прогонки. Этот метод основан на 26
предположении, что искомые неизвестные соотношением
xi и xi +1 связаны рекуррентным
xi = α i +1 xi +1 + βi +1 , 0 ≤ i ≤ n − 1.
(40)
Здесь величины α i +1 ,βi +1 , получившие название прогоночных коэффициентов, подлежат определению, исходя из условий задачи (37), (38). Такая процедура означает замену прямого определения неизвестных xi задачей определения прогоночных коэффициентов с последующим расчетом по ним величин xi . Для реализации описанной программы выразим, с помощью соотношения (40), xi −1 через xi +1 :
xi −1 = α i xi + βi = α i α i +1 xi +1 + α iβi +1 + βi и подставим xi −1 и xi , выраженные через результате получим
xi +1 , в исходные уравнения (35). В
( Ai αi αi +1 + Ci αi +1 + Bi )xi +1 + Ai αiβi +1 + Aiβi + Ciβi +1 − Fi = 0, i = 1,2 ,...,n − 1. Последние соотношения будут заведомо выполняться, и притом независимо от решения, если потребовать, чтобы при i = 1,2 ,..., n − 1 имели место равенства
Ai α i α i +1 + Ci α i +1 + Bi = 0 , Ai α i +1βi +1 + Aiβi + Ciβi +1 − Fi = 0. Отсюда следуют коэффициентов:
α i +1 = −
рекуррентные
соотношения
для
прогоночных
Bi F − Aiβi , βi +1 = i , i = 1,2,...,n − 1. Ai α i + Ci Ai α i + Ci
Граничное условие на левом конце интервала
(41)
x 0 = q 0 и соотношение 27
x 0 = α1 x 1 + β1 непротиворечивы, если положить
α 1 = 0, β1 = q 0 . .
(42)
Остальные значения коэффициентов прогонки
α 2, ,..., α n
и
β 2, ,..., β n
находим из (41), чем и завершаем этап вычисления прогоночных коэффициентов. Далее, согласно граничному условию на правом конце интервала, xn = qn . (43) Отсюда можно найти остальные неизвестные xn −1 ,..., x1 в процессе обратной прогонки с помощью рекуррентной формулы (40). Число операций, которое требуется для решения системы методом прогонки, растет пропорционально размерности системы n . Напомним, что для реализации метода Гаусса, это число растет, как
n3 .
Во многих прикладных задачах, которые приводят к системам линейных алгебраических уравнений с трехдиагональной матрицей, ее коэффициенты удовлетворяют неравенствам
Ci > Ai + Bi . (т.н. условие диагонального преобладания). Можно показать, что в этом случае прогоночные коэффициенты удовлетворяют неравенствам αi ≤ 1, (44) что делает прогонку устойчивой. Действительно, предположим, что компонента решения xi в результате процедуры округления рассчитана с некоторой ошибкой. Тогда при вычислении следующей компоненты xi −1 по рекуррентной формуле (40) эта ошибка благодаря неравенствам (44) не будет нарастать.
28
Глава 3. Итерационные методы решения систем линейных алгебраических уравнений В главе 2 отмечалось, алгебраических уравнений
что
если
матрица
A системы линейных
Ax = B
(1)
плохо обусловлена, т.е. число обусловленности M A >> 1, то при решении (1) методом Гаусса погрешности округления приводят к большим погрешностям решения. Этого недостатка лишены итерационные методы решения систем линейных алгебраических уравнений.
3.1 Итерационные последовательности Ограничимся рассмотрением линейных одношаговых итерационных алгоритмов
x k +1 − x k C + Ax k = B , det C ≠ 0, τ > 0 , τ
(2)
k
где x - приближенное значение искомого вектора решения на k -й итерации, τ - итерационный параметр, C - вспомогательная матрица. k +1
Разрешая (2) относительно x , получаем связь между значениями искомого вектора x на k+1 и на k-м шаге итерации
(
)
x k +1 = x k + τC −1 B − Ax k .
(3) 0
Будем говорить, что итерационная последовательность x , x сходится к вектору x по евклидовой норме (см. Приложение 1), если
lim x k − x = lim
k →∞
k →∞
(x
k 1
) ( 2
)
2
(
− x1 + x2k − x2 + ... + xnk − xn
)
2
1
, x 2 ...
= 0 . (4)
Для исследования сходимости итерационного процесса введем два понятия – погрешность решения
29
zk = xk − x
(5)
и невязка решения
ψ k = Ax k − B .
(6)
Сходимость итерационного процесса означает, что
lim z k = 0 . Норма
k →∞
погрешности показывает, насколько приближенное решение, полученное на k -м шаге итерации, близко к точному решению. К сожалению, эту величину нельзя определить в ходе итераций, поскольку искомое решение неизвестно. k
Невязка решения показывает, насколько хорошо x удовлетворяет системе (1). Эта величина легко рассчитывается на каждом итерационном шаге. Установим связь между
zk и ψk :
ψ k = Ax k − B = A( z k + x ) − B = Az k . Используя обратную матрицу
(7)
A−1 , получаем
z k = A−1ψ k .
(8)
Из формул (7) и (8) вытекают неравенства:
ψk ≤ A zk ,
z k ≤ A−1 ψ k .
(9)
Следовательно, погрешность решения стремится к нулю тогда и только тогда, когда стремится к нулю невязка. При исследовании сходимости итерационных методов большую роль играют самосопряженность и знакоопределенность матриц A и C - см. Приложение 2.
3.2 Достаточные условия сходимости итерационного процесса Теорема Самарского. Пусть определенная матрица,
A - самосопряженная положительно
τ C − A - положительно определенная матрица, τ 2
положительное число. Тогда при любом выборе нулевого приближения
x 0 итерационный процесс (2) сходится к решению системы (1). 30
Обсудим сначала условие
τ C − A > 0 . Оно эквивалентно неравенству 2
(Cx , x ) > τ ( Ax , x ), 2
x ≠ 0.
(10)
Поскольку A - положительно определенная матрица, из (9) вытекает, что C также является положительно определенной матрицей. Кроме того, (9) определяет интервал, в котором может изменяться параметр τ :
2(Cx , x ) . x ≠ 0 ( Ax , x )
0 < τ < τ0 = inf
(11)
Перейдем теперь к доказательству теоремы. Согласно (5)
xk = zk + x .
(12)
Используя (12), представим итерационное соотношение (2) в виде
z k +1 − z k C + Az k = 0. τ
(13)
Мы показали выше, что матрица C - положительно определенная. Следовательно, она невырожденная и имеет обратную. Тогда рекуррентное соотношение (13) можно разрешить относительно zk +1 :
z k +1 = z k − τC −1 Az k , z k +1 = z k − τωk ,
(14)
где
ωk = C −1 Az k , так что Az k = Cωk . Умножая обе части равенства (14) слева на матрицу рекуррентное соотношение:
(15)
A , получаем еще одно
31
Az k +1 = Az k − τAωk .
(16)
Рассмотрим последовательность положительных функционалов:
(
)
J k = Az k , z k . Составим аналогичное выражение для рекуррентных формул (14) и (16):
(
) (
J k +1 и преобразуем его с помощью
)
J k +1 = Az k +1 , z k +1 = Az k − τAωk , z k − τωk =
(
k
k
) (
k
k
) (
k
k
)
2
(
k
k
)
= Az , z − τ Aω , z − τ Az ,ω + τ Aω ,ω . Из самосопряженности матрицы
( Aω
k
(17)
A и формулы (15) следует, что
) (
) (
)
, z k = Az k , ω k = C ω k , ω k .
В результате соотношение (17) принимает вид
(
)
(
)
J k +1 = J k − 2τ Cωk ,ωk + τ 2 Aωk ,ωk = τ ⎞ ⎛⎛ ⎞ = J k − 2τ⎜ ⎜ C − A ⎟ωk ,ωk ⎟. 2 ⎠ ⎝⎝ ⎠ Таким образом, последовательность функционалов
(18)
J k с учетом условия
τ C − A > 0 образует монотонно невозрастающую последовательность, 2
ограниченную снизу нулем:
J k ≥ J k +1 ≥ ... ≥ 0 ,
(19)
поэтому она сходится. Далее, по лемме 3 из Приложения 2,
32
τ ⎞ k k⎞ ⎛⎛ k 2 ⎜ ⎜ C − A ⎟ω , ω ⎟ ≥ δ ω , δ > 0 . 2 ⎠ ⎠ ⎝⎝ Тогда, согласно (18), 2 τ ⎞ ⎛⎛ ⎞ J k − J k +1 = 2τ⎜ ⎜ C − A ⎟ωk ,ωk ⎟ ≥ 2τδ ωk . 2 ⎠ ⎝⎝ ⎠
(20)
Выше было показано, что последовательности функционалов J k сходится. Следовательно,
J k − J k +1 → 0 при k → ∞ . Но тогда и ωk → 0 при
k → ∞ . Согласно (14), z k = A−1Cωk , так что z k ≤ A−1 ⋅ B ωk → 0 , k → ∞ . Теорема доказана.
3.3 Метод простой итерации Рассмотрим итерационный алгоритм (2). В самом простом случае единичная матрица), при этом получаем
x k +1 − x k + Ax k = B , τ Будем считать, что матрица +
(
)
x k +1 = x k + τ B − Ax k .
C = I (I -
(21)
A удовлетворяет условию теоремы Самарского,
т.е. A = A > 0 , тогда формула (11), определяющая границу интервала сходимости по итерационному параметру τ , принимает вид
2( x , x ) 2 = . ( ) A x , x ( ) A x , x x≠0 sup x≠0 (x , x )
0 < τ < τ0 = inf
Пусть
(22)
e1 ,e2 ,...,en - ортонормированный базис собственных векторов 33
оператора, соответствующего матрице
Aek = λ k ek ,
A:
(ek ,em ) = δkm .
В силу положительной определенности матрицы значения положительны:
A все его собственные
0 < ( Aek ,ek ) = λ k (ek ,ek ) = λ k . Будем считать их занумерованными в порядке убывания:
λ1 ≥ λ 2 ≥ ... ≥ λ n > 0 . Разложим вектор
(23)
x ≠ 0 по базису собственных векторов:
x = ξ1e1 + ξ 2e2 + ... + ξ n en , тогда
( x , x ) = ξ12 + ξ 22 + ... + ξ 2n , ( Ax , x ) = λ1ξ12 + λ 2ξ 22 + ... + λ nξ 2n и
( Ax , x ) λ1ξ12 + λ 2ξ 22 + ... + λ n ξ 2n sup = sup ξ12 + ξ 22 + ... + ξ 2n x ≠0 ( x , x ) x ≠0
= λ1 .
В результате из (22) следует, что метод простой итерации сходится при любом τ , принадлежащем интервалу
0 < τ < τ0 =
2 . λ1
(24)
Дальнейшее исследование основано на анализе рекуррентного соотношения (21). Введем матрицу перехода
S = I − τA, S + = S
(25)
и перепишем (21) в виде 34
x k +1 = Sx k + τB . k
k
Погрешность z = x −x рекуррентному соотношению:
будет
(26)
удовлетворять
аналогичному
z k +1 = Sz k .
(27)
Согласно (27), скорость сходимости итерационного процесса определяется значением нормы оператора перехода: k
z k +1 ≤ S ⋅ z k , тогда z k ≤ S ⋅ z 0 .
(28)
S , тем быстрее сходится итерационный процесс. Рассчитаем величину этой нормы. Пусть ei и λ i - собственный вектор и соответствующее собственное число матрицы A . Тогда
Таким образом, чем меньше
Sei = ( I − τA )ei = ( 1 − τλi )ei . Таким образом, ei является одновременно и собственным вектором матрицы S , а соответствующее собственное число матрицы S имеет вид
μ i ( τ ) = 1 − τλi .
(29)
A матрица S также является При самосопряженной матрице самосопряженной. Следовательно, ее норма определяется наибольшим по модулю собственным значением μ i (τ ): S = max μ i (τ ) = max 1 − τλi . 1≤ i ≤ n
(30)
1≤ i ≤ n
Найдем значение итерационного параметра τ , при котором S имеет минимальное значение. Это значение и обеспечивает максимальную скорость сходимости итерационного процесса. На Рис. 1 представлены графики зависимости от параметра τ функций 1 − τλi и нормы матрицы перехода S ( τ ) . В соответствии с (30), график
S ( τ ) является верхней огибающей графиков 1 − τλi
.
Оптимальное 35
значение итерационного параметра
τ = τ* соответствует наименьшему
S (τ) . В соответствии с Рис.1, это значение определяется из уравнения 1 − τλ n = τλ1 − 1 . Следовательно значению функции
τ* =
2 , λ1 + λ 2
S (τ* ) =
λ1 − λ n . λ1 + λ n
(31)
Рис. 1. Определение оптимального значения итерационного параметра τ* Используя (2.33), выразим наименьшее значение нормы матрицы перехода через число обусловленности M A :
S (τ* ) =
M A −1 . M A +1
Таким образом, для плохо обусловленной матрицы
(32)
(M A >> 1)
даже при
оптимальном выборе итерационного параметра τ = τ* норма матрицы S близка к единице, так что сходимость метода простой итерации в этом случае оказывается медленной. В заключение заметим, что формула (31) для оптимального значения итерационного параметра τ* представляет прежде всего теоретический интерес. Обычно при решении систем линейных алгебраических уравнений наибольшее и наименьшее собственные числа матрицы A неизвестны, поэтому подсчитать τ* заранее невозможно. В результате итерационный па36
раметр τ нередко приходится подбирать в процессе вычислений методом проб и ошибок. Задача 1. неизвестными:
Рассмотреть
систему
двух
уравнений
с
⎧ x1 + x2 = 0 , ⎨ ⎩ x1 + 2 x2 = 1
двумя
(33)
и построить для нее приближенное решение с помощью метода простой итерации. Выпишем сразу решение системы (33):
x1 = −1, x2 = 1,
(34)
чтобы потом иметь возможность сравнить его с членами итерационной последовательности. Перейдем к решению системы методом простой итерации. Матрица системы имеет вид
⎡1 1 ⎤ A=⎢ . ⎥ ⎣1 2⎦ Она самосопряженная и положительно определенная, поскольку
Ax , x = ( x1 + x2 )x1 + ( x1 + 2 x2 )x2 = ( x1 + x2 ) + x22 > 0 . 2
Составим характеристическое уравнение для матрицы корни:
A и найдем его
1− λ 1 = λ2 − 3λ + 1 = 0 , 1 2−λ λ1 =
3+ 5 3− 5 ≈ 2.618, λ 2 = ≈ 0.382. 2 2
С их помощью можно определить границу интервала сходимости оптимальное значение итерационного параметра
τ* :
τ0 и
37
τ0 =
2 2 2 ≈ 0.764, τ* = = . λ1 λ1 + λ 2 3
Для построения итерационной последовательности выберем какоенибудь значение итерационного параметра на интервале сходимости, например
1 τ = . В этом случае рекуррентная формула для членов 2
итерационной последовательности принимает вид
⎡ 1 / 2 − 1 / 2⎤ ⎛0⎞ 1 x k +1 = Sx k + B , где S = ⎢ , B = ⎜⎜ ⎟⎟ . ⎥ 1 / 2 0 − 2 ⎣ ⎝1⎠ ⎦ x0 = 0 и выпишем несколько первых членов итерационной последовательности x k , подсчитывая для
Возьмем простейшее начальное приближение каждого из них невязку
ψ k (6). В результате получим:
⎧ 1⎫ ⎧1 ⎫ x1 = ⎨0 , ⎬, Ψ1 = ⎨ ,0⎬, ⎩ 2⎭ ⎩2 ⎭
Ψ1 =
1 , 2
1 ⎧ 1 1⎫ ⎧1 1 ⎫ x2 = ⎨− , ⎬, Ψ2 = ⎨ ,− ⎬, Ψ2 = , 2 2 ⎩ 4 2⎭ ⎩4 4⎭ 5 ⎧ 3 5⎫ ⎧1 1⎫ x3 = ⎨− , ⎬, Ψ3 = ⎨ ,− ⎬, Ψ3 = , 2 ⎩ 8 8⎭ ⎩4 8⎭ ⎧ 1 11 ⎫ ⎧ 3 1⎫ x4 = ⎨− , ⎬, Ψ4 = ⎨ ,− ⎬, ⎩ 2 16 ⎭ ⎩16 8 ⎭
Ψ4 =
13 . 16
Норма невязок хотя и медленно, но убывает, что говорит о сходимости процесса. Это же видно из сравнения членов итерационной последовательности x k с решением системы. Медленная сходимость связана с плохой обусловленностью матрицы A :
MA =
λ1 ≈ 6.854. λ2
38
3.4 Метод Зейделя Разложим матрицу
A системы (1) на сумму трех матриц A = D + TН + TВ ,
где D — диагональная часть матрицы стоящие на главной диагонали:
(35)
A , которая содержит элементы aii ,
⎧a , i = j Dij = aii δij = ⎨ ii , 0 , i j ≠ ⎩ TН - нижнетреугольная матрица:
(TН )ij
⎧ 0, i ≤ j =⎨ ⎩aij , i > j ,
TВ - верхнетреугольная матрица:
(TВ )ij
⎧a , i < j = ⎨ ij . ⎩ 0, i ≥ j
Запишем итерационный алгоритм (2), полагая
C = D + TН , τ = 1.
(36)
Тогда получаем
(D + TН )(x k +1 − x k ) + Ax k
= B,
или 39
(D + TН ) x k +1 + TВ x k
= B.
(37)
Рекуррентная формула (37) задает алгоритм Зейделя. Перейдем от векторной формы записи (37) к покомпонентной:
a11 x1k +1 + a12 x2k + a13 x3k + ... + a1n xnk = b1 a21 x1k +1 + a22 x2k +1 + a23 x3k + ... + a2 n xnk = b2 .................................................................
.
(38)
an1 x1k +1 + an 2 x2k +1 + an3 x3k +1 ... + ann xnk +1 = bn Уравнения (38) позволяют последовательно рассчитать компоненты вектора
xik +1 :
xik +1
1 = aii
n i −1 ⎡ k⎤ k +1 f − a x − a x ∑ ij j ⎥ , i = 1,...,n . ⎢ i ∑ ij j j = i +1 j =1 ⎦ ⎣
(39)
Формула предполагает, что aii ≠ 0 , 1 ≤ i ≤ n . Алгоритм в методе Зейделя прост и удобен для вычислений. Он не требует никаких действий с матрицей A . Ранее вычисленные на текущей итерации компоненты с
компонентами
( j < i ) сразу же участвуют в расчетах наряду ( j > i ) и, таким образом, не требуют
x kj +1
x kj
дополнительного резерва памяти, что существенно при решении больших систем. Сходимость метода Зейделя в случае, когда матрица A удовлетворяет условию теоремы Самарского, т.е. является самосопряженной и положительно определенной, будет доказана в следующем разделе. Задача 2. Рассмотреть систему (33) (задача 1) и построить для нее приближенное решение с помощью метода Зейделя. В рассматриваемом случае рекуррентные формулы (38) 40
x1k +1 = − x2k , x2k +1
(
)
. 1 k +1 = 1 − x1 2
(40)
Принимая, как и при решении задачи 2, за начальное приближение нулевой вектор, подсчитаем по формулам (40) несколько первых итераций, сопровождая этот процесс подсчетом невязки:
⎛ 0 ⎞ ⎛1 2 ⎞ 1 x = ⎜⎜ ⎟⎟ , ψ = ⎜⎜ ⎟⎟ , ⎝1 2 ⎠ ⎝ 0 ⎠ 1
ψ1 = 1 2 ,
⎛ −1 4⎞ ⎛1 4 ⎞ x 2 = ⎜⎜ ⎟⎟ , ψ 2 = ⎜⎜ ⎟⎟ , ψ 2 = 1 4 , ⎝34⎠ ⎝ 0 ⎠ ⎛ − 3 4⎞ ⎛1 8 ⎞ ⎟⎟ , ψ 3 = ⎜⎜ ⎟⎟ , ψ 3 = 1 8 , x 3 = ⎜⎜ ⎝ 78 ⎠ ⎝ 0⎠ Первая норма невязки убывает по закону геометрической прогрессии со знаменателем 1/2, т.е. гораздо быстрее, чем в методе простой итерации.
3.5 Модифицированный метод Зейделя Запишем итерационный алгоритм (2), полагая
C = D + τTН , τ > 0 .
(41)
Тогда получаем
⎛1 ⎞ k +1 k k ⎜ D + TН ⎟( x − x ) + Ax = B , ⎝τ ⎠ или
41
⎡1 ⎛ 1⎞ ⎤ D ⎢ x k +1 + ⎜1 − ⎟ x k ⎥ + TН x k +1 + TВ x k = B . ⎝ τ⎠ ⎦ ⎣τ
(42)
Перейдем от векторной формы записи (42) к покомпонентной:
⎡1 ⎛ 1⎞ ⎤ a11 ⎢ x1k +1 + ⎜1 − ⎟ x1k ⎥ + a12 x2k + a13 x3k + ... + a1n xnk = b1 ⎝ τ⎠ ⎦ ⎣τ ⎡1 ⎛ 1⎞ ⎤ a21 x1k +1 + a22 ⎢ x2k +1 + ⎜1 − ⎟ x2k ⎥ + a23 x3k + ... + a2 n xnk = b2 . ⎝ τ⎠ ⎦ ⎣τ .........................................................................................
(43)
⎡1 ⎛ 1⎞ ⎤ an1 x1k +1 + an 2 x2k +1 + an3 x3k +1 ... + ann ⎢ xnk +1 + ⎜1 − ⎟ xnk ⎥ = bn ⎝ τ⎠ ⎦ ⎣τ Уравнения (43) позволяют последовательно рассчитать компоненты вектора
xik +1 : xik +1
= (1 − τ )
xik
τ + aii
i −1 n ⎡ k +1 k⎤ b − a x − a x ∑ ij j ⎥ , i = 1,...,n . ⎢ i ∑ ij j j =1 j = i +1 ⎣ ⎦
(44)
Исследуем условия сходимости модифицированного метода Зейделя при дополнительном предположении, что матрица A удовлетворяет условиям теоремы Самарского. Самосопряженность матрицы A означает, что
TН+ = TВ , TВ+ = TН . В самом деле, учитывая, что
(45)
D + = D , получаем
( Ax , x ) = ((TН + D + TВ )x , x ) = (x ,(TН+ + D + + TВ+ )x ) = . = ( x ,(TВ + D + TН ) x ) = ( x , Ax ) Составим для рассматриваемого случая матрицу
τ C − A . Согласно (41), 2 42
τ τ ⎛ τ⎞ C − A = ⎜1 − ⎟ D + (Tн − TВ ) . 2 2 ⎝ 2⎠
(46)
Запишем условие ее положительной определенности:
τ τ ⎞ ⎞ ⎛ τ⎞ ⎛⎛ ⎜ ⎜ C − A ⎟ x , x ⎟ = ⎜1 − ⎟( Dx , x ) + ((TН − TВ ) x , x ) > 0 . (47) 2 ⎠ ⎠ ⎝ 2⎠ 2 ⎝⎝ Второе слагаемое в выражении (47) не дает вклада в квадратичную форму в силу соотношения (45). Матрица A является по предположению положительно определенной. Следовательно, все ее диагональные элементы строго положительны: aii > 0, 1 ≤ i ≤ n . Это означает положительную определенность матрицы
D:
(Dx , x ) > 0 . В результате условие положительной определенности
выражения (47) - достаточное условие для сходимости итерационной последовательности - принимает вид
0 < τ < 2.
(48)
Метод Зейделя, соответствующий случаю ω = 1 , удовлетворяет этому условию. Можно поставить вопрос об оптимальном выборе параметра τ = τ* , при котором метод сходится быстрее всего. Теоретическое исследование, на котором мы не будем останавливаться, показывает, что такое значение существует. Однако на практике его приходится подбирать экспериментально. Задача 3. Построить приближенное решение системы (33) (задача 1) с помощью модифицированного метода Зейделя, полагая τ = 4 / 3 . Рекуррентное соотношение (44), записанное покомпонентно, принимает вид
1 4 x1k +1 = − x1k − x2k , 3 3 2 2 1 x2k +1 = − x1k +1 − x2k . 3 3 3 Примем, как и в предыдущих случаях, за начальное приближение нулевой вектор и сделаем три итерации. При этом для каждой из них подсчитаем невязку, позволяющую следить за сходимостью процесса: 43
⎛ 0 ⎞ ⎛ 2 / 3⎞ 5 x 1 = ⎜⎜ ⎟⎟ , ψ 1 = ⎜⎜ ⎟⎟ , ψ 1 = = 0.745 , 2 3 1 3 3 ⎝ ⎠ ⎝ ⎠ ⎛ −8 9 ⎞ ⎛ 4 / 27 ⎞ 41 ⎟⎟ , ψ 2 = ⎜⎜ x 2 = ⎜⎜ ⎟⎟ , ψ 2 = = 0.237 , 28 27 5 / 27 27 ⎝ ⎠ ⎝ ⎠ ⎛ − 88 81 ⎞ ⎛ − 8 / 243 ⎞ 89 3 x = ⎜⎜ ⎟⎟ , ψ = ⎜⎜ ⎟⎟ , ψ 3 = = 0.039 . 256 243 5 / 243 243 ⎝ ⎠ ⎝ ⎠ 3
Поведение невязок показывает сходимость процесса более быструю, чем в классическом методе Зейделя.
44
Глава 4. Решение систем нелинейных уравнений В настоящей главе рассматриваются нелинейных уравнений с n неизвестными
методы решения системы
n
F1 ( x1 , x2 ,..., xn ) = 0
F2 ( x1 , x2 ,..., xn ) = 0
.................................. Fn ( x1 , x2 ,..., xn ) = 0
.
(1)
Иногда нам будет удобно представлять систему (1) в виде
Fi ( x1 , x2 ,..., xn ), i = 1,2,..., n ,
(2)
или сокращенно
F (x) = 0 ,
(3)
где x - вектор неизвестных. Геометрически каждое из уравнений системы (1) изображается поверхностью в n -мерном пространстве. Решением системы является точка пересечения этих поверхностей.
4.1 Метод простой итерации Представим систему (3) в виде
x = g ( x ).
(4)
x 0 , x1 , x 2 ,... - итерационная последовательность векторов. Зададим 0 начальное приближение x . Метод простой итерации описывается
Пусть
алгоритмом
( )
x k +1 = g x k .
(5)
При решении систем нелинейных уравнений, для описания расстояния между векторами x и y , удобно использовать метрику ρ( x , y ) . 45
Пространство, наделенное метрикой, называется метрическим. Пусть B полное метрическое пространство. Оператор y = g( x ) , отображает B в себя. Отображение y = g( x ) называется сжимающим, если для любых
x1 , x 2
( ( ) ( ))
(
)
ρ g x1 , g x 2 ≤ qρ x1 , x 2 , q < 1.
(6)
Теорема о сходимости метода простой итерации. Если отображение y = g ( x ) - сжимающее, то уравнение x = g ( x ) имеет решение x и
(
)
(
)
qk ρ x ,x ≤ ρ x1 , x 0 , где итерационная последовательность x k 1− q k
задается соотношением (5). Доказательство. Рассмотрим два последовательности
(
последовательных k
x ,x
k +1
вектора
итерационной
. Используя (5), (6), получаем
) (( ) (
))
(
)
(
)
ρ x k +1 , x k = ρ g x k , g x k −1 ≤ qρ x k , x k −1 ≤ ... ≤ q k ρ x1 , x 0 . m
(7) k
Рассмотрим теперь два вектора итерационной последовательности x , x , такие, что m > k . Используя неравенство многоугольника и соотношение (7), получаем
( ≤ (q
) (
) ( )ρ(x , x ) ≤ q
)
(
)
ρ x m , x k ≤ ρ x m , x m −1 + ρ x m −1 , x m − 2 + ... + ρ x k +1 , x k ≤ m −1
+ ... + q
k
1
0
k
(1 + q + ...)ρ(x
1
,x
0
)
.
Окончательно
(
m
ρ x ,x
k
)
(
qk ≤ ρ x1 , x 0 1− q
(
) k
(8)
.
m
)
Из полученного неравенства видно, что ρ x , x → 0 при k → ∞ . Согласно критерию Коши, это означает, что существует предел x
итерационной последовательности x . Покажем, что x = g ( x ) , т.е. предел итерационной последовательности является корнем уравнения (4). Переходя k
46
в (8) к пределу при
m → ∞ , получаем
(
ρ x, x
k
)
(
qk ≤ ρ x1 , x 0 1− q
)
(9)
.
Найдем расстояние между x и g ( x ) . Если x действительно является решением уравнения (4), то это расстояние должно быть равно нулю. Используя неравенство треугольника и рекуррентное соотношение (5), получаем
(
) (
) (
) (( )
)
ρ( x , g ( x )) ≤ ρ x , x k +1 + ρ x k +1 , g ( x ) = ρ x , x k +1 + ρ g x k , g ( x ) . Воспользуемся теперь неравенствами (6) и (8). Тогда имеем
(
ρ( x , g ( x )) ≤ ρ x , x
k +1
)
2q k +1 + qρ x , x ≤ ρ x1 , x 0 . 1− q
(
k
)
(
)
(10)
Неравенство (10) справедливо при любых значениях k . Переходя к пределу k → ∞ , получаем ρ( x , g( x )) = 0 . Следовательно, x = g ( x ) , что и требовалось доказать. Замечание. Исследуем, насколько удаляются друг от друга точки итерационной
x1 удалена от начальной точки x 0 на 1 0 расстояние ρ( x , x ) . Положим в неравенстве (8) k = 0 . Тогда получаем
последовательности. Первая точка
(
)
ρ xm , x0 ≤
(
1 ρ x1 , x 0 1− q
)
.
(11)
Таким образом, все элементы итерационной последовательности лежат в 0
шаре с центром x . Радиус шара в 1 ( 1 − q ) раз превышает расстояние между первой и нулевой точками последовательности.
4.2 Метод Ньютона Рассмотрим исходную систему нелинейных уравнений в форме (2). Линеаризуем эту систему, разложив каждое из уравнений в ряд Тейлора около точки
x k , удержав члены нулевого и первого порядка малости:
47
( )
( )(
)
∂Fi x k Fi x + ∑ x j − x kj = 0 , i = 1,2 ,..., n . j =1 ∂x j k
n
(12)
Геометрически это означает замену поверхностей, изображающих уравнения системы (2), на соответствующие касательные плоскости. Систему линейных уравнений (12) запишем в векторном виде
( )
( )(
)
F xk + F′ xk x − xk = 0,
( )
F′ x
где
k
(13)
( )
∂Fi x k - матрица с коэффициентами , i , j = 1,2,..., n . ∂x j
Считая эту матрицу невырожденной и вводя соответствующую обратную матрицу
(F′(x )) k
−1
, запишем
решение системы (13) в виде
( ( )) F (x ). −1
x = xk − F′ xk
k
(14)
Рассматривая решение (14), как k + 1 член итерационной последовательности, получаем рекуррентное соотношение метода Ньютона
( ( )) F (x ).
x k +1 = x k − F ′ x k
−1
k
(15)
Исследуем сходимость метода Ньютона. Пусть
X.
Ω a = {x : x − X < a} - открытый шар радиуса a с центром в точке
Пусть при некоторых 1) 2)
a > 0 , a1 ≥ 0 , a2 < ∞ выполнены условия
(F ′( x ))−1 ≤ a1 при x ∈ Ω a , 2 F (u1 ) − F (u2 ) − F ′(u2 )(u1 − u2 ) ≤ a2 u1 − u2 при u1 , u 2 ∈ Ω a ,
Обозначим
(
)
c = a1a2 , b = min a ,c −1 .
Теорема о сходимости метода Ньютона. При условиях 1, 2 и
x 0 ∈ Ωb итерационный процесс Ньютона сходится к 48
k
x с оценкой погрешности x − x ≤ c
решению
−1
(c x
0
−x
)
2k
.
Доказательство. 0
k
1. Пусть x ∈ Ω b . Индукцией по k докажем, что все x ∈ Ω b . Пусть это утверждение верно при некотором k . Докажем, что оно верно для
x k +1 , т.е. докажем, что из x k ∈ Ωb следует x k +1 ∈ Ωb . Так как
(
)
b = min a ,c −1 ≤ a , то из x k ∈ Ωb вытекает x k ∈ Ω a , т.е. Ωb ⊂ Ω a . Используя условие 2 настоящей теоремы, запишем
( )
( )(
)
2
F ( x ) − F x k − F ′ x k x − x k ≤ a2 x − x k .
( )
( )(x
Поскольку F x = − F ′ x (16) можно переписать в виде k
k
k +1
)
− xk = 0, F (x) = 0 ,
( )(
)
( )(
)
(16) неравенство
2
F ′ x k x k +1 − x ≤ a2 x − x k . Введем вектор Следовательно
y = F ′ x k x k +1 − x .
Тогда
( ( ))
x k +1 − x ≤ F ′ x k
−1
(17)
( ( ))
x k +1 − x = F ′ x k
⋅ y
−1
y.
.
Учтем условие 1 настоящей теоремы. Тогда получаем
x k +1 − x ≤ a1 y . Используя (17), имеем 2
x k +1 − x ≤ y ≤ a1a2 x k − x . Учитывая, что
(18)
a1a2 = c , x k − x < b , представим (18) в виде
49
x k +1 − x ≤ y ≤ cb 2 . Поскольку
(
(19)
)
b = min a ,c −1 ≤ c −1 ,
cb ≤ 1, видим, что
(20)
cb 2 = cb ⋅ b ≤ cb ⋅ c −1 = b . Тогда, (19) принимает вид
x k +1 − x ≤ b , следовательно
x k +1 ∈ Ωb . Что и требовалось доказать.
Таким
образом,
x 0 ∈ Ωb , все x k ∈ Ωb . 2. Полагая в (18) a1a2 = c , получаем
при
x
k +1
k
2
−x ≤c x −x .
(21)
Пусть
qk = c x k − x .
(22)
Тогда (21) принимает вид
q k +1 ≤ q k2 . Индукцией по
(23)
k докажем справедливость неравенства k
qk ≤ q02 .
(24)
При k = 0 это неравенство очевидно. Пусть оно верно при некотором Докажем, что оно верно для qk +1 :
qk +1 ≤
qk2
≤
( ) 2k q0
2
Таким образом, (24) верно при любом
=
k.
2 k +1 q0 .
k . Это означает, что 50
k
x −x ≤c
−1
(c x
0
−x
)
2k
,
(25)
что и требовалось доказать. 3. Согласно (24), для того, чтобы итерационный процесс сходился, требуется, чтобы
c x 0 − x < 1.
(26)
Учитывая, что
x0 − x < b , умножая последнее неравенство на
c и используя (20), получаем (26).
4.3 Модифицированный метод Ньютона Классический метод Ньютона обеспечивает большую скорость сходимости итерационного процесса. Однако при этом на каждом итерационном шаге необходимо решать систему линейных уравнений. В отличие от классического, модифицированный метод Ньютона использует
( )
⎧⎪ ∂Fi x 0 ⎫⎪ ′ фиксированную матрицу F = ⎨ , i , j = 1,2 ,..., n ⎬ , которая ⎪⎩ ∂x j ⎪⎭ 0 рассчитывается по начальному приближению x . Эта матрица обращается один раз, и полученная обратная матрица используется на всех шагах итерационного процесса
( ( )) F (x ).
x k +1 = x k − F ′ x 0
−1
k
(27)
Для реализации такого алгоритма не требуется решать систему на каждом шаге итерационного процесса. Однако ценой такого упрощения является более низкая скорость сходимости метода.
4.4 Метод Зейделя Вариант метода Зейделя, применимый к решению системы нелинейных уравнений (1), описывается следующим рекуррентным алгоритмом
51
( F (x
)
F1 x1k +1 , x2k ,..., xnk = 0 k +1 k +1 k 1 , x2 ,..., xn
2
)= 0
..................................
(
.
(28)
)
Fn x1k +1 , x2k +1 ,..., xnk +1 = 0 Таким образом, нахождение нового значения уравнения
(
xik +1 требует решения одного
)
Fi x1k +1 ,..., xik−+11 , xik +1 , xik+1 ..., xnk = 0 .
(29)
Уравнение решается одним из методов, развитых для нелинейных уравнений с одним неизвестным.
52
Глава 5. Минимизация функций Задачи о нахождение минимума функций одной или многих переменных являются весьма распространенными. Развитые для этой цели методы позволяют также находить решения систем уравнений. В самом деле, система нелинейных уравнений (4.1) позволяет определить функцию n
2
Φ( x ) = ∑ (Fi ( x )) .
(1)
i =1
Минимум функции
Φ( x ) соответствует решению системы (4.1).
Метода нахождения минимума разделяют на методы 0-го, 1-го, 2-го и т.д. порядка. При этом методы 0-го порядка для нахождения минимума функции используют лишь значения этой функции. Методы 1-го порядка кроме вычисления функции требуют расчета ее первой производной, методы 2-го порядка – функции, первой и второй производной и т.д. К сожалению, большинство методов позволяют найти лишь локальный минимум, ничего не говоря о глобальном минимуме. Методы, развитые для нахождения минимума функций, разумеется, пригодны и для нахождения их максимума.
5.1 Нахождение минимума функции одной переменной Проиллюстрируем основные идеи минимизации функций ни примере функций одной переменной f ( x ) . а. Метод перебора. Метод нулевого порядка нахождения минимума функции одной переменной в некотором интервале значений аргумента. Рассчитываются значения функции для некоторого набора значений аргумента (например, с постоянным шагом). Среди найденных значений функции выбирается минимальной. Метод позволяет найти глобальный минимум функции. б. Симплекс-метод. Метод нулевого порядка, основанный на построении симплекса. В одномерном случае симплекс сводится к отрезку. Пусть 0
1
начальный отрезок имеет координаты x , x . Рассчитаем значения минимизируемой функции в этих двух точках. Для построения нового отрезка точку, в которой функция имеет большее из двух значений, отбросим. Вместо нее выберем точку, симметрично отраженную от второй точки. Теперь отрезок состоит из одной новой точки и одной старой. 53
Рассчитаем значение функции в новой точке. Сравним его с уже рассчитанным значением в старой точке. И так далее. Описанный алгоритм приводит к перемещению отрезка в сторону уменьшения функции. Если отрезок приходит в «колебательный режим», это означает, что мы достигли минимума с точностью, задаваемой длиной нашего отрезка. Метод требует меньшего числа вычислений, чем метод перебора, но позволяет найти лишь локальный минимум. в. Градиентный метод. Метод первого порядка, основанный на том, что при положительной производной f ′( x ) функция f ( x ) возрастает, а при и отрицательной – убывает. Построим итерационную последовательность
( )
x k +1 = x k − ε f ′ x k ,
xk :
(2)
ε > 0 - малый параметр. Видно, что при положительной производной x k +1 < x k , а при отрицательной - x k +1 > x k , т.е. каждый следующий
где
элемент последовательности ближе к минимуму, чем предыдущий. Метод позволяет найти лишь локальный минимум.
г. Метод Ньютона. Метод второго порядка. Для построения итерационной последовательности, разложим функцию f ( x ) в ряд Тейлора около k
значения аргумента x до членов второго порядка:
( )
( )(
y = f xk + f ′ xk x − xk
)+ f ′′(x )(x −2x ) k
k 2
.
(3) k
Мы заменили исследуемую функцию параболой, имеющей в точке x то же значение, наклон и кривизну, что и исследуемая функция. Найдем минимум квадратичной функции (3)
( )
и будем рассматривать последовательности:
x
k +1
его
k
как
( ) ( )
k
)
новый
f ′ xk . =x − f ′′ x k k
( )
f ′ xk . x − x = 0, x = x − f ′′x k
( )(
y′ = f ′ x + f ′′ x k
k
элемент
(3)
итерационной
(4)
54
Построенный итерационный сходится быстрее, чем описанный выше градиентный метод.
5.2 Нахождение минимума функции многих переменных Рассмотрим основные методы минимизации функций многих переменных
y = f ( x1 ,..., xn ) ≡ f ( x ) . а. Метод перебора. Как и в случае функций одной переменной, метод сводится к расчету набора значений функции в некоторой области и выбору минимального значения. Метод позволяет найти глобальный минимум функции. Для задач с высокой размерностью приводит к недопустимо большому количеству вычислений. б. Симплекс-метод. Это своеобразный метод нулевого порядка, основанный на построении симплекса – множества равноудаленных точек, в количестве на единицу превышающем размерность пространства. В двумерном случае симплекс – это равносторонний треугольник. В трехмерном случае – правильная треугольная пирамида. На начальном шаге итерационного процесса даются координаты исходного симплекса и в них рассчитываются значения минимизируемой функции. Среди вершин симплекса находится та, в которой функция имеет наибольшее значение. Для построения нового симплекса эта вершина отбрасывается. Вместо нее выбирается новая вершина, симметрично отраженная от плоскости, проведенной через остальные вершины. В новой вершине рассчитывается значение функции. В старых же вершинах, вошедших в новый симплекс, значения функции уже известны. Снова находится вершина, в которой функция имеет наибольшее значение. И так далее. Ключевым моментом является то, что на каждом шаге итерационного процесса требуется расчет функции лишь в одной точке. Для минимизации функций в многомерных пространствах это оказывается очень важным. в. Градиентный метод. Метод первого порядка, основанный на том факте, что градиент функции направлен в направлении ее наибольшего возрастания. Соответственно, двигаясь в сторону противоположную градиенту, мы приближаемся к минимуму функции. Итерационная последовательность градиентного метода имеет вид
( ( ))
x k +1 = x k − ε ⋅ grad f x k .
(5)
55
г. Метод Ньютона. Метод второго порядка. Разложим функцию Тейлора около значения аргумента
( )
( )(
f ( x ) в ряд
x k до членов второго порядка:
)
(
)(
)
1 n ∂ 2 fx k ∂f x k k xi − xi + ∑ k k xi − xik x j − x kj . y = f x +∑ k 2 i , j =1 ∂xi ∂x j i =1 ∂xi k
n
(6) Найдем минимум квадратичной формы (6)
( )
( )(
)
n ∂y ∂f x k ∂2 f xk = + ∑ k k xi − xik = 0 . k ∂xm ∂xm i ∂xi ∂xm
Введем
( )
f ′ xk
( )
f ′′ x k
матрицу
( )
( )
(7)
n
⎧∂ 2 f x k ⎫ =⎨ k k ⎬ и ∂ ∂ x x ⎩ i m ⎭i ,m =1
вектор
градиента
n
⎧ ∂f x k ⎫ =⎨ . Запишем систему уравнений в виде k ⎬ ⎩ ∂xm ⎭m =1
(
)
f ′′ ⋅ x − x k = − f ′ . Для того чтобы функция матрица
( )
f ′′ x k
(8)
f ( x ) имела минимум в окрестности точки x k ,
должна
быть
положительно
определенной,
следовательно, невырожденной. Вводя обратную матрицу запишем решение системы (8) в виде
( ( )) f ′(x ).
x = x k − f ′′ x k
−1
k
( f ′′(x )) k
а,
−1
,
(9)
Если бы функция f ( x ) была квадратичной, мы за один шаг получили бы точное положение ее минимума. В общем случае мы будем рассматривать x лишь как новый шаг итерационной последовательности
( ( )) f ′(x ).
x k +1 = x k − f ′′ x k
−1
k
(10)
56
Построенный итерационный сходится быстрее, чем описанный выше градиентный метод, однако требует на каждом шаге решения системы линейных алгебраических уравнений. д. Метод покоординатного спуска. Напоминает метод Зейделя решения нелинейных систем уравнений. На первом итерационном шаге фиксируются все переменные кроме первой. По выбранной переменной находится минимум, используя методы минимизации функций одной переменной. На втором итерационном шаге находится минимум функции по второй переменной, и т.д. После n шагов итерации мы вновь возвращаемся к первой переменной.
57
Глава 6. Интерполяция функций Пусть функция y = f ( x ) задана на интервале [a ,b], но ее значения известны лишь в конечном наборе точек. Требуется восстановить функцию по этой информации. Точнее, требуется найти такую функцию F ( x ), которая на заданном наборе точек x0 , x1 ,..., xn принимала бы те же значения, что и исходная функция, а в остальных точках интервала была бы близка к ней. Такая функция F ( x ) называется интерполирующей, а точки
xi , i = 0 ,1,...,n - узлами интерполяции.
Подобные задачи часто возникают на практике, например при обработке экспериментальных данных, когда значение переменной y , зависящей от x , измеряется в конечном числе точек или при работе с табличными функциями, если требуется вычислить y = f ( x ) при значениях аргумента, не совпадающего ни с одним из табличных значений. Ограничимся рассмотрением линейной интерполяции. В этом случае интерполирующая функция ищется в виде линейной комбинации некоторого набора функций ϕ0 ( x ),ϕ1 ( x ),...,ϕn ( x ) : n
F ( x ) = ∑ ci ϕi ( x ) ,
(1)
i =0
Коэффициенты ci подбираются так, чтобы интерполирующая функция совпадала с исходной в узлах интерполяции: n
∑ ci ϕi (x j ) = f (x j ),
j = 0 ,1,..., n .
(2)
i =0
Отсюда видно, что количество коэффициентов ci должно равняться количеству узлов интерполяции. Для того, чтобы система линейных уравнений (2) была разрешимой относительно коэффициентов ci , ее определитель должен быть отличен от нуля:
ϕ0 ( x0 ) ϕ1 ( x0 ) K ϕn ( x0 ) ϕ0 ( x1 ) ϕ1 ( x1 ) L ϕn ( x1 ) ≠ 0. M M M M ϕ0 ( xn ) ϕ1 ( xn ) L ϕn ( xn )
(3)
58
Необходимым (но не достаточным) условием для этого является линейная независимость набора функций ϕ0 ( x ),ϕ1 ( x ),...,ϕn ( x ) . В частности, широкое распространение получило интерполирование с помощью степенных функций:
ϕ0 ( x ) = 1, ϕ1 ( x ) = x , ϕ2 ( x ) = x 2 ,...,ϕn ( x ) = x n . В этом случае интерполирующая функция представляет собой полином степени n : n
F ( x ) = Pn ( x ) = ∑ ci x i
(4)
i =0
c неизвестными коэффициентами нахождения коэффициентов
ci , i = 0 ,1,..., n . Тогда уравнение (2) для
ci приобретает вид
n
∑ ci xij = f (x j ),
j = 0 ,1,..., n .
(5)
i =0
Определителем этой системы является определитель Ван-дер-Монда:
1 x0 K x0n 1 x1 L x1n M
M
M
M
.
1 xn L xnn В нашем случае этот определитель отличен от нуля, поскольку все узлы интерполирования различны между собой.
6.1. Интерполяционный полином Лагранжа Задача линейной интерполяции полиномами требует решения системы линейных уравнений (5) для определения коэффициентов полиномов. Лагранж предложил способ построения интерполирующих полиномов, не требующий решения системы уравнений. 59
Рассмотрим сначала простейший пример. Пусть значения функции f ( x ) известны в двух точках x0 , x1 . Построить линейную функцию, принимающую в этих точках значения вспомогательные линейные функции
Q1,0 ( x ) =
f ( x0 ), f ( x1 ) . Построим сначала две
x − x1 x − x0 , Q1,1 ( x ) = . x0 − x1 x1 − x0
(6)
Q1,0 ( x ) равна единице в точке x0 и нулю в точке x1 . Вторая же функция Q1,1 ( x ) равна единице в точке x1 и нулю в точке x0 . Первая из функций
Тогда искомый полином запишем в виде:
P1 ( x ) = f ( x0 )Q1,0 ( x ) + f ( x1 )Q1,1 ( x ).
(7)
Видно, что построенный полином имеет первый порядок и принимает в точках x0 и x1 требуемые значения. Для того чтобы построить интерполяционный полином второго порядка методом Лагранжа, введем три вспомогательные квадратичные функции
( x − x1 )( x − x2 ) , Q ( x ) = ( x − x0 )( x − x2 ) , ( x0 − x1 )( x0 − x2 ) 2 ,1 ( x1 − x0 )( x1 − x2 ) . ( )( ) x − x0 x − x1 Q2 ,2 ( x ) = ( x2 − x0 )( x2 − x1 )
Q2 ,0 ( x ) =
(8)
Каждая из этих функций равна единице в одном из узлов, а в двух других равна нулю. Искомый полином может быть представлен в виде:
P2 ( x ) = f ( x0 )Q2 ,0 ( x ) + f ( x1 )Q2 ,1 ( x ) + f ( x3 )Q2 ,3 ( x ). Рассмотрим, наконец, построение полинома Лагранжа этого введем набор полиномов n - го порядка:
(9)
n - го порядка. Для
60
( x − x1 )( x − x2 )...( x − xn ) , ( x0 − x1 )( x0 − x2 )...( x0 − xn ) ( x − x0 )...( x − xi −1 )( x − xi +1 )...( x − xn ) , Qn ,i ( x ) = ( xi − x0 )...( xi − xi −1 )( xi − xi +1 )...( xi − xn ) Qn ,0 ( x ) =
(10)
................................................................................... Qn ,n ( x ) =
( x − x0 )( x − x1 )...( x − xn −1 ) . ( xn − x0 )( xn − x1 )...( xn − xn −1 )
или
(x − x j ) . j = 0 (xi − x j )
j =n
Qn ,i ( x ) = ∏
(11)
j ≠i
Видно, что
Qn ,i ( x ) - полиномы степени n , такие, что
1, x = xi ⎧ Qn ,i ( x ) = ⎨ ⎩0 , x = x j , j ≠ i Иногда нам будет удобно записывать
Qn ,i ( x ) =
Искомый полином
,
(12)
Qn ,i ( x ) в виде
( x − x0 )...[i ]...( x − xn ) . ( xi − x0 )...[i ]...( xi − xn )
(13)
Pn ( x ) представим в виде n
Pn ( x ) = ∑ f ( xi )Qn ,i ( x ),
(14)
i =0
Pn ( x ) действительно является интерполяционным полиномом для функции f ( x ) на сетке с Из (10) и (14) видно, что построенный полином
61
узлами x0 , x1 ,..., xn . Его принято называть интерполяционным полиномом в форме Лагранжа. Возможны и другие эквивалентные представления интерполяционного полинома Pn ( x ) . С одним из них мы познакомимся в следующем разделе.
6.2. Интерполяционный полином Ньютона Интерполяционный полином в форме Лагранжа неудобен для вычислений тем, что при увеличении числа узлов интерполяции приходится перестраивать весь полином заново. Перепишем интерполяционный полином Лагранжа в эквивалентной форме: n
Pn ( x ) = P0 ( x ) + ∑ (Pi ( x ) − Pi −1 ( x )), n ≥ 1 ,
(15)
i =1
Pi ( x ) - полиномы Лагранжа степени i ≤ n , соответствующие узлам интерполирования x0 , x1 ,..., xi . Здесь
где
P0 ( x ) ≡ f ( x0 )
(16)
- полином нулевой степени. Полином
Qi ( x ) = Pi ( x ) − Pi −1 ( x ) i и по построению обращается в нуль x = x0 , x = x1 ,..., x = xi −1 , поэтому его можно представить в виде
имеет
степень
Qi ( x ) = Ai ( x − x0 )( x − x1 )...( x − xi −1 ) , где
(17) при
(18)
Ai - числовой коэффициент при x i . Поскольку Pi −1 ( x ) не содержит
степени
xi , то Ai просто совпадает с коэффициентом при xi в полиноме
Pi ( x ) . Согласно (10) и (14), его можно записать в виде Ai =
i
∑
k =0
f ( xk ) , ωk ,i
(19)
где 62
ωk ,i = ( xk − x0 )...( xk − xk −1 )( xk − xk +1 )...( xk − xi ) .
(20)
При этом
A0 = f ( x0 ) .
(21)
Формулы (17) и (18) позволяют написать рекуррентное соотношение для полинома Pn ( x ) :
Pn ( x ) = Pn −1 ( x ) + An ( x − x0 )...( x − xn −1 ) .
(22)
Используя (16), (22), получаем окончательную формулу для полинома Pn ( x ) :
Pn ( x ) = A0 + A1 ( x − x0 ) + A2 ( x − x0 )( x − x1 ) + ...
+ Ai ( x − x0 )...( x − xi −1 ) + ...An ( x − x0 )...( x − xn −1 )
.
(23)
Представление (23) удобно для вычислителя, поскольку увеличение n на единицу требует только добавления к «старому» многочлену одного дополнительного слагаемого. Такое представление интерполяционного полинома Pn ( x ) называют интерполяционным полиномом в форме Ньютона.
6.3. Погрешность интерполяции Оценим
отклонение
интерполяционного
интерполируемой функции f ( x ) на отрезке погрешность (остаточный член)
полинома
[a ,b].
Rn ( x ) = f ( x ) − Pn ( x ), x ∈ [a ,b].
Pn ( x )
от
Для этого введем
(24)
По определению интерполяционного полинома
Rn ( xi ) = 0 , i = 0,1,..., n ,
(25) 63
поэтому речь идет об оценке Rn ( x ) при значениях x ≠ xi . Для того чтобы это сделать, введем дополнительно предположение о гладкости функции f ( x ) . Пусть эта функция имеет непрерывную
n + 1 на отрезке [a ,b]. В силу (25) Rn ( x ) можно представить в виде
производную порядка
Rn ( x ) = ωn +1 ( x )rn ( x ) , где
(26)
ωn +1 ( x ) - полином n + 1 -й степени: ωn +1 ( x ) = ( x − x0 )( x − x1 )...( x − xn ) .
Зафиксируем произвольное вспомогательную переменную
t
значение x ∈ [a ,b] и функцию от нее:
(27) и
рассмотрим
g (t ) = f (t ) − Pn (t ) − ωn +1 (t )rn ( x ) , заданную на отрезке
[a ,b]и
содержащую переменную
параметра. В силу своего определения функция
x в качестве
g (t ) должна обращаться в
t = xi . Кроме того, согласно (24), (26), g (t ) должна обращаться в нуль при t = x . Таким образом, g (t ) имеет по крайней мере n + 2 нуля: нуль в узлах интерполирования
g ( xi ) = 0 , i = 0 ,1,..., n , g ( x ) = 0 .
(28)
x ∈ [x0 , xn ], то все эти нули также лежат на отрезке [x0 , xn ]. Если x < x0 , то эти нули, вообще говоря, принадлежат отрезку [x , xn ], а если x > xn , то они находятся на отрезке [x0 , x ]. Объединяя эти три случая, скажем, что указанные нули функции g (t ) принадлежат отрезку [α,β] , где α = min( x0 , x ) ≥ a , β = max( xn , x ) ≤ b . Согласно теореме Ролля, можно утверждать, что производная g ′(t ) имеет по крайней мере n + 1 нуль на отрезке [α,β] (эти нули перемежаются с нулями самой функции g (t ) . Повторяя это рассуждение, видим, что g ′′(t ) имеет по крайней мере n нулей на отрезке [α,β] и, наконец, g ( n +1 ) (t ) обращается хотя бы один раз в нуль в некоторой точке t = ξ ∈ [α ,β], т.е.
Если
64
g ( n +1 ) (ξ ) = f ( n +1 ) (ξ ) − Pn( n +1 ) (ξ ) − (n + 1)! ⋅ rn ( x ) = 0 . Учитывая, что (n + 1) -я производная полинома степени равна нулю, получаем, что
f ( n +1 ) (ξ ) rn ( x ) = , ξ ∈ [α ,β]. (n + 1)!
n тождественно
(29)
и, согласно (26),
f ( n +1 ) (ξ ) Rn ( x ) = ω ( x ). (n + 1)! n +1
(30)
Формула (30) не позволяет вычислить погрешность, поскольку точное значение аргумента ξ нам неизвестно. Однако с ее помощью погрешность можно оценить:
Rn ( x ) ≤
M n +1 ω (x ) . (n + 1)! n +1
(31)
где
M n +1 = max f (n +1) ( x ) ≤ max f [n +1] ( x ) . x∈[α ,β ]
Обсудим роль полинома имеет
(n + 1)
x∈[a ,b ]
(32)
ωn +1 ( x ) (27) в оценке (31). На отрезке [x 0 , x n ] он
нуль, а его значения между этими нулями сравнительно
x выходит за пределы отрезка [x0 , xn ] и удаляется от точки x0 влево или от точки x n вправо, оценка (31) ухудшается из-за быстрого роста функции ωn +1 ( x ) . Итак, если x ∈ [x0 , xn ] , то множитель ωn +1 ( x ) не ухудшает оценку (31). Такой случай называют собственно интерполяцией функции f ( x ) . Противоположный случай, когда точка x лежит вне отрезка, называют экстраполяцией функции f ( x ) . Отмеченная выше особенность поведения полинома ωn +1 ( x ) резко ухудшает оценку (32) невелики, но когда точка
при экстраполяции. 65
6.4 Сходимость интерполяционного процесса Поставим вопрос: будут ли сходиться интерполяционные полиномы Pn ( x ) к интерполируемой функции f ( x ) на отрезке [a ,b] при неограниченном возрастании числа узлов n ? Упорядоченное множество точек xi , i = 0 ,1,..., n , назовем сеткой на
отрезке [a ,b ] и обозначим возрастающим числом узлов
{ }
Ω n . Рассмотрим последовательность сеток с
{
}
{
}
Ω 0 = x0( 0 ) , Ω1 = x0( 1 ) , x1( 1 ) ,..., Ω n = x0( n ) , x1( n ) ,..., xn( n ) ,... и отвечающую ей последовательность интерполяционных полиномов построенных для фиксированной непрерывной на отрезке
f (x) .
[a ,b] функции
Интерполяционный процесс для функции сходится в точке если
существует
предел
Pn ( x ) ,
x* ∈ [a ,b],
lim Pn ( x* ) = f ( x* ) . Наряду с обычной
n→∞
(поточечной) сходимостью, часто рассматривается сходимость в различных нормах. Так, равномерная сходимость на отрезке [a ,b ] означает, что
max f ( x ) − Pn ( x ) → 0 при n → ∞ .
x∈[a ,b ]
Сходимость или расходимость интерполяционного процесса зависят как от выбора последовательности сеток, так и от гладкости функции f ( x ) . Если
f ( x ) - целая аналитическая функция, то при произвольном расположении узлов на отрезке [a ,b ], интерполяционный многочлен Pn ( x ) равномерно сходится к f ( x ) при n → ∞ . Положение резко меняется, если производные функции разрывны или не существуют в отдельных точках. Например, для функции f ( x ) = x на
отрезке [− 1, 1], покрытом равномерной сеткой узлов, значения Pn ( x ) между узлами интерполяции неограниченно возрастают при n → ∞ . Вместе с тем для заданной непрерывной функции f ( x ) за счет выбора сеток можно
добиться сходимости, притом равномерной на [a ,b ]. Однако построить такие сетки довольно сложно, и, главное, такие сетки «индивидуальны» для каждой конкретной функции. Объем вычислений при построении интерполяционного полинома быстро нарастает с ростом n . Поэтому на практике избегают пользоваться интерполяционными полиномами высокой степени. Более распространенной является интерполяция сплайнами, которую мы обсудим ниже. 66
6.5 Интерполяционный полином Эрмита Расширим постановку задачи об интерполяции. Ранее полагалось, что в узлах интерполяции заданы только значения функции f ( x ) . Пусть теперь в узлах xk ∈ a ,b , k = 0 ,1,..., m , среди которых нет совпадающих,
[ ]
заданы (i )
значения
функции
f ( xk )
и
ее
производных
f ( xk ), i = 1,2,..., N k − 1 до N k − 1-го порядка включительно. Числа N k при этом называют кратностью узла xk . В каждой точке xk , таким образом, задано N k величин: f ( xk ), f ′( xk ),..., f ( N k −1) xk . В общей сложности на всей совокупности узлов
x0 , x1 ,..., xm известно
N 0 + N1 + ... + N m величин, что дает возможность ставить вопрос о построении полинома H n ( x )степени n = N 0 + ... + N m − 1,
(33)
удовлетворяющего требованиям
H n(i ) ( xk ) = f (i ) ( xk ), k = 0 ,1,..., m; i = 0,1,..., N k − 1.
(34)
Такой полином называется интерполяционным полиномом Эрмита для функции f (x) . Рассмотренный ранее вариант построения интерполяционного полинома
Pn ( x ) по известным значениям функции
f ( x ) в узлах интерполяции является частным случаем построения полинома Эрмита при условии, что все узлы простые: N k = 1, k = 0 ,1,..., m.
Докажем, что интерполяционный полином Эрмита существует и является единственным. Представим его в стандартном виде:
H n ( x ) = a0 + a1 x + ... + an x n . Наше утверждение будет справедливо, если показать, что коэффициенты a0 , a1 ,..., an определяются из условий (34), и притом единственным образом. Условия представляют собой систему линейных алгебраических уравнений относительно этих коэффициентов, причем число уравнений равно числу неизвестных, а именно: N 0 + N1 + ... + N m = n + 1. Для того, 67
чтобы эта система была однозначно разрешима, соответствующая ей однородная система должна иметь только тривиальное (нулевое) решение. Рассмотрим соответствующую однородную систему
H n( i ) ( xk ) = 0 , k = 0 ,1,..., m , i = 0 ,1,..., N k −1 .
(35)
xk являются корнями полинома H n ( x ) кратности N k . Мы видим, таким образом, что полином H n ( x )имеет, с учетом кратности, не менее N 0 + N1 + ... + N m = n + 1. Поскольку его степень равна n , то он должен тождественно равняться нулю. Это означает, что a0 = a1 = ... = an = 0 , т.е. однородная система уравнений (35) имеет Уравнения (35) указывают на то, что числа
только тривиальное решение. Отсюда следует, что неоднородная система (34) при любой правой части разрешима, и притом единственным образом. Исследование погрешности интерполирования полинома Эрмита Rn ( x ) = f ( x ) − H n ( x ) почти дословно повторяет проведенное ранее исследование для полинома с простыми узлами
f ( xk ) . Достаточно представить Rn ( x ) в виде
xk , в которых заданы только
Rn ( x ) = rn ( x )ωn +1 ( x ) ,
(36)
где
ωn +1 ( x ) = ( x − x0 )
N0
( x − x1 )N ...( x − xm )N 1
m
,
n + 1 = N 0 + ... + N m ,
(37)
и рассмотреть функцию
g (t ) = f (t ) − H n (t ) − rn (t )ωn +1 (t ). Применяя теорему Ролля к функции g (t ) и ее производным, с учетом кратности корней в узлах t = x k и условия g ( x ) = 0 , придем к формуле
f (n +1)( ξ ) f (x ) − H n (x) = ω (x). (n + 1)! n +1
(38) 68
С ее помощью можно написать оценку типа (31):
Rn ( x ) ≤
M n +1 ωn +1 ( x ) . (n + 1)!
(39)
M n +1 - максимальное значение модуля функции f (n +1) ( x ) . Здесь полином ωn +1 ( x ) (37) является обобщением полинома (27) на случай где
кратных корней. Построение полинома Эрмита в общем случае при произвольном числе узлов и их произвольной кратности приводит к довольно громоздким выражениям и редко используется.
6.6 Интерполирование сплайнами Увеличение степени интерполяционного полинома может оказаться невыгодным из-за быстрого роста объема вычислений. К тому же далеко не всегда оно приводит к повышению точности. Во второй половине XX века с появлением компьютеров и развитием современной вычислительной математики при обработке больших таблиц получила развитие новая идея строить приближение функций с помощью кусочно-полиномиальной интерполяции с использованием полиномов сравнительно невысоких степеней. Наиболее удобными оказались полиномы третьей степени. Такие конструкции получили название кубических сплайнов. Пусть на отрезке
[a ,b]задана функция
y = f ( x ). Рассмотрим сетку
узлов
a = x0 < x1 < x2 < ...xn = b и обозначим через
(40)
hi расстояние между смежными узлами: hi = xi − xi −1 , i = 1,...,n .
Определение.
y = f ( x ),
Назовем кубическим x ∈ [a ,b] на сетке (41) функцию
(41)
сплайном функции S ( x ) , удовлетворяющую
условиям: 1. На каждом отрезке xi −1 , xi функция S ( x ) является полиномом третьей степени. 2. Функция S ( x ) , ее первая S ′( x ) и вторая S ′′( x ) производные непрерывны
[
]
69
[a ,b]. 3. S ( xi ) = f ( xi ) =
на сегменте
f i , i = 0,1,..., n . 4. На концах сегмента [a ,b ] функция S ′′( x ) удовлетворяет дополнительным условиям S ′′(a ) = S ′′(b ) = 0 . Замечание. На концах сегмента [a ,b ] могут быть заданы в принципе и другие условия, например: S ′′(a ) = A, S ′′(b ) = B . Построение сплайна. Сведем задачу построения сплайна к отысканию коэффициентов упомянутых полиномов третьей степени на каждом из отрезков [xi −1 , xi ]. Для этого сопоставим отрезку [xi −1 , xi ] полином Si ( x ) , для удобства записанный в виде
ci ( x − xi )2 + di x − xi 3 , 2 6 x ∈ [xi −1 , xi ], i = 1,..., n.
Si ( x ) = ai + bi ( x − xi ) +
(42)
При этом очевидно, что
Si′( x ) = bi + ci ( x − xi ) +
di ( x − xi )2 , 2
Si′′( x ) = bi + d i ( x − xi ),
(43) (44)
так что
Si ( xi ) = ai , Si′( xi ) = bi , Si′′( xi ) = ci . Для выполнения требования 3 в узлах интерполяции с номерами следует положить
ai = f ( xi ), i = 1,..., n.. Требуя непрерывности сплайна в узлах условия 3 при i = 0 , получаем
(45)
i = 1,..., n (46)
xi , i = 1,..., n − 1 , и выполнения
Si ( xi −1 ) = f i −1 , i = 1,..., n ,
(47) 70
или
f i + bi ( xi −1 − xi ) +
ci d 2 3 xi −1 − xi + i ( xi −1 − xi ) = f i −1 , i = 1,..., n , 2 6
Это равенство можно переписать следующим образом:
bi hi − Условие
ci 2 d i 3 hi + hi = f i − f i −1 , i = 1,..., n . 2 6 2
непрерывности
первой
производной
xi , i = 1,..., n − 1 , принимает вид
(48)
S ′( x ) в узлах
Si′( xi −1 ) = Si′−1 ( xi −1 ) = bi −1 , i = 2,..., n ,
(49)
и приводит к соотношениям
bi − ci hi +
di 2 hi = bi −1 , i = 2 ,...,n , 2
или
ci hi −
di 2 hi = bi − bi −1 , i = 2,...,n , 2
Аналогичным образом условия непрерывности второй производной тех же узлах
(50)
S ′′( x ) в
Si′′( xi −1 ) = Si′′−1 ( xi −1 ) = ci −1 , i = 2 ,..., n ,
(51)
d i hi = ci − ci −1 , i = 2,..., n.
(52)
означают, что
Наконец, дополнительные граничные условия 4 дают еще два уравнения:
S1′′( x0 ) = S1′′(a ) = c1 − d1h1 = 0 , S n′′( xn ) = S n′′(b ) = cn = 0.
(53)
71
В итоге мы получили замкнутую систему (48), (50, (52) ,(53), содержащую в 3n линейных уравнений для отыскания 3n неизвестных: сумме bi ,ci ,di , i = 1,2,..., n . Приведение системы уравнений для коэффициентов сплайна к трехдиагональному виду. Удобно формально ввести еще одно неизвестное c0 , положив при этом, что оно равно нулю, и первое уравнение в (53) переписать в виде d 1 h1 = c1 − c 0 , т.е. в форме, аналогичной (52). Теперь уравнения (52) и (53) можно представить в единообразном виде:
d i hi = ci − ci −1 , i = 1,..., n.
(54)
c0 = 0 , cn = 0.
(55)
Обратим внимание на то, что из системы (54) можно выразить все коэффициенты d i через разности ci − ci −1 , а затем из системы (48) выразить через ci и ci −1 коэффициенты bi . Подставляя полученные выражения в (50), приходим к системе линейных уравнений для ci :
⎛ f − f i −1 f i −1 − f i − 2 ⎞ 1 2 1 ⎟⎟ , ci − 2 hi − 2 + ci −1 (hi −1 + hi ) + ci hi = 2⎜⎜ i − 3 3 3 h h ⎝ ⎠ (56) i i −1 i = 2 ,3,..., n Сдвигая индекс уравнений (56):
i на единицу, получаем симметричную форму записи
⎛f −f f − f i −1 ⎞ ⎟⎟ , hi ci −1 + 2(hi + hi +1 )ci + hi +1ci +1 = 6⎜⎜ i +1 i − i hi ⎠ ⎝ hi +1 i = 1,2 ,..., n − 1.
(57)
Кроме того, согласно (55)
c0 = cn = 0. Система (57) содержит
[n − 1]
уравнение с
(58)
(n − 1) -й
неизвестной: 72
c1 ,c2 ,...,cn −1 .
Величины
c0
и
cn определены
дополнительными
соотношениями (58). Если сетка (40) равномерная, т.е. hi уравнения (57) принимают особенно простой вид:
ci −1 + 4ci + ci +1 = 6
f i −1 − 2 f i + f i +1 . 2 h
= h = const , то
(59)
Для уравнений системы (57) выполнено условие диагонального преобладания. Отсюда следует существование и единственность решения задачи (57), (58). Зная величины ci , можно рассчитать остальные коэффициенты сплайна по формулам
ci − ci −1 , i = 1,..., n , hi
(60)
1 1 2 f − f i −1 bi = hi ci − hi d i + i , i = 1,..., n , 2 6 hi
(61)
di =
завершив тем самым построение сплайна. Замечание о решении системы. Уравнения (57) имеют так называемую трехточечную структуру, общий вид таких систем
Ai yi −1 + Ci yi + Bi yi +1 = Fi , i = 1,2 ,..., n − 1, y0 = 0 , y n = 0
(62) (63)
соответствует системе линейных уравнении с трехдиагональной матрицей для определения вектора неизвестных y = ( y1 , y2 ,..., yn −1 ) :
Ty = F ,
T
(64)
При этом легко видеть, что в нашем случае
Ci > Ai + Bi , i = 1,..., n − 1,
(65)
поскольку
Ci = 2(hi + hi +1 ), Ai = hi , Bi = hi +1 .
(66) 73
Как было показано в гл. 2, решение подобных систем эффективно осуществляется методом прогонки. Сходимость и точность интерполирования сплайнами. При обсуждении эффективности численного метода в первую очередь обращают внимание на две характеристики. 1. Сходимость означает, что приближенное решение задачи стремится к точному решению. 2. Точность - это характеристика близости приближенного решения к точному. Пусть на сегменте
[a ,b]задана функция f ( x ) и построена сетка
a = x0 < x1 < x2 < ... < xn = b; hi = xi − xi −1 > 0. Определим максимальный шаг сетки
h = max hi . 1≤ i≤ n
Приведем без доказательства две теоремы. Теорема 1. Пусть f ( x ) непрерывна на сегменте
ε>0
можно указать удовлетворяющей условию
[a ,b], тогда для любого
δ(ε ) > 0 такое, что при любой h < δ , справедливо неравенство
сетке,
f ( x ) − S ( x ) < ε , ∀x ∈ [a ,b],, иными словами,
S ( x ) при h → 0 равномерно сходится к функции f ( x ) .
f ( x ) имеет на сегменте [a ,b] четыре непрерывных производных и дополнительно удовлетворяет условию f ′′(a ) = f ′′(b ) = 0 . Теорема 2. Пусть
Тогда имеют место неравенства:
f ( x ) − S ( x ) < M 4 h 4 , ∀x ∈ [a ,b] ,
(67)
f ′( x ) − S ′( x ) < M 4 h3 , ∀x ∈ [a ,b],
(68)
f ′′( x ) − S ′′( x ) < M 4 h 2 , ∀x ∈ [a ,b],
(69)
74
M 4 = max f ( 4 ) x .
(70)
x∈[ a ,b ]
Глава 7. Аппроксимация функций Пусть имеется семейство функций (например, параметризованное некоторым набором параметров) и функция F , вообще говоря, не принадлежащая этому семейству. Требуется найти функцию из данного семейства , наиболее близкую к функции F . Такая задача является весьма общей. Можно рассматривать функции одной переменной или многих переменных. Функция F может быть известной во всех точках области определения или же в некотором достаточно большом наборе точек. При этом, в отличие от задачи интерполяции, не предполагается, что аппроксимирующая функция будет в этом наборе точек принимать те же значения, что и исходная функция.
7.1 Метод наименьших квадратов В этом случае задача построения функции непрерывного аргумента по дискретной информации характеризуется двумя особенностями. 1.Число точек, в которых проводятся измерения, обычно бывает достаточно большим. 2. Значения аппроксимируемой функции yi в точках сетки определяются приближенно в связи с неизбежными ошибками измерения. С учетом этих обстоятельств, строить аппроксимирующую функцию в виде суммы большого числа слагаемых и добиваться ее точного равенства значениям аппроксимируемой функции в точках сетки, как это делалось при интерполировании, становится нецелесообразным. В методе наименьших квадратов аппроксимирующая функция y = F ( x ) ищется в виде суммы, содержащей сравнительно небольшое число слагаемых:
F (x ) =
m
∑ ak ϕk ( x ),
m < n,
(1)
k =0
в частности, возможен вариант m 0 .
(2)
[a ,b] среднюю точку ξ = (b + a ) / 2 и вычислим в ней значение функции f (ξ ) . Если f (ξ ) = 0 , то ξ является искомым корнем. При f (ξ ) > 0 , в качестве нового отрезка [a1 ,b1 ] выберем отрезок [a ,ξ], а при f (ξ ) < 0 в качестве нового отрезка [a1 ,b1 ] выберем отрезок [ξ,b ]. Новый отрезок [a1 ,b1 ] также содержит корень c , но имеет вдвое меньшую длину. Повторяя эту процедуру n раз мы получаем отрезок [an ,bn ], Возьмем на отрезке
h0 , где h0 - длина исходного n 2 отрезка [a ,b ]. Длина отрезка hn представляет собой точность ε , с которой мы знаем положение корня на n - шаге процесса половинного деления.
содержащий корень
c и имеющий длину hn =
Метод касательных (метод Ньютона) Метод касательных, является одним из наиболее эффективных численных методов решения уравнения (1). Идея метода состоит в следующем. Предположим, что функция f ( x ) , имеющая корень c на
отрезке [a ,b ], дифференцируема на этом отрезке и ее производная f ′( x )не обращается на нем в нуль. Пусть приближенное значение корня функции, 94
n -м итерационном шагу равно xn . Для получения n + 1 -го приближения, запишем уравнение касательной к графику функции f ( x ) в
рассчитанное на этой точке:
y = f ( xn ) + f ′( xn )( x − xn ) .
(3)
В качестве n + 1-го приближения для корня выберем точку ресечения касательной с осью абсцисс. Согласно (3)
xn+1 пе-
f ( xn ) + f ′( xn )( xn +1 − xn ) = 0 . Следовательно, рекуррентная формула нахождения корня по методу касательных имеет вид
xn +1 = xn −
f ( xn ) . f ′( xn )
(4)
Метод секущих Предположим, для определенности, что функция конце отрезка
f ( x ) принимает на левом
[a ,b] отрицательное значение, на правом - положительное: f (a ) < 0,
f (b ) > 0 .
(5)
[a ,b] существует корень c функции f ( x ) . Проведем прямую линию через точки с координатами (a , f (a )) и ( b, f ( b)) : Тогда на отрезке
y = f ( f )+
f (b ) − f ( a ) (x − a ). b−a
(6)
Точка пересечения этой линии с осью абсцисс лежит между точками a и b . Координата этой точки ξ может быть рассчитана как
ξ = a−
f (a ) ( b − a ). f (b ) − f (a )
Если f (ξ ) = 0 , то ξ является искомым корнем. При нового отрезка [a1 ,b1 ] выберем отрезок [a ,ξ], а при
(7)
f (ξ ) > 0 , в качестве f (ξ ) < 0 в качестве 95
нового отрезка выберем отрезок [ξ,b ]. Новый отрезок [a1 ,b1 ] также содержит корень c , но имеет меньшую длину. Повторяя эту процедуру n раз мы получаем последовательность отрезков убывающей длины и содержащих корень c .
Численная реализация методов нахождения корня уравнения Задание. Используя описанные выше методы, составить программу нахождения корня одного скалярного уравнения. Исследовать работу программы и сравнить эффективность используемых методов нахождения корня уравнения. На рис.1 - 3 представлены результаты работы такой программы.
Рис.1. Решение уравнения методом половинного деления
96
Рис.2. Решение уравнения методом касательных
Рис.3. Решение уравнения методом секущих 97
9.2 Интерполяция функции Построение интерполяционного полинома в форме Лагранжа Представим искомый полином
Pn ( x ) в виде
n
Pn ( x ) = ∑ f ( xi )Qn ,i ( x ),
(8)
i =0
где
Qn ,i ( x ) - полиномы степени n :
( x − x1 )( x − x2 )...( x − xn ) , ( x0 − x1 )( x0 − x2 )...( x0 − xn ) ( x − x0 )...( x − xi −1 )( x − xi +1 )...( x − xn ) , Qn ,i ( x ) = ( xi − x0 )...( xi − xi −1 )( xi − xi +1 )...( xi − xn )
Qn ,0 ( x ) =
(9)
................................................................................... Qn ,m ( x ) =
( x − x0 )( x − x1 )...( x − xn −1 ) . ( xn − x0 )( xn − x1 )...( xn − xn −1 )
Видно, что
⎧0 , x = x j Qn ,i ( x ) = ⎨ ⎩ 1, x = xi
∀j ≠ i .
(10)
Численная реализация метода интерполяции с помощью полинома Лагранжа Задание. Составить программу построения интерполяционного полинома Лагранжа по заданным значениям функции в узлах интерполяции. Исследовать работу программы. Рассмотреть сходимость выбранного метода интерполяции при увеличении числа узлов. На рис.4 представлены результаты работы такой программы. 98
Рис.4. Интерполяция функции с помощью полинома Лагранжа
9.3 Нахождение минимума функции нескольких переменных Градиентный метод нахождения минимума Рассмотрим скалярную функцию нескольких переменных,
z = f (r ), r = ( x1 , x2 ,..., xn ) ,
(11)
имеющую локальный минимум. Изменение этой функции при малом изменении аргумента можно приближенно записать в виде
δf = ∇f ⋅ δr .
(12)
Таким образом, перемещаясь в направлении, противоположном градиенту функции, мы приближаемся к ее минимуму:
rn +1 = rn − ε∇f , где
(13)
ε - малый параметр. В координатном представлении (13) имеет вид 99
xi ,n +1 = xi ,n − ε
∂f . ∂xi
(14)
Численная реализация градиентного метода нахождения минимума функции нескольких переменных Задание. Составить программу нахождения минимума функции двух переменных градиентным методом. На рис.5 представлены результаты работы такой программы. Исследовать работу программы. Используя составленную программу, проанализировать эффективность градиентного метода нахождения минимума функции при различных значениях ε .
Рис.5. Нахождение минимума функции
z = x 2 + y 2 градиентным методом
9.4 Численное интегрирование Возьмем произвольное четное число
n и разобьем отрезок [a ,b], по 100
которому ведется интегрирование, на
n равных отрезков длиной h =
точками
xi = a + ih , 0 ≤ i ≤ n.
b−a n (15)
Идея вывода квадратурных формул заключается в том, чтобы сопоставить подынтегральной функции f ( x ) близкую ей g n ( x ), которую можно проинтегрировать, и приближенно заменить искомый интеграл I интегралом от этой функции. В методе прямоугольников это кусочнопостоянная функция, в методе трапеций - кусочно-линейная функция, в методе Симпсона второго порядка эта функция на каждом отрезке является полиномом второго порядка. Квадратурные формулы прямоугольников Pn , трапеций
Tn и Симпсона второго порядка S n имеют вид: b−a n ⎛ 1⎞ ( ) Pn = f ξ , a ξ = + ⎜ i − ⎟h , ∑ i i n i =1 ⎝ 2⎠
Tn =
Sn =
(16)
1 b − a ⎡1 ⎤ ( ) ( ) ( ) ( ) ( ) f a f x f x ... f x f b + + + + + 1 2 n − 1 ⎥⎦ , (17) n ⎢⎣ 2 2
b−a [ f (a ) + 4 f ( x1 ) + 2 f ( x2 ) + ... + 2 f ( xn − 2 ) + 4 f ( xn −1 ) + f (b )]. 3n (18)
Остаточные члены для первых двух формул убывают как третьей формулы, как формулами:
n − 2 , а для
n − 4 . Отметим полезную связь между квадратурными
4 1 S n = Tn − Tn / 2 . 3 3
(19)
101
Численная реализация методов прямоугольников, трапеций и метода Симпсона второго порядка Задание. Составить программу нахождения интеграла функции одной переменной используя методы прямоугольников, трапеций и Симпсона второго порядка. Исследовать работу программы при разных шагах сетки. Проверить зависимость остаточных членов от количества узлов. Проверить выполнение соотношения (19). На рис.6 представлены результаты работы такой программы.
Рис.6. Нахождение определенного интеграла методами прямоугольников, трапеций и Симпсона второго порядка
102
10. Приложения Приложение1. Норма матрицы Рассмотрим линейное вещественное евклидово пространство E n , элементами которого являются вектора в виде упорядоченной системы n чисел x = {x1 ,..., xn }. В пространстве En определены скалярное произведение
( x , y ) = x1 y1 + ... + xn yn
(1)
и евклидова норма
x =
(x, x) =
x12 + ... + xn2 ,
(2)
удовлетворяющая трем аксиомам нормы:
x = 0 тогда и только тогда, когда x = 0 ;
1)
x ≥ 0,
2)
αx = α ⋅ x , ∀α , x ;
3)
x+ y ≤ x + y
(неравенство треугольника).
Для скалярного произведения Буняковского ( x , y ) ≤ x ⋅ y |.
справедливо
Рассмотрим квадратную матрицу A размером пространстве E n линейное преобразование
y = Ax
неравенство
Коши-
n × n . Она определяет в (3)
или n
yi = ∑ aij x j , i = 1,..., n . j =1
Введем величину
103
Ax , (4) x≠0 x которую принято называть нормой матрицы A , подчиненной норме вектора x . Записывая ненулевой вектор x в виде A = sup
x = x z, где z - вектор единичной длины: нормы, эквивалентное (4):
z = 1 , получаем представление для
A = sup Az .
(5)
z =1
Отсюда следует, что в конечномерном пространстве норма матрицы ограничена, причем на единичной сфере всегда найдется такой вектор z0 , что
A = Az0 . Наконец, из определения нормы (4) следует, что
Ax ≤ A ⋅ x .
(6)
Это простое неравенство лежит в основе всех дальнейших оценок.
Приложение 2. Самосопряженность и знакоопределенность матриц В вещественном евклидовом пространстве En для каждого линейного преобразования существует единственное сопряженное ему линейное преобразование, определяемое тождественным равенством скалярных произведений:
( Ax , y ) = (x , A+ y ),
∀x , y ∈ En .
(7)
В частности,
( Ax , x ) = (x , A+ x ),
∀x ∈ En .
Преобразование называется самосопряженным, если 104
( Ax , y ) = ( x , Ay ),
∀x , y ∈ En .
(8)
Матрицы сопряженных преобразований в ортонормированном базисе связаны простым транспонированием:
a*ij = a ji , ∀i , j = 1,...,n . Как известно, любая матрица представима в виде
~, A= A+A
(9)
где
A + A+ A − A+ ~ ~+ . + A= =A , A= = −A 2 2
(10)
Нетрудно видеть, что
( Ax , x ) = ( A+ x , x ) = ( A x , x ), ~ x , x ) = 0. (A
(11)
В дальнейшем будем опираться на следующие важные свойства самосопряженных преобразований: а) все собственные значения самосопряженного линейного преобразования (характеристические числа матрицы A ) вещественны; б) самосопряженное линейное преобразование всегда имеет полный набор линейно независимых собственных векторов, из которых можно образовать ортонормированный базис пространства En . В этом базисе матрица линейного преобразования принимает диагональный вид, причем на диагонали стоят все собственные значения этого преобразования с учетом их кратности. Наконец, матрица линейного преобразования A называется положительно определенной, если для любого, отличного от нуля x ∈ En справедливо неравенство означает: n
( Ax , x ) > 0 .
∑ aij xi x j > 0,
i , j =1
В ортонормированном базисе это
∀x ∈ En , x ≠ 0 .
(12)
105
Для краткости, если это не вызывает недоразумений, будем часто писать A > 0. Необходимым и достаточным условием положительной определенности самосопряженной матрицы A является критерий Сильвестра, из которого, в частности, следует строгая положительность всех диагональных элементов:
aii > 0, 1 ≤ i ≤ n .
(13)
Условимся обозначать собственные векторы линейного преобразования с матрицей A как ei , ее характеристические числа как λ i , координаты произвольного вектора x в ортонормированием базисе из собственных векторов ei , как ξi . Для дальнейшего рассмотрения будут полезны три леммы. +
Лемма 1. Для того чтобы самосопряженная ( A = A ) матрица была положительно определенной, необходимо и достаточно, чтобы все ее характеристические числа были положительны: λ i > 0 . Необходимость. Выберем любой преобразования с матрицей A , тогда
собственный
вектор
ei линейного
( Aei ,ei ) = λ i > 0 . Достаточность. Расположим для определенности все характеристические
A = A+ в порядке убывания: λ1 ≥ λ 2 ≥ ... ≥ λ n > 0 . Поскольку по условию леммы λ i > 0 , то в ортонормированном базисе из собственных векторов преобразования с матрицей A для любого x ≠ 0 значения матрицы
имеем
n
( Ax , x ) = ∑ i =1
λ i ξi2
> 0 , ∀{ξi },
n
∑ ξi2 > 0. i =1
A > 0. + Лемма 2. Пусть A = A > 0 и λ1 ≥ λ 2 ≥ ... ≥ λ n > 0 - упоряПоэтому очевидно, что
доченный набор характеристических чисел этой матрицы, тогда
λ n x ≤ ( Ax , x ) ≤ λ1 x . 2
2
(14) 106
Доказательство предлагается провести самостоятельно. Лемма 3. Если такое, что
A > 0 , то всегда найдется постоянное число δ > 0 , 2
( Ax , x ) ≥ δ x , ∀x ∈ En . Доказательство. Если
(15)
A = A+ , то достаточно положить δ = λ n . В общем
случае напомним, что согласно (11) ( Ax , x ) = ( A x , x ) > 0 , где поэтому согласно предыдущей лемме
( Ax , x ) = ( A x , x ) ≥ λn
A = A* ,
2
x ,
λ n > 0 - минимальное характеристическое число матрицы A + A* . Полагая δ = λ n , приходим к требуемому неравенству (15). A= 2
где
Литература 1. Н.С. Бахвалов, Р.П. Жидков, Г.М. Кобельков. Численные методы. М., Наука, 1987. 2. Д.П. Костомаров, А.П. Фаворский. Вводные лекции по численным методам. М., Логос, 2004. 3. Н.С. Бахвалов, Н.П. Жидков, Г.М. Кобельков. Численные методы. М., Наука, 1987. 4. А.А. Самарский. Введение в численные методы. - СПб., Лань, 2005. 5. Л. Коллатц. Функциональный анализ и вычислительная математика. М., Мир, 1969. 6 С.В. Поршнев, И.В. Беленкова. Численные методы на базе Mathcad. СПб., БХВ-Петербург, 2005. 7. А.Н. Боровский. C++ и Borland C++ Builder. СПб., Питер, 2005. 8. Э.Э. Шноль. Семь лекций по вычислительной математике. М, Едиториал УРСС, 2004. 9. Д. Каханер, К. Моулер, С. Неш. Численные методы и математическое обеспечение. М., Мир, 1998. 10. А.А. Самарский, А.П. Михайлов. Математическое моделирование. М., Физматлит, 2005. 11. Х. Гулд, Я. Тобочник. Компьюторное моделирование в физике. Часть1,2. М., Мир, 1990. 107
В 2007 году СПбГУ ИТМО стал победителем конкурса инновационных образовательных программ вузов России на 2007–2008 годы. Реализация инновационной образовательной программы «Инновационная система подготовки специалистов нового поколения в области информационных и оптических технологий» позволит выйти на качественно новый уровень подготовки выпускников и удовлетворить возрастающий спрос на специалистов в информационной, оптической и других высокотехнологичных отраслях экономики.
КАФЕДРА ФОТОНИКИ И ОПТОИНФОРМАТИКИ Кафедра "Фотоника и оптоинформатика" была создана летом 2002 года. Одной из ее важнейших задач является организация учебного процесса и подготовка специалистов по оптоинформатике – стремительно развивающейся новой области науки и техники, в которой разрабатываются оптические технологии сверхбыстрой передачи, обработки и записи информации, создаются быстродействующие оптические компьютеры и системы искусственного интеллекта. Разработка таких оптических информационно-телекоммуникационных технологий, представляющих собой информационные технологии нового поколения, является приоритетным направлением развития российской науки, техники и технологий. В рамках образовательного направления 200600 «Фотоника и оптоинформатика» студентам читаются лекционные курсы по оптической физике, теории информации и кодирования, архитектуре вычислительных систем, технологии программирования, цифровым оптическим вычислениям, оптическим технологиям искусственного интеллекта, голографическим системам записи информации и другим актуальным проблемам оптоинформатики, а также по квантовой информатике. Эти лекционные курсы поддержаны эксклюзивными учебно-научными экспериментальными практикумами. Среди научных подразделений кафедры – научно-образовательный центр фемтосекундной оптики и фемтотехнологий, лаборатория компьютерного моделирования и параллельных вычислений, проблемная лаборатория волновых процессов. Среди студентов и аспирантов кафедры – стипендиаты Президента и Правительства Российской Федерации, победители конкурсов научных работ, проводимых Российской Академией наук, крупнейшими мировыми научными обществами.
108
Сергей Анатольевич Чивилихин
ВЫЧИСЛИТЕЛЬНЫЕ МЕТОДЫ В ТЕХНОЛОГИЯХ ПРОГРАММИРОВАНИЯ ЭЛЕМЕНТЫ ТЕОРИИ И ПРАКТИКУМ
В авторской редакции компьютерный набор, верстка, дизайн С.А.Чивилихин
Редакционно-издательский отдел СПбГУ ИТМО Зав. РИО
Н.Ф.Гусарова
Подписано к печати 23.12.08 Заказ N
Тираж 100 экз.
Отпечатано на ризографе
109
Редакционно-издательский отдел Санкт-Петербургского государственного университета информационных технологий, механики и оптики 197101, Санкт-Петербург, Кронверкский пр., 49
110