Автор: Зализняк В.Е.  

Теги: математика   физика  

ISBN: 5-354-00138-2

Год: 2002

Текст
                    В.Е.Зализняк
НАУЧНЫХ ВЫЧИСЛЕНИЙ
Введение в численные методы для физиков
УРСС
Москва • 2002
.	..____'_t___
ББК 22.193я73
I
Зализняк Виктор Евгеньевич
Основы научных вычислений. Введение в численные методы для физиков:
Учебное пособие. — М.: Едиториал УРСС, 2002. — 296 с.
ISBN 5-354-00138-2
Книга предназначена для использования в курсе численных методов. В ней рассматриваются такие вопросы, как решение уравнений, вычисление собственных значений и интегралов, интерполяция-и аппроксимация функций, а также численное решение задачи Койш и краевой задачи для обыкновенных дифференциальных уравнений. Книга содержит множество примеров, демонстрирующих применение рассматриваемых методов. В дополнение приводится разнообразный справочный материал и краткий обзор библиотек программ, широко используемых в научных вычислениях.
Для студентов естественно-научных и технических специальностей высших учебных заведений.
Оригинал-макет предоставлен автором, текст опубликован в авторской редакции.
Издательство «Едиториал УРСС». 117312, г. Москва, пр-т 60-летия Октября, 9.
Лицензия ИД №05175 от 25.06.2001 .г. Подписано к печати 27.05.2002 г.
Формат 60x84/16. Тираж 800 экз. Печ. л. 18,5. Зак. № 10.
Отпечатано в типографии ООО «Рохос». 117312, г. Москва, пр-т 60-летия Октября, 9.
ИЗДАТЕЛЬСТВО J A
НАУЧНОЙ И УЧЕБНОЙ ЛИТЕРАТУРЫ
E-mail: urss@urss.ru
JL Каталог изданий в Internet: http://urss.ru Тел ./факс: 7 (©95) 135=544^23 ±J Тел ./факс: 7
ISBN 5-354-00138-2
© В. Е. Зализняк, 2002
© Едиториал УРСС, 2002
ОГЛАВЛЕНИЕ
ПРЕДИСЛОВИЕ	9
ГЛАВА 0. Возникновение ошибок вычислений при выполнении арифметических операций на компьютере	11
ГЛАВА 1. Решение уравнения f(x)=O	17
1.1	, Метод деления отрезка пополам	19
1.2	. Вычисление корней с использованием итерационных функций	21
1.2.1. Одноточечный итерационный процесс	25
1.2.2 Многоточечный итерационны и процесс	33
1.2.3 Одноточечный итерационный процесс с памятью 35
1.3	Заключительные замечания	37
ГЛАВА 2. Решение систем линейных уравнений	39
2.1	Необходимые сведения из линейной алгебры	40
2.2	Системы линейных уравнений	43
2.3	Типы матриц, часто встречающиеся при решении задач	44
2.4	Источники ошибок	47
2.5	Число обусловленности	48
2.6	Прямые методы	51
2.6.1 Основные принципы прямых методов	52
2.6.2 Оценка ошибки приближенного решения	5 5
2.6.3 Заключительные замечания	56
2.7	Итерационные методы	57
2.7.1 Основные принципы итерационных методов	57
2.7.2 Метод Якоби	60
2.7.3 Метод Гаусса-Зейделя	63
2.7.4 Метод релаксации	64
2.7.5 Вариационно-итерационные методы	69
2.8	Какие методы более эффективны: прямые или итерационные? 74
6
Оглавление
ГЛАВА 3. Вычисление собственных значений и векторов 77
3.1.	Основные сведения из линейной алгебры, относящиеся к задаче на собственное значение	78
3,2.	Локализация собственных значений	79
3.3.	Степенной метод	80
3.4.	Метод обратной итерации	83
3.5.	Итерации со сдвигом начала	85
3.6.	Применение ортогональных преобразований (QR-метод)	88
3.7.	Заключительные замечания	91
>
ГЛАВА 4. Решение систем нелинейных уравнений	93
4.1	Метод простой итерации	94
4.2	Метод Ньютона	100
4.3	Метод с кубической сходимостью	105
4.4	Модификации метода Ньютона	107
4.5	Повышение надёжности метода Ньютона	109
Г ЛАВА 5. Численное интегрирование	113
5.1	Простейшие квадратурные формулы	114
5.2	Вычисление интегралов с задгйЩэй точностью	121
5.3	Формулы Гаусса-Кристоффеля	126
5.4	Несобственные интегралы	132
5.4.1 Бесконечные пределы интегрирования	132
5.4.2 Подинтегралъная функция имеет особенность	133
5.5	Многомерное интегрирование	135
ГЛАВА 6. Введение в конечно-разностные схемы для обыкновенных дифференциальных уравнений	145
6.1.	Простейший пример конечно-разностной схемы	146
6.2.	Определения аппроксимации и устойчивости	149
6.2.1.	Аппроксимация дифференциального уравнения разностной схемой	150
6.2.2.	Замена производных разностными отношениями 155
6.2.3.	Определение устойчивости разностной схемы	158
6.2.4.	Сходимость как следствие аппроксимации и устойчивости	158
6.3.	Численное решение задачи Коши	160
6.3.1.	Необходимое условие устойчивости разностных схем для линейных задач	162
4
Оглавление
7
6.3.2,	Методы Рунге-Кутта	16: >
6.3.3.	Методы Адамса	170
. 6.3.4. Исследование устойчивости разностных схем в случае нелинейных задач	175
6.	3.5. Системы дифференциальных уравнений	177
6.3.6.	Методы решения жёстких систем дифференциальных уравнений	184
6.4.	Численное решение краевых задач	189
6.4.1	Метод стрельбы	189
6.4.2.	Сведение разностной схемы к системе уравнений	193
6.4.3.	Метод последовательных приближений	196
6.4.4.	Метод установления	199
6.4.5.	Аппроксимация граничных условий в случае, когда на границе задано значение производной	204
6.5.	Оценка ошибки приближённого решения	207
ГЛАВА 7. Интерполяция и приближение функций	213
7.1.	Интерполяция	213
7.1.1.	Интерполяционные полиномы Лагранжа и Ньютона	214
7.1.2.	Тригонометрические интерполяционные полиномы 218
7.1.3.	Сплайн интерполяция	222
7.1.4.	Двумерная интерполяция	225
7.2.	Приближение функций и представление данных	228
7.2.1.	Метод наименьших квадратов	229
7.2.2.	Приближение функции набором ортогональных функций	234
7.2.3.	Использование интерполяционных полиномов для приближения функций	242
ПРИЛОЖЕНИЕ А. Узлы и веса некоторых квадратурных формул Гаусса-Кристоффеля	245
ПРИЛОЖЕНИЕ В. Преобразование некоторых регулярных областей интегрирования в прямоугольные области	261
8
Оглавление
ПРИЛОЖЕНИЕ С. Условия устойчивости для некоторых разностных схем Рунге-Кутта, Адамса и предиктор-корректор	263
П РИЛОЖЕНИЕ D. Краткий обзор программного обеспечения 265
Библиотека подпрограмм LAP АСК для задач линейной алгебры 265
Библиотека подпрограмм IMSL®	271
Библиотека подпрограмм Группы по численным алгоритмам (NAG®)	278
Вычислительные функции среды MATLAB®	288
ЛИТЕРАТУРА	291
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ	293
Предисловие
Развитие современной науки и технологии в значительной степени основано на компьютерном моделировании. Для того чтобы освоить основные принципы и методы компьютерного моделирования, студенты, прежде всего, должны овладеть основами классических численных методов, которые и составляют предмет этой книги. В настоящее время, различное программное обеспечение широко используется на практике, и невозможно грамотно и эффективно применять это обеспечение без глубокого понимания основ численных методик, на которых эти программы основаны. В этой книге, наряду с теоретическими аспектами вычислений, приводится краткий обзор библиотек программ, широко используемых в научных исследованиях.
Эта книга предназначена для использования в курсе численных методов для студентов физико-технических специальностей, а также она может быть полезна аспирантам в качестве справочника по численным методам. Объём этой книги расчитан на изучение в течение одного семестра. Уровень изложения материала предполагает что читатель освоил курсы математического анализа (два семестра), линейной алгебры (один семестр) и дифференциальных уравнений (один семестр).
В небольшой по объёму книге невозможно рассмотреть все проблемы классического численного анализа. Поэтому, были выбраны ниболее важные, с моей точки зрения, темы, составляющие основу прикладных численных методов.
Виктор Зализняк, Мельбурн, октябрь 2001 г.
ГЛАВА О
Возникновение ошибок вычислений при выполнении арифметических операций на компьютере
Компьютерная арифметика отличается от привычной нам арифметики. В традиционной математике, числа могут иметь бесконечное число цифр. В компьютерной арифметике, каждое допустимое число имеет конечное число цифр. Входные данные и результаты арифметических операций помещаются в оперативную память компьютера в определённой форме. Вещественные числа представляются в следующей стандартной форме (форма с плавающей точкой):
х =. ±bcmb
(0.1)
Здесь х - вещественное число, b есть основание системы счисления (обычно используются основания 2, 8 и 16), с называется характеристикой, mb называется мантиссой (она определяет дробную часть числа), а ± обозначает знак числа х. Мантисса числа х^О удовлетворяет условию
ь ь
что обеспечивает единственность представления (0.1). Любое вещественное число можно представить в форме с плавающей точкой и это может быть сделано в любой системе счисления с основанием Ь>0. Однако, некоторые вещественные числа (например, иррациональные) невозможно записать в оперативную память компьютера точно. Все числа, которые могут быть помещены в оперативную память, представляются там в определённом виде. При этом их характеристики
Гл.О. Возникновение ошибок вычислений
ограничены: ст< с <ср, а мантиссы имеют вид конечных дробей по основанию Ь:
где коэффициенты ап удовлетворяют условиям
1<а1 <b-1, 0<an <b-1,n = 2, ...,к.
Пример 0.1 (двоичное представление вещественного числа)
Рассмотрим вещественное число х=8.75. Представим это число в
двоичной форме (Ь=2). Сначала мы перепишем число х в виде
0.546875-2 , тогда характеристика с, согласно (0.1), равна 4 (100 в двоичной форме). Дробная часть числа представляется в виде
тогда коэффициенты ап равны
ai	Зг	Зз	Зд	95	Эб	а?	• • •	9k
1	0	0	0	1	1	0	 • •	0
Для простоты, числа, которые могут быть помещены в оперативную память, мы будем называть машинными числами и они образуют конечное подмножество множества вещественных чисел. Для описания машинных чисел мы ввели параметры b, Ст, ср и к, но использовать эти параметры на практике не очень удобно. Обычно, для описания машинных чисел вводится другой набор параметров: Ь, 8о, 81, и . Эти параметры, как и предыдущие, зависят от конкретного компьютера и определяются следующим образом:
е0 = Ьс-'1 e1 = b1'k s„ = ^(-1 -b-k)
Гл.О. Возникновение ошибок вычислений
13
Эти параметры имеют следующие значения: ем - максимальное машинное число, 8о - минимальное машинное число и 81 есть минимальное расстояние между двумя машинными числами на интервале от 1 до Ь. Параметр также называют относительной ошибкой определения единицы, так как все числа вида 1 +х из интервала [1, 1+sJ заменяются машинным числом 1 с ошибкой не превосходящей 8|. Следовательно, интервалы (-оо, -еД (-80, 0), (0, 80), (1^/Ь, 1), (1, 1 + и (б* , оо) не содержат машинных чисел. Наряду со стандартной точностью, существует возможность более точного представления машинных чисел. Это можно осуществить увеличив число цифр в мантиссе, и расширив область допустимых значений характеристик. Тогда машинные числа с повышенной точностью будут определяться некоторыми параметрами
Ь , с; , с; , к- .
Например, определяющие параметры для PC представлены в Таблице 0.1.
Таблица 0.1
	Одинарная точность	Двойная точность
ь	2	2
Ст	-125	-1021
Ср	128	1024
к	24	53
So		2-1022
Si	2'23	2-Ь2
8qo 	21^(-|.2’Z4)	2l0'^(i 2"53)
Если число хе[- е*,, ej, то оно заменяется машинным числом хт. В процессе такой замены используется какой-нибудь способ приближения (усечение или округление) и в качестве хт выбирается ближайшее к х число. В результате такой замены возникает ошибка х-хт. Для 8о<|х|<8ад эта ошибка оценивается величиной 8i | х |, то есть | х- хт | < 811 х |. Если |х| е (0, 80), тогда хт может принимать одно из двух значений: 0 или 8о, и понятно что в обоих случаях | х - хт | < 8б[Х|. Поэтому параметр е0 также
Гл.О. Возникновение ошибок вычислений
называют абсолютной ошибкой определения нуля. Эти оценки можно объединить в следующее выражение:
xm = х(1 + а) + Р, |а| < е1, |р| <
(0.2)
которое справедливо для всех хе[- ej.
На компьютерах арифметические операции выполняются над машинными числами. Во многих случаях, результат этих операций может не быть машинным числом, или другими словами, результат арифметической операции (машинный результат), будучи машинным числом, может не совпадать с точным результатом. Например, для точного представления частного двух машинных чисел а и b часто требуется бесконечное количество цифр мантиссы. Поэтому, машинный результат отличается от точного результата деления а на Ь. Для дальнейшего анализа, мы введём следующее правило компьютерной арифметики: машинный результат арифметической операции над двумя машинными числами можно представить как результат записи точного значения этой операции в память компьютера. Для того чтобы отличать машинные операции от обычных (точных) операций, мы будем обозначать их таким же знаком в угловых скобках. Тогда, согласно принятому выше правилу, можно записать
a(+)b = (a + b\, а(-)Ь = (а -а(х)ь - (а х b)^ a(/)b = (a/b\,
(0.3)
Формулы (0.3) имеют следующий смысл: машинный результат арифметической операции есть ближайшее к точному результату машинное число. Машинный результат также зависит от типа операции и чисел а и Ь. Например, если точный результат лежит вне итервала допустимых в компьютере чисел (результат не принадлежит [- 8», 8»]), то мы сталкиваемся с ситуацией, называемой переполнением порядка. Эту ситуацию компьютер, трактует жак фатальную ошибку, и дальнейшие вычисления прекращаются. В правильно работающей программе такие ситуации должны быть исключены. Если абсолютное значение точного результата меньше чем 8о, то возникает ситуация,
Гл.О. Возникновение ошибок вычислений
называемая исчезновением порядка, и хотя это не является фатальней ошибкой такая ситуация также нежелательна.
Объединяя выражения (0.2) и (0.3), мы получим формулы для моделирования ошибок арифметических операций
a(+)b = (а + b)m = (а + Ь)(1 + а) + р a(-)b = (а - b)m = (а - Ь)(1 + а) + р а(х)Ь = (а х b)m = (ab)(1 + а) + р a(/)b = (а / b)m = (а / b)(1 + а) + р
Эти формулы приводят к следующей оценке для ошибки возникающей при выполнении операций с плавающей точкой:
a(*)b-(a*b) <е0 +8^3*1*
где * обозначает любую из четырёх арифметических операций. Эта оценка может использоваться для анализа поведения ошибки при реализации различных вычислительных алгоритмов. Это очень важный вопрос, так как часто возникает ситуация, когда при выполнении некоторого вычислительного процесса происходит накапливание ошибки, что приводит к значительному искажению конечного результата. Например, если предположить, что Р=0, тогда ошибка вычисления
может быть оценена как
a,(x)a2(x)...(x)aN ~Пап	।
ГЛАВА 1
Решение уравнения f(x)=O
Список обозначений
х*	точное значение корня (f(x*)=O)
I	интервал который содержит единственный	корень
Хи	приближенное значение корня
©k = хк - х* ошибка приближенного значения корня
8Р	требуемая точность вычисления приближенного
значения корня
f, f",	производные функции f(x)
Решение уравнения f(x)=O часто встречающаяся проблема. На первый взгляд она выглядит довольно простой, но точное её решение возможно, только если f(x) есть полином степени п<4. Под точным решением понимается некоторая процедура вычисления корня через параметры уравнения (например, для уравнения ах2 + Ьх + с = 0).
Каждая нелинейная задача имеет свои особенности, поэтому численное решение уравнения f(x)=O невозможно без предварительного анализа функции f(x). Например, дополнительные трудности возникают когда график функции в точке корня касается оси х, как показано на рисунке 1.1. Такие корни трудно обнаружить, потому что график функции f(x) не пересекает ось х. Такое поведение характерно для функций, которые имеют кратные корни. Корень уравнения х* имеет кратность гп если существует некоторая непрерывная функция д(х) такая, что
1) д(х')*0,
2) для каждого х, f(x) = (х - х* )тд(х).
18
Гл. 1. Решение уравнения f(x)=O
Если т=1, тогда х* есть простой корень уравнения f(x)=O. Мы ограничимся рассмотрением случая, когда f(х) вещественная однозначная функция вещественного аргумента и уравнение f(x)=O имеет простой корень.
Основой для вычисления корня уравнения является итерационный процесс, или другими словами, процесс последовательных приближений. Итерационный процесс имеет четыре стадии:
1)	найдем интервал, который содержит единственный корень (локализация корня)
2)	выберем начальное приближение х0
3)	используя какую-либо итерационную процедуру к раз, получим набор приближений хк, начиная с х0.
4)	определим насколько близко каждое приближение хк к точному значению корня. Если некоторое приближение находится в ерт окрестности х*, тогда итерационный процесс завершен.
Последний пункт будет выполнен, только если
1.1 Метод деления отрезка пополам
19
limx
к—>оо
то есть приближения Хи сходятся к х*. Поэтому, основное внимание мы будем уделять условиям, которые обеспечивают сходимость итерационного процесса.
1.1. Метод деления отрезка пополам.
Рассмотрим простой, но надежный метод для вычисления корней. Пусть некоторый отрезок [а,Ь]=Г содержит единственный корень. Стратегия этого метода состоит в том, что мы делим интервал I пополам и затем оставляем только половину этого интервала содержащую корень. Очевидно, что половина, на которой функция f(x) меняет знак, содержит корень. Это дает нам способ определить какую половину оставить и затем использовать для дальнейших вычислений. Метод деления отрезка пополам можно представить в виде блок-схемы показанной на рисунке 1.2.
Таким образом, на каждом шаге вычислительного процесса х* лежит внутри интервала [a^bj, и как только длина этого интервала становится меньше чем 8Р, итерационный процесс завершается. В этом методе используется минимальная информация о функции f(x) (знак f(x)). Поэтому требуется относительно большое число итераций, но сходимость этого метода гарантирована. Оценим количество итераций необходимых для вычисления корня. Легко видеть, что длина интервала [3k»bk] уменьшается в два раза на каждом шаге итерационного процесса. Вычисления завершаются, когда
ak-bk=(a-b)/2k<ep.
Для оценки числа итераций к выберем знак " = ”, тогда

где [у] означает целую часть у. Например, если Ь-а=1 и 8р=10‘5 мы получим к=17.
Пример 1.1 (метод деления отрезка пополам).
f(x) = exp(-x)-sin(x) = O, х* е[0;1] = 1, ер =10 5.
Результаты расчетов представлены в Таблице 1.1.
20
Гл.1. Решение уравнения f(x)=0
Рисунок 1.2. Блок-схема представляющая метод деления отрезка пополам
1.2 Вычисление корней с использованием итерационных функций 21
Таблица 1.1
к	хк	Ьк-ак	f(xk)
1	0.5	5.00000е-01	1.27105е-01
2	0.75	2.50000е-01	2.09272е-01
3	0.625	1.25000е-01	4.98358е-02
4	0.5625	6.25000е-02	3.64801 е-02
• •			
17	0.58854	762939е-06	8.84776е-06
1.2 Вычисление корней с использованием итерационных функций.
В дальнейшем мы будем рассматривать другой подход для расчета корней. Уравнение f(x)=O может быть представлено в следующей эквивалентной форме:
X = д(х),
(1-1)
где д(х) - некоторая итерационная функция и f(x‘)=O соответствует х*=д(х*). Оказалось, что итерационные алгоритмы проще конструировать на основе эквивалентной формы (1.1). Итерационный процесс определяется следующим образом: зададим начальное значение Хо, и будем вычислять последующие приближения по формуле
xk+1 =g(xk),k = O , 1,...
(1.2)
На рисунке 1.3 показана геометрическая интерпретация сходящегося итерационного процесса (1.2). Следующая теорема объясняет условия, которые обеспечивают сходимость-итераций (1.2).
Теорема 1.1.
Пусть 1=[а,Ь] ограниченный интервал и д(х) функция, действующая из I в I. В дополнение, д(х) удовлетворяет условию Липшица
I g(y) - g(z) |< l । у - z |, о <; l < 1
22
Гл.1. Решение уравнения f(x)=O
а)
Рисунок 13. Последовательные приближения, генерируемые итерационным процессом (1.2): a) g (х)>0 и b) g (х)<0.
1.2 Вычисление корней с использованием итерационных функций 23
для произвольных точек у и z в I. Пусть xoel и xk+1=g(xk), тогда последовательность { хк } сходится к единственному решению х е I уравнения х=д(х).
На основе этой теоремы можно получить оценку ошибки к-го приближения, которая зависит от двух последовательных приближений и константы Липшица L. Так как |xk+1 - хк| = |д (хк) - д (х^)!, мы можем заключить из условия Липшица, что для всех к, |хк+1 - хк| < L |хк+1 - x^l-Пусть п произвольное положительное целое число. Тогда
^к+п Хк \^к+п	^к+п-1)	\^к+п-1	Хк+П_2/ +
(хк+1 -Хк)
I Хк+п Хк |2ь| Хк+П Хк+П_^ | + | Хк+П_^ Хк+П_2 |хк+1-хк|
Следовательно, мы можем записать
I xk+n - хк |<L(1 + L + ... + L"-1)|xk -хк_, | =
L(1-Ln).	,
—------- У — Y
Пусть п -> оо, тогда
Это дает нам оценку ошибки k-го приближения. Следует заметить, что если константа L близка к единице, то сходимость становиться очень медленной. Поэтому основное наше внимание будет уделяться вопросу построения быстросходящихся итерационных процессов.
Имеется большое разнообразие методов для решения уравнения f(x)=O. Мы рассмотрим лишь основные подходы, основанные на следующих трех типах итерационных процессов:
1)	одноточечная итерация
хы=д(\),к = 0,1,...	(14)
24
Гл.1. Решение уравнения f(x)=O
2)	многоточечная итерация хк+1	..0п(хк)), к = 0,1,...,	(1.5)
где Pt, ... , рп некоторые функции.
3)	одноточечная итерация с памятью xk+i = 9(xk,Xk_v...,xk_n),k = n , п -1 ,...	(1.6)
Теперь следует разъяснить термин «быстрая сходимость» более подробно. Сделаем это на примере итерационного процесса (1.4). Сначала введем ошибку k-го приближения как ek=xk - х, тогда хк=ек + х и Xk+i=ek+i + х ч После подстановки этих выражений в (1.4), мы можем разложить д(х +ек) по степеням ек в окрестности точки х (предполагая, что все производные функции д(х) до порядка р включительно, непрерывны):
X’ +ek+1 = д(х’ +ек) = д(х’) + д'(х’)ек +
Ук е[хк,х*]
Учитывая, что х = д (х) мы получаем
ек+1 = д'(х* )ек +^д'(х*)ек + ... + -1д(р)(ук)е₽	(1.7)
Если д(п)(х*)=О для п=1.......р-1	и д(р)(х’)^0, тогда итерационная
функция д(х) имеет порядок р и как следует из (1.7)
е, , = Сер, С = const * О
где р называется порядком последовательности { хк } и С называется константой асимптотической сходимости. Когда р=1, итерационная последовательность имеет линейную сходимость к X, а при р>1
1.2 Вычисление корней с использованием итерационных функций	25
сходимость сверхлинейная. Легко видеть, что если ей достаточно мата, тогда при р>1 итерационная последовательность может сходиться очень быстро.
Нам осталось обсудить один практически важный вопрос: как оценить ошибку k-го приближения к точному решению х*. Это можно сделать на основе неравенства (1.3). Если Хке[х-8Р, х+ер], то выполняются следующие условия:
хк ~ хк-1 - 8р (оценка абсолютной ошибки)
(1.9)
< ео (оценка относительной ошибки) н
В дополнение к условию (1.9), обычно требуют также выполнения условия
f(xk) <ер .
Это условие следует из постановки проблемы. Таким образом, итерационный процесс завершается, когда одно из этих условий выполняется.
1.2.1. Одноточечный итерационный процесс.
Вначале мы рассмотрим случай когда g (х )?Ю. Как это следует из (1.7) ©k+1=g (X )ек И ПрИ УСЛОВИИ
I д'(х’) |< 1
(ЕЮ)
будет линейная сходимость. Условие (1.10) невозможно использовать на практике, но мы можем потребовать выполнения следующего условия:
max|g'(x)|<1,x* el,
(1.Н)
Тогда теоретическое условие (1.10) будет также выполнено.
26
Гл.1. Решение уравнения f(x)=O
Простейший способ представить исходное уравнение в виде (1.1) следующий:
х = х + af(x) = g(x), a = const * О
(1-12)
что дает итерационную схему
хк+1 =хк +af(xk) = g(xk),k = o, 1,...	(1.13)
Эта схема называется методом простой итерации. Для того, чтобы условие (1.11) выполнялось, параметр а должен подчиняться условиям:
О < a <-------1----
max f'(x) xel ’
если f'(x) < 0
--------< a < 0, если f'(x) > 0 rtiaxf'(x)
xel
Для определённости можно выбрать
, f'(х) < О
,f'(x) > О
Начальное приближение х0 следует выбирать из интервала I.
Пример 1.2. (метод простой итерации).
f (х) = ехр(-х) - sin(x) = 0, х*е[0,л/2] = 1..
Параметр а определяется как
---------—--------— = 0.5 тах(ехр(-х)+cos(x))
xsl
1.2 Вычисление корней с использованием итерационных функций 27
Начальное приближение Хо=О и требуемая точность ер=10’5. Результаты расчетов показаны в Таблице 1.2.
Таблица 1.2.
к	хк	Хк-Хк.,	f(Xk)
1	0.5	5.00000е-01	1.27105е-01
2	0.563552	6.35525е-02	3.49906е-02
3	0.581047	1.74953е-02	1.04118е-02
4	0.586253	5.20590е-03	3.16351 е-03
		-	
9	0.588526	1,39279е-05	8.51199е-06
Результаты из примера 1.2 показывают, что сходимость итерационной последовательности в методе простой итерации не такая быстрая. Существует специальная процедура, которая позволяет ускорить сходимость, используя приближения полученные методом простой итерации. Выражение (1.7) для метода (1.13) может быть записано в виде
ek+i -Rek+°(ek)> R=g'(x*)
ИЛИ
хк+1-х’=R(xk-х*)+О(ек)
Рассмотрим две последовательные итерации
Хк - X- = R(xk_1 - х’) + О(ек_,)
хк+1-х* = R(Xk - х’) + О(ек)
После исключения R, мы можем выразить х из этих двух уравнений:
х. = xh2W^ + O(ek2) = zk+1 +О(е*)	(1.14)
2Хк Хк+1 Хк-1
Если мы возьмём zk+1 в качестве приближения к х , тогда точность этого приближения будет О( (ек)2 ), то есть, последовательность { zk } имеет сходимость второго порядка, в то время как последовательность { хк }
28
Гл.1. Решение уравнения f(x)=O
имеет линейную сходимость. Преобразование { Xr } —> {	} называется
процессом Эйткена.
Пример 1.3. (процесс Эйткена).
Рассмотрим процесс Эйткена основанный на данных из примера 1.2.
Результаты расчетов представлены в Таблице 1.3.
Таблица 1.3.
к	хк	Zk	Zk - Zk-1	L f(Zk) .
1	0.50000			
2	0.56355			
3	0.58104	0.58769		1.16407e-03
4	0.58625	0.58845	7.65420е-04	1.02092e-04
5	0.58831	0.58852	6.67380e-05	9.50398e-06
Если сравнить эти результаты с результатами из примера 1.2, то заметно, что достигается некоторое ускорение сходимости
Как можно увидеть из предыдущего примера, сверхлинейная сходимость приводит к сокращению числа итераций. Однако, это достигается на основе преобразования итерационной последовательности с линейной сходимостью. Можно ли построить итерационный процесс, который непосредственно дает последовательность, сходящуюся к корню сверхлинейно? Имеется множество способов построения таких процессов, и далее мы рассмотрим один из них. Пусть производные f(x) до порядка s включительно непрерывны на отрезке I. Тогда, применяя разложение по формуле Тейлора функции f(x) в окрестности x^gI, получим
f(x) = PJx)+f<S>(^—(x-xk)s,
(1-15)
Ps(x) =

где Уи лежит в интервале, который зависит от Хк и х. Следующее приближение к х находится из уравнения (рисунок 1.4)
1.2 Вычисление корней с использованием итерационных функций 29
^s(Xk+1) "" 0 *
(Мб)
Таким образом, выражая хк+1 из уравнения (1.16), мы получим отображение хк —> хк+1, что и определяет некоторую итерационную схему. Можно показать, что последовательность, генерируемая итерационной схемой (1.16) имеет порядок p^s.
Рисунок 1.4. Графическое представление итерационной схемы основанной на разложении (1.15).
Теперь нам необходимо обсудить важный вопрос о том, как выбрать начальное приближение х0, которое дает сходящийся итерационный проесс. Пусть х el, производные f^s\x) непрерывны на отрезке I и f(x)f^s)(x)^O для всех xgI. Если условия
f(х0 )f(s)(x0) > 0, для четных s
f '(х0 )f(s)(x0) < 0 , для нечетных s
(1.17)
(1.18)
30
Тл.1, Решение уравнения f(x)=0
выполняются и min(x ,Xk)<Xk+i<max(x ,Хк), тогда итерационная последовательность { Хи }, генерируемая итерационной схемой (1.16) монотонно сходится к х.
Теперь рассмотрим конкретные методы, которые следуют из общего подхода (1.15) и (1.16). Когда s=2 уравнение (1.16) имеет следующий вид:
f(xk) + f'(xk)(xk+1-xk) = O
Решая это уравнение относительно х^ мы получим итерационную схему
t(Xk) , Л 4 хк+1=хк-777т.к=0> 1. -
(1.19)
где
д(х) = х -
f(x) f'(x)
Это хорошо известный метод Ньютона и он имеет простую геометрическую интерпретацию. Функция
y(x) = f(xk)+Hxk)(x-xk)
представляет собой касательную к графику f(x) в точке Хк. Тогда приближение Хк+1 есть точка пересечения касательной с осью х. Для того, чтобы выбрать начальное приближение х0, необходимо использовать условие (1.17) при s=2.
Пример 1.4 (метод Ньютона).
f(x) = exp(-x)-sin(x) = 0, х* е [0, л/2] = I. f'(x) = -(ехр(-х) + cos(x)) f"(x) = ехр(-х) + sin(x)
Условие (1.17) для данной функции записывается, как
ехр(-2Хо) - sin2 (х0) > О
1.2 Вычисление корней с использованием итерационных функций 31
и оно выполняется, например, если х0<0.5. Выберем хо=О и ер=10’5.
Результаты расчетов приведены в Таблице 1.4.
Таблица 1.4
к	Хк	Хк - Хк-1	I f(xk) I
1	0.5	5.00000е-01	1.27105е-01
2	0.585643	8.56438е-02	4.01126е-03
3	0.588529	2.88558е-03	4.62670е-06
Легко видеть, что скорость сходимости значительно выше по сравнению с методом простой итерации.
В случае s=3 уравнение (1.16) принимает следующую форму:
f (xk) + f'(xk )(xk+1 - xk) + 0.5f "(xk )(xk+1 - xk )2 = 0	(1.20)
Решая это уравнение относительно Хи+i, получим
2Г(х„Х(хк)
(f'(xk))2
(1-21)
Для того, чтобы условия Теоремы 1.1 выполнялись, необходимо взять знак “ + ” когда f (х) > 0 и знак “ - “ когда! (х) .< 0. Также необходимо учесть, что сумма последних двух слагаемых в выражении (1.21) стремится к нулю вблизи корня. Это может привести к потере точности. Известно, что для квадратного уравнения ахг+ Ьх + с = 0, справедливо следующее выражение:
—(-b + Vb2 -4ас 2а \
2с
Ы-Vb2 -4ас
Применяя это преобразование к выражению (1.21), мы окончательно получим следующую итерационную схему:
32
?< y.
s -
Гл.1. Решение уравнения f(x)=O
Xk+1 = Хк-----------....... — к = 0,1,	(1.22)
f'(xk) 1 +
I V (f'(xk))2 }
Начальное условие х0 следует выбирать из условия (1.18) при s=3.
Пример 1,5. (итерационная схема (1.22)).
f(x) = exp(-x)-sin(x) = O, х* е[0,л/2] = I.
f'(х) = -(ехр(-х)+cos(x))
Г(х) = ехр(-х) + sin(x) f w(x) = -exp(-x) + cos(x)
Условие (1.18) для данной функции записывается, как
ехр(-2х0) - cos2 (х0) < О
и оно выполняется, например, если О<Хо<1. Выберем хо=О.ОО1 и ер = 10‘5. Результаты расчетов приведены в Таблице 1.5.
Таблица 1.5.
к	Хк	Хк - Хк-1	f(Xk)
1	0.585786	5.85686е-01	3.81299е-03
2	0.588532	2.74628е-03	2.57450е-09
Этот пример демонстрирует итерационный процесс с очень быстрой сходимостью.
Полином Ps(Xk+i) можно превратить в полином первой степени, и при этом порядок итерационной последовательности не изменится. Уравнение (1.20) можно модифицировать двумя способами:
1) заменить один из сомножителей (Xk+i - Хк) в (Xk+i - Хк) на. -f(xk)/ f (Xk). После решения модифицированного уравнения относительно (Xk+i - Хк), мы получим следующую итерационную схему:
1.2 Вычисление корней с использованием итерационных функций 33
X =х f(xk)fU) k+1 k (f'(xk))2~0.5r(xk)f(xk)’
k = 0,1,...
(1.23)
Это метод Хэлли(НаПеу).
2) заменить (xk+1 - xk)2 на (f(xk)/f (xk))2. Тогда после решения уравнения относительно (xk+i - xk) мы получим
к = 0,1 ,
0.5f-(xk)f(xk)
(1.24).
С вычислительной точки зрения эти методы более привлекательны по сравнению с итерационной схемой (1.22) потому, что они также имеют кубическую сходимость, но исключают вычисление квадратного корня.
1.2.2 Многоточечный итерационный процесс.
Для того, чтобы построить итерационную схему с кубической сходимостью на основе одноточечной итерации, нам необходимо использовать значения второй производной функции f(x). Иногда это может приводить к неоправданным вычислительным затратам. Существует другой способ достижения быстрой сходимости - это использовать многоточечные итерационные схемы (1.5). Одна из процедур построения таких схем основана на суперпозиции. Будем вычислять последующее приближение xk+i в два этапа:
f(xk)
(метод Ньютона),
Комбинация этих даух формул приводит к следующей итерационной схеме:
34
Гл.1. Решение уравнения f(x)=O
(1.25)
Р(Х) = Х-^’9(Х)-№Ь®
1 \Л/	1 \*J
Какую скорость сходимости дает этот метод? Для того, чтобы ответить на этот вопрос обратимся к выражению (1.7). Учитывая, что Р(х )=х* и Р (х )=0, можно вывести, что g (x*)=g (х*)=0, но g "(х*>0. Это значит, что итерационная последовательность имеет порядок три, то есть, ek+1=C(ek)3. В некоторых случаях многоточечная итерационная схема более эффективна по сравнению с одноточечной итерацией. Схема (1.25) использует только значения самой функции и первой производной и, в тоже время, обеспечивает кубическую сходимость. Способ построения итерационной схемы (1.25) позволяет нам применять такие же условия для выбора начального приближения, как и в методе Ньютона.
Пример 1 ^(многоточечная итерационная схема (1.25)).
f(x) = exp(-x)-sin(x) = O, х* е[0,л] = Г. f'(х) = -(ехр(-х)+cos(x))
Начальное приближение такое же, как в примере 1.4 (Хо=О) и ер=И0"5.
Результаты расчетов приведены в Таблице 1.6.
Таблица 1.6
к	Хк	Хк - Хк-1	f(Xk)
1	0.563552	5.63552е-01	3.49906е-02
2	0.588528	2.49754е-02	6.52801 е-06
Как можно видеть, мы имеем немного более медленную сходимость по сравнению с итерационной схемой (1.22) (пример 1.5). Тем не менее, двух итераций оказалось достаточно для того, чтобы достичь требуемой точности.
1.2 Вычисление корней с использованием итерационных функций 35
По аналогии с (1.25), можно также построить другую итерационную схему:
и после комбинирования этих двух выражений, мы получим
хки = хк -f(xk)
f'(xk)
f(xk)
k-0,1
Эта итерационная схема также имеет порядок сходимости р-3.
1.2.3 Одноточечный итерационный процесс с памятью
Методы, которые мы рассмотрели имееют высокую скорость сходимости, но их применение требует вычисления производных исходной функции, что может быть не всегда оправдано. Часто требуется значительно больше вычислительных затрат для того, чтобы вычислить f (х) и f (х) чем f(x). В дополнение, во многих приложениях встречаются функции которые не имеют явных выражений для производных. Например, функция
,, ч V ln(y) , f(x) = x+ —dy „1 + х + у
демонстрирует одну из возможных ситуаций. В этом параграфе мы рассмотрим некоторую модификацию одноточечной итерации, которая исключает вычисление производных функции. Первую производную функции f(x) в точке хк можно приближенно вычислить следующим образом:
36
Гл.1. Решение уравнения f(x)=O
f'(xk)»
f(XkM(Xk-l)
хк"хк-1
Подставляя это выражение в (1.19), мы получим
Хк+1
= Х f(x*)(X|<
(1.26)
к = 1,2,...
Эта итерационная схема называется методом секущих. Сходимость этого метода может быть описана выражением (1.8) с некоторой константой С и р»1.62, что показывает несколько более медленную сходимость по сравнению с методом Ньютона (р=2). Однако, метод секущих требует только одного вычисления f(Xk) на итерацию (мы можем использовать значение f(xin) из предыдущей итерации). Если вычисление f(x) требует значительных вычислительных затрат, тогда использование метода Ньютона приводит к большому количеству вычислений на итерацию. В этом случае метод секущих может быть более эффективен: возможно, он потребует большего количества итераций, но количество вычислений на каждой итерации может быть значительно меньше. Метод секущих имеет свои особенности:
1) для того чтобы начать итерационный процесс нам необходимо ; задать два начальных приближения Хо и Xf
2) числитель и знаменатель второго слагаемого в итерационной формуле (1.26) стремятся к нулю, когда Хи приближается к х. В этом случае ошибки округления могут значительно влиять на результат вычислений. Для того чтобы уменьшить это влияние, необходимо производить вычисления с двойной точностью.
Для выбора начальных значений Хо и Xi можно использовать такое же условие как для метода Ньютона, только применяя его к Хо и Xi:
f(xm)f"(xm)>O,m=O, 1	(1.27)
Пример 1.7 (метод секущих).
f(x) = ехр(-х) - sin(x) = 0, х* s [0, л] = I f'(x) = -(ехр(-х)+cos(x))
1.2 Вычисление корней с использованием итерационных функций 37
Г(х) = ехр(-х) 4- sin(x)
Условие (1.27) для данной функции выполняется, например, при х0= -0.01 и Xj=O. Результаты расчетов для 8р=10‘5 приведены в Таблице 1.7, Таблица 1.7.
к	хк	Хк - Хм	f(Xk)
2	0.49875	4.98753е-01	1.28956е-01
3	0.57259	7.38395е-02	2.22481 е-02
4	0.58798	1,53952е-02	7.55890е-04
5	0.58853	5.41454е-04	4.79203е-06
Можно также получить формулу для приближенного вычисления f (х). Тогда, если подставить формулы для приближенного вычисления f (х) и f (х) в (1.22), (1.23) и (1.24), мы получим некоторые одноточечные итерационные процессы с памятью и п из (1.6) равняется двум. Эта процедура приводит к очень громоздким выражениям, в тоже время скорость сходимости этих методов лишь немного выше, чем в методе секущих (но ниже чем в методе Ньютона).
1.3 Заключительные замечания.
Выбор численного метода для решения уравнения f(x)=O обусловлен в основном двумя факторами:
1) если необходимо решить одно уравнение, то можно использовать метод деления отрезка пополам или обратиться к процедуре из доступного пакета программ
2) если некоторая вычислительная процедура включает в себя многократное решение уравнения f(x)=O то, возможно, потребуется использовать метод, который вычисляет приближенное значение корня наиболее эффективным образом.
Эффективность метода зависит от того, насколько просто значения производной функции f(x) могут быть вычислены. Если вычисление значений f(x) требует значительных затрат, тогда предпочтительнее использовать метод секущих. Если можно достаточно легко оценить значение f (х), тогда можно использовать метод простой итерации с процессом Эйткена. Например, рассмотрим следующее уравнение f(x) -
38
Гл.1. Решение уравнения f(x)=O
Jo(x)-ax (J0(x) и J-i(x) функции Бесселя первого рода) и мы хотим найти х е[0,2]=1. Первая производная исходной функции f(x)= -(Ji(x)+ax). Из графика функции J^x) видно, что
тах1(х)«0.6. хе! 1
Таким образом, константа а в (1.13) определяется как а«1/(а + 0.6).
Если затраты на вычисление значения f (х) сравнимы с затратами на вычисление значения f(x), тогда метод Ньютона или многоточечная итерация будут наиболее эффективными.
Итерационные схемы третьего порядка (1.22), (1.23) and (1.24) требуют сравнительно большого количества операций на итерацию. Поэтому, эти методы могут найти применение только когда затраты на вычисление значений f(xk) и f(xk) относительно низки и необходимо определить корень с очень высокой точностью. Например, рассмотрим уравнение f(x)=exp(-x)-x=0. Вычисление производных f\xk) и f (xk) может быть организовано эффективным образом: значение ехр( -хк) сохраняется и затем используется для вычисления производных:
f(xk) = exp(-xk)-xk
f'(xk) = -exp(-xk)-1
f’(xk) = ехр(-хк)
ГЛАВА 2
Решение систем линейных уравнений
Список обозначений
А—{Эпгп}
X
N
г
(х, у)=хту
SPD
det(A)
diag(a1....aN)
I
A'1
8p
ep
©a
ei
X
x(k)
e(k) = x* - x(k) r(k) = Ax(k) - f
Zn(B)
MB)
s(B) = max|Xn(B)|
матрица (заглавные буквы, жирный шрифт) вектор (строчные буквы* жирный шрифт) размер матрицы или вектора норма вектора или матрицы транспонированная матрица или вектор скалярное произведение векторов х и у симметричная, положительно определенная (матрица) (Symmetric Positive Definite) определитель матрицы диагональная матрица с элементами a1t единичная матрица (l=diag(1, ..1)) обратная матрица (А"1 А=1) требуемая точность вычисления приближенного решения ошибка возмущения ошибка алгоритма ошибка округления точное решение системы линейных уравнений (AxW) k-oe приближение к точному решению ошибка k-го приближения вектор невязки n-ый собственный вектор матрицы В n-ое собственное значение матрицы В спектральный радиус матрицы В
40
Гл.2. Решение систем линейных уравнений
Nops	общее количество операций (сложения и
умножения/деления), необходимое для ‘ решения системы линейных уравнений
2Л Необходимые сведения из линейной алгебры.
Вначале мы кратко рассмотрим некоторые основные определения из линейной алгебры, которые необходимы для понимания матричных вычислений. В дальнейшем мы будем предполагать, что матрицы и вектора вещественные. Тогда, вектора представляют собой элементы N-мерного Евклидова пространства R . В этом пространстве определены следующие операции:
сложение: х+у=у+х, (x+y)+z=x+(y+z)
умножение на скаляр: а(х+у)=ах+ау, х, у, zeRN
В дополнение, любой паре векторов x,yeRN ставится в соответствие вещественное число (х,у), которое называется скалярным произведением. Для скалярного йроизведения постулируются следующие аксиомы:
(х, у) = (У,х)
(ах , у) = а(х , у), здесь а вещественное число
(х + у, Z) = (X , Z) + (у , Z)
(х , х) > 0 при х * о, здесь о обозначает нулевой вектор
(о, о)-О, х, у, zeRN
Векторы-столбцы
2.1 Необходимые сведения из линейной алгебры
образуют стандартный базис в RN. Все другие вектора могут быть разложены по базису bn (п=1, ...» N):
x = xib1 + ... + xNbN
Коэффициенты хп представляют собой компоненты вектора х и это представление обычно записывается в компактной форме: х=(х1,...,Хы)Т. Надстрочный индекс Т обозначает операцию транспонирования, которая превращает векторы-столбцы в векторы-строки и наоборот. Скалярное произведение двух векторов x=(x1,...,xN)T и уг=(Уъ...,Уи)Т вычисляется следующим образом
(х,у) = хту = £хпуп
Два вектора х и у ортогональны, если (х,у)=0. Для того чтобы работать с каким-нибудь объектом, нам необходим способ его измерения. С этой целью вводится понятие нормы. Норма вектора х есть вещественное число || х || со следующими свойствами:
|| х || > 0 длях* о и || о || = 0
|| а х || = | а |-|| х ||, здесь а некоторое вещественное число
|| х + у || < || х || + || у || для любых х, у
Для вектораx=(Xi, ..., Хы)Т, вещественное число
( N	\1/Р
II х цр= £|хп Г
\ П=1	>
есть норма при любом значении р>1 (р-норма Гёльдера). На практике часто применяются следующие нормы:
Цх||1=^|хп I,
( N
II х ||2= 1|хп I2
= V(x>x)
\n=1
IIX ||„= max I xn |.
42
Гл.2. Решение систем линейных уравнений
Каждая квадратная матрица образует линейный оператор в векторном пространстве RN. Если вектор у представляет собой линейную функцию вектора х, тогда
У = Ах, A = {anm}
ИЛИ
N
Уп ~~	> П—1, ...» N
m=1
Правила операций над матрицами следуют из свойств линейных отображений. Так С=А+В представляет собой сумму двух линейных функций заданных матрицами А и В, где cnm =аПт+ЬПт- Произведение АВ представляет собой результат применения отображения В, а затем отображения А. Если мы имеем у=А(Вх)=АЬх=Сх, тогда компоненты матрицы С определяются по формуле
N
Cnm = ^nk^km > П,ГП — 1 ,	, N
к=1
Транспонирование матрицы А осуществляется вращением А относительно её главной диагонали: Ат ={ аПт}Т={ Зтп }
Диагональная матрица D имеет все нулевые компоненты, кроме компонент dn на главной диагонали: D=diag(di,	, d^).
Теперь рассмотрим нормы матриц. Вещественное число ||А|| есть норма матрицы, если выполняются следующие условия:
|| А || > 0 для А * О, здесь О обозначает нулевую матрицу и
ЦО|| = 0
|| аА || = | а |-11 А ||, здесь а некоторое вещественное число
|| А + В || < || А || + Ц В ||
|| АВ || < || А ||-|| В ||
На практике часто применяются следующие нормы:
N
|| A||,= max£|anm |
ГЛ *“7
\ n=1 т=1 у
2.2 Системы линейных уравнений.
43
В дальнейшем, символ ||Ц будет обозначать некоторую из рассмотренных выше норм. Матричная норма называется согласованной с векторной нормой, если ||Ах|| < ||А||*||х||. Например, ||A||i согласована с IMIiJ|A||2c ||х||2, и ||А||ад с ||х||эд.
Свойство определённости матрицы играет важную роль в матричных вычислениях. Так матрица А называется положительно (отрицательно) определённой, если (х,Ах)>0 (<0) для всех ненулевых векторов х. Если знак скалярного произведения (х,Ах) зависит от вектора х, тогда матрица А называется неопределённой:
2.2 Системы линейных уравнений.
Система Линейных уравнений может быть представлена в виде:
Ах = f, det(А) * 0,
(2.1)
или в развернутой форме
N1Х1 + ^N2^2 +	+ ^NN^N ~
где A={anm} - квадратная матрица коэффициентов размером N на N, х=(х1 .... , xN)T - вектор неизвестных размером N и f=(fi ..... In)T -заданный вектор правой части размером N.
Некоторые физические задачи непосредственно приводят к системам линейных уравнений, например, статический анализ конструкций (мост, здание, несущая конструкция самолёта), проектирование электрических сетей. Многие физические процессы описываются дифференциальными уравнениями, которые часто не могут быть решены аналитически. В этом случае строится приближенный, дискретный аналог этих дифференциальных уравнений, и это часто приводит к системам линейных
44
Гл.2. Решение систем линейных уравнений
уравнений (если дифференциальные уравнения линейные). Также системы линейных уравнений возникают как промежуточный этап в других вычислительных процессах. Например, одна из процедур решения систем нелинейных уравнений включает в себя решение набора систем линейных уравнений.
Классический метод решения систем линейных уравнений - метод Крамера, но он очень неэффективный и, следовательно, бесполезен с практической точки зрения. Для того чтобы решить этим методом систему с N неизвестными, необходимо вычислить N+1 определитель, а это потребует ~N2N! операций. Например, если N=100 (довольно небольшая система), тогда Nops~101G2. Обращение матрицы также неэффективный подход (если мы имеем А"1, тогда вычисление решения х тривиально: x=A'1f) потому, что обращение матрицы требует приблизительно в три раза больше вычислений и в два раза больше, оперативной памяти по сравнению с другими методами решения систем линейных уравнений.
Для того чтобы выбрать тот или иной метод для решения системы (2.1) следует учитывать свойства матрицы А, такие как симметрия, определённость, ленточная структура и разреженность. Это позволяет решить систему линейных уравнений более эффективно. Выбор метода также зависит от типа решаемой проблемы, а именно: тип 1) решить систему линейных уравнений Ax=f один раз тип 2) решить набор систем линейных уравнений Ахи == fk, к = 1 М, где матрица А остается неизменной для всех к.
23 Типы матриц часто встречающиеся при решении задач.
1) разреженные матрицы.
Матрицы, большинство элементов которых нули, называются разреженными. Одно из определений разреженной матрицы следующее: матрица А размером N на N считается разреженной, если число её ненулевых элементов ~N1+y (у<0.5). Например, при N=103 и у=0.5, число ненулевых элементов 31622 (общее число элементов 10 ).
2) ленточные матрицы.
Многие задачи приводят к матрицам, которые не только разрежены, но имеют ленточную структуру ненулевых элементов. Матрица A={anm}
2.3 Типы матриц
45
называется ленточной, если anm=0 при |п - т|>к и 1=2к+1 есть ширина ленты:
3)	симметричные положительно определённые матрицы.
Многие физические задачи приводят к симметричным положительно определенным (SPD) матрицам. Такие матрицы имеют следующие свойства:
1)	А=АТ (симметрия)
2)	(х,Ах)>0 для всех ненулевых векторов х (положительная определённость).
Непосредственно использовать определение 2) для выяснения определённости матрицы невозможно. Однако существуют другие критерии, которые могут быть использованы на практике. Во-первых, все собственные значения положительно определенной матрицы положительны. Это может быть легко проверено с помощью теоремы Гершгорина (смотри Главу 3). Во-вторых, положительно определенная матрица А размером N на N имеет следующие свойства: а) апп > 0 для всех п б) annamm > (anm )2 доя n # m
в) наибольший по модулю элемент должен лежать на главной диагонали
4)	треугольные матрицы.
На практике часто возникают два типа треугольных матриц:
нижняя треугольная (anm = 0 при m > П),
46
Гл.2. Решение систем линейных уравнений
верхняя треугольная (anm = 0 при m < п).
Система линейных уравнений Lx=f может быть решена прямой подстановкой:
Xi = fl /а„
1
^nmXm
n = 2,.„ ,N
(2.2)
Аналогично, система линейных уравнений Ux=f решается с помощью обратной подстановки:
XN - ^aNN
1 Г N	А
*n ~	~	> П — N - 1 ,	, 1
®пп \	т=п+1	>
(2.3)
5)	ортогональные матрицы
Если матрица А ортогональная, тогда АТА=1 или АТ=А’1, и система линейных уравнений (2.1) решается очень легко: x=ATf.
6)	разложимые матрицы
Квадратная матрица А называется разложимой, если строки и столбцы этой матрицы можно переставить таким образом, что она представляется в следующем виде:
О D
где В - квадратная матрица размером М на М, D - квадратная матрица размером L на L, С - матрица размером М на L and О - нулевая матрица
2.3 Типы матриц
47
размером L на М (М + L = N). Это свойство позволяет разбить исходную систему на две системы меньшего размера, что значительно уменьшает объем вычислений. Вначале разделим каждый из векторов х и f на два вектора:
xi =	х^)- , х2 = (xM+1,...,xN)T
= (^|>---> fM) > ^2 = 0м+1»”’> fN)
Тогда система Ax=f решается в два этапа:
a)	Dx2 = f2
б)	Вх1 = -Сх2
7)	матрицы с диагональным преобладанием
Матрица А называется матрицей со строгим диагональным преобладанием если
N
lann l>£lanm l = sumn,n = 1.....N.
m=1 m*n
Матрица А называется матрицей со слабым диагональным преобладанием если
lann |ssumn,n = 1.....N,
и, по крайней мере, одно из неравенств выполняется как строгое неравенство.
2.4	Источники ошибок.
Когда мы решаем задачу (2.1) используя какой-нибудь метод, мы не получим точного ответа, так как в процессе решения возникают различные ошибки. Предположим, что задача (2.1) поставлена точно, то есть, мы пренебрегаем неизбежными ошибками, связанными с формулированием задачи как модели некоторого явления (ошибки измерений, недостаточно точные основные предположения и т. д.).
Вектор f в (2.1) обычно не задаётся точно, а вычисляется через параметры исходной проблемы. Эти вычисления выполняются с
48
Гл.2. Решение систем линейных уравнений
определённой ошибкой, и вместо вектора f мы получаем некоторый “возмущённый” вектор f+8f. Тогда вместо задачи (2.1), мы получим “возмущённую” задачу
А(х + 8х) = Ay = f + 8f
(2.4)
Предположим, что эта система также может быть решена и у есть решение этой системы. Тогда
еР =11 У-X’ II
называется ошибкой возмущения.
Теперь нам необходимо решить возмущенную систему (2.4). Предположим, что мы имеем некоторый алгоритм, который дает после конечного числа операций или вектор у (если операции выполняются точно) или некоторый вектор z такой, что ошибка
е, =|| z -у ||
может быть сделана произвольно малой. Величина еа называется ошибкой алгоритма.
Любой алгоритм включает в себя операции с плавающей точкой, которые выполняются неточно. Ошибки, возникающие при таких операциях, приводят к тому, что вместо вектора z мы получаем некоторый другой вектор w и величина
ег =11w ~ * II
называется ошибкой округления.
Окончательно, вместо точного решения х мы вычислим некоторый вектор W, который является приближенным решением задачи (2.1) и ошибка этого решения может быть оценена как
e=|| w-x’ ||<ер +еа+ег
2.5	Число обусловленности.
Как мы обсуждали раньше, мы имеем исходную задачу Ax=f и возмущенную задачу A(x+Sx)=f+8f, где 5f представляет теперь суммарное
2.5 Число обусловленности
49
возмущение вектора правой части и матрицы А. Наша задача состоит в том, чтобы выяснить, как возмущение 8f передаётся в возмущение решения 8х, то есть, оценить величину
|| dx || /1| х || ||<Я||/|И||
(2.5)
Перепишем это выражение в виде
II <?Х II / II х II	II <5х || ||f II
IIЛII/Ilf II	II «Я II • IIXII
Из выражений (2.1) и (2.4) следует, что ||f||=||Ax||<||A||-||x|| и ||5x||=||A18f|| < ||A'1||.||8f||. Если подставить эти оценки в предыдущее выражение, мы получим
или
Величина
cond(A)=|| А ||-|| А'11|
называется стандартным числом обусловленности. Это число оценивает максимальный коэффициент усиления возмущения 8f. Если cond(A) относительно мало, тогда система (2.1) хорошо обусловлена и возмущение решения 8х также относительно мало. Например, если l|8f||/||f||~10’14 и нас удовлетворяет ||8х||/||х||~10’6, тогда cond(A)~108 вполне приемлемо. Если cond(A) относительно большое, тогда мы сталкиваемся с плохо обусловленной системой и требуются специальные методы, для того чтобы получить приемлемый результат.
Пример 2.1 (плохо обусловленная система)
Рассмотрим следующую систему линейных уравнений:
50
Гл.2. Решение систем линейных уравнений
det( А) = 1
Точное решение этой системы х=(0,...,0,1)т. Предположим, что только последняя компонента вектора f возмущена: 8f=(0,	0, 8)т. Матрица
А верхняя треугольная, поэтому система (2.4) может быть легко решена относительно вектора 8х. Учитывая что Ax=f, система (2.4) преобразуется в A8x=8f. Распишем эту систему более подробно (8х=(р!, ... • Pn)T):
Pi-р2 -.....-Pn =о
Р2 ~...-Pn =0
Pn-1 Pn — 0
Pn = 5
Данная система просто решается обратной подстановкой, которая дает следующее решение:
Pn =5
Pn-i = $
Pn-2 = 2S
р, = 2N’25
Теперь мы имеем все вектора, чтобы вычислить коэффициент усиления определенный в (2.5). Выберем векторную норму || ||и, тогда
||8x|L=2n-2|S|,
l|x|L=i,
2.5 Число обусловленности
и
H6f|L=|8|,
cond(A) > 2N-2
Например, если N=102 и 8=10’14, тогда cond(A)~1030 и ЦЗхЦ^ -~1016 » ||х||ьо. Система (2.6) является примером очень плохо обусловленной системы.
Непосредственное вычисление числа обусловленности весьма затруднительно, так как требует вычисления обратной матрицы. Поэтому, обычно прибегают к оценке этого числа.
В некоторых случаях оценка для числа обусловленности может быть получена довольно просто. Пусть матрица А может быть представлена в следующем виде
A=l+H,	(2.7)
где ||Н||00< 1. Тогда
(1+нг =1+£(-H)k к=1
И
Следовательно
cond(A) <
Ц1+НЦ 1+HHIL
1-IIHIL 1-IIHIL
Матрицы со строгим диагональным преобладанием могут быть представлены в виде (2.7).
2.6	Прямые методы.
В этбй части мы рассмотрим прямые методы. Отличительная особенность этих методов состоит в том, что, пренебрегая ошибками
52
Гл.2. Решение систем линейных уравнений
округлений, они дают точное решение после конечного числа операций. Далее мы обсудим лишь основные принципы прямых методов.
2.6.1 Основные принципы прямых методов.
На первом этапе решения систем линейных уравнений матрица А представляется в виде произведения двух треугольных матриц. Эта операция называется разложением матрицы, и форма разложения зависит от свойств матрицы А. Для матриц общего вида используется LU-разложение
A = LU,
где L - нижняя треугольная матрица с единицами на диагонали, и U -верхняя треугольная матрица. Для SPD матриц используется разложение Холеского
A = LLT,
где L - нижняя треугольная матрица. После разложения матрицы А, исходная система Ax=f может быть представлена в виде двух систем уравнений:
Ly = f , Ux = у
или	(2.8)
Ly = f , LTx = у
Применяя прямую, а потом обратную подстановки, можно вычислить решение исходной системы (смотри (2.2) и (2.3)). При таком подходе, суммарная ошибка полученного решения состоит из ошибки возмущения в множителях L и U, и ошибки округлений при решении систем (2,8). Вычислительные затраты для метода LU-разложения составляют Nops ~ N3 (для матриц общего вида), а для разложения Холеского требуется в два раза меньше вычислений и оперативной памяти чем дая метода LU-разложения.
Существует ещё одно полезное разложение: найти ортогональную матрицу Q и верхнюю треугольную матрицу R, так что QAx=Rx=Qf. Тогда решение х может быть получено обратной подстановкой при
2.6 Прямые методы
'53
векторе правой части равном Qf. Ортогональное разложение привлекательно тем, что умножение А или f на Q не увеличивает ошибки округления или возмущения связанные с матрицей А или вектором f. Для того чтобы убедиться в этом, заметим, что
(Qx,Qx) = (Qx)T(Qx) = xTQTQx = хтх
так как QTQ=I. Преимущество такого подхода состоит в том, что он дает вычислительно устойчивый метод. Однако? этот метод требует в два раза больше вычислений по сравнению с методом LU-разложения. Поэтому ортогональные разложения применяются для решения систем линейных уравнений только в некоторых специальных случаях. Ортогональные разложения также находят применение для вычисления собственных значений.
Далее мы рассмотрим более подробно простой и эффективный метод для решения систем линейных уравнений называемый методом прогонки. Этот метод основан на специальном разложении, которое применимо к системам уравнений с ленточной матрицей. Мы ограничимся случаем, когда матрица системы (2.1) трехдиагональная. Общая структура метода прогонки может быть представлена в следующем виде:
прямой ход
о Y х,л
обратный ход
Для удобства, запишем систему уравнений с трехдиагональной матрицей в виде:
54
Гл.2. Решение систем линейных уравнений
Ь1Х1 +	= f,
anxn-i + bnxn + cnxn+1 = fn, n = 2 ,..., N -1
aNXN-1 + bNXN =
(2.9)
Предположим, что мы можем записать следующее рекуррентное соотношение для компонент вектора решения:
хп = апхп+1 + рп,	(2.10)
по крайней мере, это возможно для первого уравнения. Пусть коэффициенты ап-1 и Рп-1 известны, тогда мы можем записать
ХП-1 ^П-1ХП Рп-1
' anxn-1 + bnXn + Cnxn+1 = fn
После исключения из этих двух соотношений, мы получим
_______Cfi___у, . ^пРп-1 1____________П+1	I К
^п^п-1	^п^п-1 "**ЬП
Сравнивая это соотношение с (2.10), мы видим, что коэффициенты ап и Рп могут быть вычислены по формулам
,N
После того, как параметры ап и рп вычислены, решение системы (2.9) может быть легко получено. В начале, запишем соотношение (2.10) для n=N-1 и последнее уравнение (2.9):
XN-1 “ aN-1XN + Pn-1 aNXN-1 + bNXN = fN
2.6 Прямые методы
55
Исключение Xn-i дает
v _ 3nPn-i an ~ Т	•
aNaN-i + On
Остальные компоненты хп вычисляются с использованием формулы (2.10) для n=N-1,...,1. Метод прогонки в полной мере учитывает ленточную структуру матрицы, поэтому этот метод требует всего лишь NOps=8N-6.
Следующая теорема описывает условия, при которых метод прогонки устойчив.
Теорема 2.1
Предположим, что коэффициенты системы (2.9) удовлетворяют условиям
Ь-| 0,. bN Ф 0 ,
ап*0, сп *0 (п = 2 ,, N -1),	(2.11)
|bn |>|an | + |cn I п = 2 ,, N -1,
| | > | |, | bN | > | aN |,
где по крайней мере одно из неравенств из последней строки есть строгое неравенство. Тогда выполняются следующие неравенства:
|<хп |<1 (n = 2,...,N)
и
I апап-1 + ьп | > min I cn I п
Таким образом, условия (2.11) достаточны для устойчивости метода прогонки.
2,6.2 Оценка ошибки приближенного решения.
Непосредственно вычислить вектор ошибки е=х-х мы не можем, так как точное решение нам не известно. Мы можем, по крайней мере, с машиной точностью, вычислить вектор невязки r=Ax-f, который обращается в нулевой вектор когда е=О. Однако, малая величина вектора невязки не гарантирует, что вектор ошибки также мал. Проанализируем взаимосвязь между е и г более подробно. В начале заметим, что г=Ах-Ах*=А(х-х )=Ае, то есть е=А’1г. Тогда отношение l|e||/||f|| примет вид
56	Гл.2. Решение систем линейных уравнений
Hell = Не II = II A-У || < || А'11|-Иг || ||f || || Ax’|| || Ах’||	|| Ах’||
Учитывая, что ||Ах ||<||А||-||х ||, мы можем заменить знаменатель в левой части неравенства и, умножая на ||А||, получим оценку
^S||A||.||A-4|M-oond(A)M.
Это неравенство показывает, что относительная ошибка мала, когда относительная величина вектора невязки мала и число обусловленности не слишком велико.
2.6.3 Заключительные замечания.
Начиная с середины 50-х годов, был достигнут значительный прогресс в области вычислительной линейной алгебры. Это подтверждается наличием эффективного и надёжного программного обеспечения реализующего различные прямые методы для решения систем линейных уравнений. Это обеспечение доступно или в виде библиотеки подпрограмм (IMSL®, NAG®, LAP АСК), или как встроенные функции системы программирования (например, MATLAB®). Эти программы реализуют различные формы разложения, которые мы обсуждали, для различных типов матриц, таких как общие, ленточные, симметричные, разреженные и SPD матрицы. На практике, накопление ошибок округления может приводить к значительному искажению вычисленного решения. Поэтому все алгоритмы в пакетах программ включают в себя специальные меры (такие как выбор ведущего элемента и балансировка матриц) для того, чтобы уменьшить влияние этого эффекта. В стандартном программном обеспечении также обеспечивается оценка числа обусловленности, что даёт возможность оценить ошибку вычисленного решения. В дополнение, библиотеки подпрограмм включают в себя пакет BLAS (Basic Linear Algebra Subprograms, основные подпрограммы линейной алгебры). Этот пакет реализует различные операции над векторами и матрицами, и он широко используется при создании прикладного программного обеспечения для научных й инженерных вычислений.
2.7 Итерационные методы
57
2.7	Итерационные методы.
Итерационные методы для задачи Ax=f требуют бесконечного числа операций для получения точного решения (если предположить, что вычисления производятся точно). Конечно, на практике мы производим конечное число шагов и в результате получаем некоторое приближенное решение. Итерационные методы легко конструируются и могут быть очень эффективны. Однако, они требуют дополнительного анализа свойств матрицы для того, чтобы выбрать подходящий метод.
2.7.1 Основные принципы итерационных методов.
Итерационные методы обычно основываются на следующей эквивалентной форме системы (2.1):
х = Вх + д,
(2.12)
где В называется итерационной матрицей. Эта форма системы линейных уравнений образуется по аналогии с (1.1), мы просто применили тот же подход к системе (2.1). Компоненты итерационной матрицы выражаются через компоненты матрицы А. Вектор g выражается через вектор f и компоненты матрицы А. Матрица В в явном виде обычно не вычисляется, но мы будем подразумевать, что, в принципе, это может быть сделано. Итерационный процесс формулируется на основе эквивалентной формы (2.12) в следующем виде:
1)	зададим начальное приближение (вектор) х(0)
2)	для каждого значения к будем вычислять последующие приближения как
х(к + 1) _ Цх(к) + g
или
х(к+1> = в х(к) + дк к = 0,1 ....
(2.13)
(2.14)
3)	если
58
Гл.2. Решение систем линейных уравнений
или
тогда итерационный процесс завершён и
Итерационный процесс (2.13) называется стационарным, а процесс (2.14), соответственно, нестационарным. Как последовательные приближения х(к) соотносятся с точным решением задачи (2.1)? Для того чтобы ответить на этот вопрос, проведем простой анализ. Каждое приближение х(к) может быть представлено в следующем виде:
х(к) = х* + е(к) х(к+1) =х*+е(к+1),
(2.15)
где е(к) - вектор ошибки к-го приближения. Подставив (2.15) в (2.13) и учитывая (2.12), мы получим
е(к+1) =Ве(к) или е(к) = Вке(0), к = 0,1 ,...	(2.16)
Если
lim || е(к) || = 0, к —><х>
тогда итерационный процесс сходится и
lim х(к) = х*. к->оо
Разложим вектор по собственным векторам матрицы В:
N
e(0) =£a„zn > IIzn 11= 1-
n=1
2.7 Итерационные методы
59
Тогда
N	N
e(k)=£anBkzn =£aX(B)Zn n=1	n=1
Оценка нормы вектора e(k) даёт
N ||e(k)||<£|an|.|Xn(B)|k n=1
Следовательно
lim || е<м ||= 0,
к ->ао
если все |ХП(В)|<1. Этот простой анализ поясняет основную теорему итерационных методов.
Теорема 2.2
Итерационный процесс (2.13) сходится для любого начального вектора х(0) тогда и только тогда, когда
s(B) < 1,
(2.17)
здесь s(B) = max Xn(B) - спектральный радиус матрицы В. п
Достаточное условие сходимости итерационного процесса:
IIВ ||<1, тогда условие (2.17) также выполняется, потому что s(B)<||B|| для любой матричной нормы.
На результат итерационного процесса (2.13) влияют ошибка алгоритма и, естественно, ошибки округления. Ошибку алгоритма можно легко оценить. Пусть, для простоты, итерации начинаются с (0)
вектора х = g, тогда
к	оо
1=0	1=0
Следовательно
к	к
||е<к> ||=||х- -х(к) |Н| £в'д||< £ || В ||' ||д||. 1=к+1	1=к+1
60
Гл.2. Решение систем линейных уравнений
Для ||В||<1 мы получаем
к+1

таким образом, чем меньше спектральный радиус матрицы В, тем быстрее приближения х(к) стремятся к х. Что касается ошибок округления, то следующая оценка может быть получена:
, для всех к.
Эта оценка показывает, что при использовании итерационных методов ошибки округления не накапливаются.
2.7.2 Метод Якоби.
Представим матрицу А в следующей форме:
>
(2Л8)
где
0
*
D = diag(a„,...,aNN),
*
и =
о
0
2.7 Итерационные методы
61
Один из простейших способов построения эквивалентной формы (2.12) следующий:
Ах = (L + D + U)x = f
Dx = -(L + U)x + f = (D - A)x + f,
и окончательно
x = (l-D-1A)x + D 1f
(2.19)
Тогда итерационная матрица В и вектор g для метода Якоби записываются как
В = в. =I-D 1А W
g = Sj = D 1f
Построение эквивалентной формы (2.19) состоит в явном выражении п-го неизвестного из n-го уравнения системы. Так как матрица Bj легко вычисляется, можно оценить S(Bj) и определить сходится ли метод Якоби. Имеются также достаточные условия, которые позволяют выяснить сходимость этого метода непосредственно через компоненты матрицы А. Итерационный процесс (2.13) с матрицей B=Bj и вектором 9=9j сходится, если
1) А есть матрица со строгим диагональным преобладанием. В этом случае, учитывая структуру матрицы Bj, можно легко показать, что
2) А есть неразложимая матрица со слабым диагональным преобладанием.
Пример 2.2 (метод Якоби)
Рассмотрим систему (2.1), где матрица А и вектор f имеют следующий вид:
(2.20)
62
Гл.2. Решение систем линейных уравнений
Эта система имеет точное решение х =(2/3 , 1 , 1/3)т. Итерационная матрица Bj и вектор gj записываются как
0.5 0 0.5
' 1/6 '
1/2 с1/6,
Собственные значения матрицы Bj:
Х(В4) = -0.5^2,0,0.5>/2, s(Bj) = 0.5>/2 « 0.7071
Следовательно, метод Якоби для данной системы уравнений сходится. Результаты вычислений для начального вектора х(о)=(О , 0 , 0)т и 8Р = 10’5 представлены в Таблице 2.1.
Таблица 2.1
к	х(К?	VW „(k-п X “ X	2	- тде“~"  6	2
1	0.1666 0.5000 -0.1666	5.5277е-01	8.5602е-01
2	0.4166 0.5000 0.0833	3.5355е-01	6.1237е-01
♦			• в	• • •
10	0.6510 0.9687 0.3177	2.2097е-02	3.8272е-02
		• • •	• • •
20	0.6661 0.9990 0.3328	6.9053е-04	1.1956е-03
	а • в	• • •	• • •
33 /	0.6666 0.9999 0.3333	7.6293е-06	1.2619е-05
2.7 Итерационные методы
63
2.7.3 Метод Гаусса-Зейделя.
Обратимся опять к выражению (2.18). Только теперь мы построим эквивалентную форму (2.12) в другом виде:
Ах = (L + D + U)x = f,
(L + D)x = -Ux + f,
(В = BGS = -(L + D)-1 U, g = gGS = -(L + D)1 f) ИЛИ
(U + D)x = -Lx + f ,
(B = BGS = -(u + D) X, g = gGS = -(U + D) 1f)
Обращать матрицу L+D или U+D не имеет смысла, Так как мы можем построить итерационную схему в виде
или
(L + D)x(k+1) = -Ux(k)+f
(U + D)x(k+1) = -Lx<k) + f
(2.21)
(2.22)
Матрица L+D нижняя треугольная, а матрица U+D верхняя треугольная, поэтому системы (2.21) и (2.22) могут быть легко решены относительно вектора х(к+1\ Так как матрица Bgs в явном виде не вычисляется и анализ её собственных значений невозможен, то метод Гаусса-Зейделя обычно применяется к системам, удовлетворяющим определённым условиям, а именно:
1)	А есть матрица со строгим диагональным преобладанием,
2)	А есть неразложимая матрица со слабым диагональным преобладанием.
3)	А есть SPD матрица. В этом случае, если метод Якоби сходится (s(Bj)<1), тогда метод Гаусса-Зейделя сходится более быстро, так как s(BGs)=s2(Bj) для матриц этого типа.
Пример 2.3 (метод Гаусса-Зейделя)
Рассмотрим систему (2.20) из примера 2.2. Итерационная матрица BGs и вектор g<Gs дая этой системы имеют следующий вид
64
Гл.2. Решение систем линейных уравнений
	' 0	0.5	0 л		(1/6
Вг<ч —	0	0.25	0.5	’ 9gs ~	7/12
	. 0	0.125	0.25 .		> 1/8
Собственные значения матрицы Bgs:
MBgs) = 0,0,0.5, s(Bgs) = 0.5.
Результаты вычислений для начального вектора х(0)=(0 , 0,0)т и 8Р = 10’ представлены в Таблице 2.2.
Таблица 2.2
к		" v(k) (к-1) X. - X	2	ew -> е 2
1	0.1666 0.5833 0.1250	6.1941е-01	6.8338е-01
2	0.4583 0.7916 0.2291	3.7325е-01	3.1249-01
		а а в	» а а
10	0.6658 0.9991 0.3329	1.2207е-03	1.2200е-03
		•	• а	• а <
17	0.6666 0.9999 0.3333	9.5169е-06	8.9655е-06
Как показывают эти результаты, для данной системы метод Гаусса-Зейделя сходится быстрее, чем метод Якоби. Это объясняется тем, что матрица А определённая в (2.20) есть SPD матрица и s(Bgs)<s(Bj).
2.7.4 Метод релаксации.
Основной вопрос, возникающий при использовании итерационных методов: как достичь наиболее быстрой сходимости, или другими словами, как построить итерационную матрицу для данной системы,
2.7 Итерационные методы
65
которая имела бы наименьший спектральный радиус s(B). Для этого необходимо иметь некоторый способ управления свойствами итерационной матрицы В. Один из таких способов реализуется в методе релаксации.
В начале обсудим общую схему этого метода. Рассмотрим систему (2.1) с SPD матрицей А. Для вектора приближенного решения х(к) мы определим функционал ошибки в виде
Ф(х(к)) = (х(к) -х*,А(х(к) - X*)) = (е(к\Ае(к)) = (е(к),г(к)).
Для того чтобы вычислить другой вектор х(к+1), который отличается от х(к) только n-ой компонентой и такой, что ф(х(к+1))<ф(х(к)), положим x(k+1)=x(k)+abn (Ьп есть базисный вектор, смотри 2.1). Тогда легко получить, что	|
4-r<k)V	/Г(к)\2
ф(х(к+1)) = Ф(х(к)) + ] лпл - Ь-L 9	(2.23)
^пп	^пп
где
гл(к> = (Ах<к) — f, Ь„)
есть n-ая компонента вектора невязки. Сумма второго и третьего слагаемых в (2.23) принимает отрицательное значение, если выбрать параметр а так, чтобы
I aann + г'к) |<| г<к> |
или
г(к)
а = -со-2— t 0<а><2.
апп
пл
(к+1)
Тогда n-ая компонента вектора х вычисляется как
Г(Ю хГ1)=х<^-(Л-, п	л _	7
апп
где называется параметром релаксации. Выбирая таким же образом параметр а для п=1 мы получим следующую итерационную схему
x(k+1) =x<k»-(BD-1(Ax(k,-f) =
((1-ю)1 + юВ;)х<к) + ®D’’f = BJR(®)x(k) +gJR(co)
(2.24)
<56
Гл.2. Решение систем линейных уравнений
Эквивалентная форма (2.12) для этой итерационной схемы может быть также записана в виде
Dx = Dx - со(Ах - f).
(2.25)
Теперь мы имеем итерационную матрицу, которая зависит от параметра (0. Можно подобрать такое значение параметра со, которое обеспечивает минимальное значение s(Bjr(o))), Такое значение называется оптимальным значением параметра релаксации и обозначается a>opt. Метод релаксации (2.24) основывается на методе Якоби (Bjr(1)=Bj) и X(Bjr(co))=1 +<o(X(Bj)-1 ). Пусть A|<X(Bj)<Xr, тогда оптимальное значение параметра релаксации вычисляется как
2
°>o₽t " 2 + 1, -Хг
И
S(Bjr(<OoJ)= ..........
\ ик х opi** 2 ।	2^
Пример 2.4 (вычисление оптимального параметра релаксации для итерационной схемы (2.24))
Рассмотрим следующую матрицу для системы (2.1):
Собственные значения матрицы Якоби Bj : -2/3, 1/3, 1/3 и, следовательно, s(Bj)=2/3. Учитывая, что Л,|=2/3 и Хг=1/3, получим coopt» 0.8571. Тогда s(BJR(©opt))«0.4286<s(Bj) и это говорит о том, что можно ускорить сходимость по сравнению с методом Якоби.
Следующий логический шаг - построить метод релаксации основанный на методе Гаусса-Зейделя (2.21). Учитывая выражение (2.18), можно преобразовать (2.25) в следующую эквивалентную систему:
Dx = Dx - co(L+D+U)x + <of,
2.7 Итерационные методы
67
(D + oL)x = (D - <o(D + U))x + of, (BS0R=(D + oL)-’(D-o(D + U))).
Как и прежде, обращать матрицу D+®L не нужно, а записать итерационную схему в виде
(D + <oL)x(k+1) = (D - co(D + U))x(k) + of, k = 0 , ...	(2.26)
Матрица D+coL нижняя треугольная и система (2.26) может быть легко решена относительно вектора х(к+1). На практике было замечено (в некоторых случаях доказано), что итерационная схема (2.26) сходится медленнее при <о<1 (нижняя релаксация), чем при <о>1 (верхняя релаксация). Поэтому обычно используется со>1 и за итерационной схемой (2.26) закрепилось название метод последовательной верхней релаксации (SOR, Successive Over-Relaxation). Для небольшого числа специфических (но важных) задач оптимальное значение параметра релаксации может быть определено. Рассмотрим кратко этот случай.
Матрица Якоби
i
Bj=l-D1A = -D’1L-D1U
называется согласованно упорядоченной, если
I
'	X(-aD‘1L-— D"4J) = X(BJ
a
для любого параметра a^O. Например, блочно-трехдиагональные мат-риДы вида
68
Гл.2. Решение систем линейных уравнений
где Dm - квадратная матрица размером Nm х Nm (m=1,...,p), Lm и 11тИ -матрицы размером Nm х Nm+1 и Nm^ х Nm соответственно (m=2,...,p ; Ni +...+Np=N) являются согласованно упорядоченными. Пусть А есть SPD согласованно упорядоченная матрица. Если метод Якоби для этой системы сходится (s(Bj)<T), то значение оптимального параметра релаксации для метода SOR вычисляется по формуле:
2
И S(BSOR) = £0opt-1
(2.27) -
Пример 2.5 (метод SOR)
Рассмотрим снова систему (2.20) из примера 2.2. Матрица А трехдиагональная (это специальный случай блочно-трёкдиагональной матрицы) и, следовательно, согласованно упорядоченная. В дополнение, она также является SPD матрицей, и мы можем вычислить a>Opt согласно выражению (2.27), Для данной матрицы
s(Bj) = 0.5-72,
тогда <o0pt«1 -17157 и s(B§or)~0.171 57. Это означает, что для данной системы метод SOR обеспечивает очень быструю сходимость по сравнению с методами рассмотренными выше. Результаты вычислений для начального вектора х(0)=(0 , 0 , 0)т и ер = 10’5 представлены в Таблице 2.3.
Таблица 2.3
к	' Чк) 		у(к) FV	 л " X	2	е^2
1	0.1952 0.7001 0.2148	7.5798е-01	5.7109е-01
2	0.5719 0.9265 0.3106	4.4975е-01	1.2202е-01
	в »		* • •	• • •
9	0.6666 0.9999 0.3333	7.9500е-06	1.5046е-06
2.7 Итерационные методы
69
Как показывают эти результаты, требуется только 9 итераций, для того чтобы получить приближенное решение с заданной точностью и это в два раза меньше по сравнению с методом Гаусса-Зейделя.
Вычисление спектрального радиуса матрицы Якоби часто требует значительных вычислительных затрат, поэтому иногда прибегают к грубой оценке s(Bj), что позволяет получить приемлемое значение параметра релаксации, близкое к coopt.
Что касается других типов матриц, то простые способы вычисления значения оптимального параметра релаксаций не известны. Однако, известны достаточные условия при которых метод SOR сходится:
1) если А есть SPD матрица, то метод SOR сходится при О<со<2. В этом случае, значение параметра релаксации, определяемого по формуле (2.27), близко к оптимальному, так как
C^opt ~ 1 — $(®SOR ) — \/^opt	*
2) если А есть матрица со строгим диагональным преобладанием или неразложимая матрица со слабым диагональным преобладанием, то существует такое со >1, что метод SOR сходится при 0<со<со.
2.7.5 Вариационно-итерационные методы.
Как следует из предыдущего рассмотрения, анализ сходимости итерационного метода предусматривает знание спектрального радиуса итерационной матрицы. Однако вычисление или оценка s(B) часто требует неоправданно больших вычислительных затрат. Существуют методы, сходимость которых обеспечивается с помощью специальных параметров, которые, в свою очередь, зависят от приближённого решения. Очевидно, что осуществление такого подхода приводит к нестационарным итерационным процессам вида (2.14).
Мы рассмотрим итерационные схемы следующего вида:
х(к+1) = Х(Ю _ Tk(Axlk) - f), к = 0,1 , ...	(2.28)
где Тк^О - итерационный параметр. Введём вектор невязки r(k>=Ax(k)-f. Используя выражение (2.28), вектор невязки r(k+1\ связанный со следующим приближением, может быть выражен через r(k):
70
Гл.2. Решение систем линейных уравнений
Ах(к+1) - f = (Ах(к) - f) - ткА(Ах(к) - f) =
Г(Ю _т Д|-(к> =г<к+1> к
Тогда мы можем определить параметр тк таким образом, чтобы || г<к+1) Цг была минимальной. Норма вектора невязки r<k+1 выражается следующим образом
IIr(k+D ||2= (г(к+1) , r(k+1)) = (r{k)-TkAr(k) , г(к)-ткАг(к) (r(k) , г{к))-2тк(г(к) , Ar(k)) + Tk(Ar(k) , Аг(к)) = ф(тк)
(2.29)
Условие ф'(Тк)=О есть условие минимума функции <р(тк), так как ф'(тк) = (Аг(к) , Аг(к))=||Аг(к)||*>0.
Тогда итерационный параметр тк вычисляется по формуле
(г(к), Аг(к))
(Аг(к), Аг(к)) ’
(2.30)
Итерационная схема (2.28) и (2.30) называется методом минимальных невязок. Проанализируем сходимость этого метода. Если мы подставим выражение (2.30) в (2.29), то получим
(Аг(к) , Аг(к>)
(2.31)
Оба слагаемых в правой части выражения (2.31) положительны, следовательно,
(к+1>|Ц<1|г(к’111
для любой определённой матрицы А и это доказывает сходимость итерационной схемы (2.28). Теперь рассмотрим скорость сходимости метода минимальных невязок. Предположим, что матрица А системы (2.1) имеет следующие свойства:
у,	xeRN (0 < у, <y2 <о°)
2.7 Итерационные методы
71
II А- Ат ||<2у3.
Тогда |]r<k*1)||2=q||r(k)]|2 где
Y1~Yi+4Уэ7т|+У,Гг (Y<+Y2)2+4y3
Если матрица А имеет вещественные собственные значения, то можно положить
у2 = maxXn(A) и у^пнпХДА). п	п
Пример 2.6 (скорость сходимости метода минимальных невязок)
Рассмотрим матрицу А из примера 2,2. Эта матрица симметричная (у3=0)и
у2 =maxA.n(A) = 2 + >/2 , у, = minA.n(A) = 2-V2 . П	П '
Тогда величина
q = 0.5-72 » 0.7071
что говорит о довольно медленной сходимости.
Для SPD матриц можно также использовать итерационную схему (2.28), только вычислять параметр ти другим способом. Вместо вектора невязки возьмём вектор ошибки е(к)=х -х . Учитывая, что Ах =f, из выражения (2.28) следует
е(к+1) = х(к+1) - х* = х(к) - х* + тк А(х(к) - х*) = е(к)-ткАе(к)
(2.32)
Мы не можем вычислить вектор ошибки, но
Ае(к+1) = Ах(к) - Ах*. = Ах(М - f = г<к).
Таким образом, можно определить параметр Тк, минимизируя величину (е(к+1), Ае(к+1)). Используя выражение (2.32), получим
72
Гл.2. Решение систем линейных уравнений
(е(к+1) , Ае(к+1)) = (е(к)-ткг(к) , г(к>-ткАг(к)) =
(е(к) , г(к))-2тк(г(к) , г(к)) + т2(г(к) , Аг(к)) = ф(тк)
Условие. ф'(тк)=О есть условие минимума функции ф(тк)> так как ф"(тк) = (г(к) , Аг(к)) > О
(А есть SPD матрица). Тогда параметр вычисляется по формуле
(2.33)
Итерационная схема (2.28) с параметром Тк определяемым выражением (2.33) называется методом наискорейшего спуска. По свойствам этот метод близок к методу минимальных невязок.
На основе метода наискорейшего спуска можно построить итерационную схему с более высокой скоростью сходимости. Для этого модифицируем выражение (2.28) и запишем его в виде:
X(k+1> = X(k) - Tkd(k>, к = 0,1 ,...	(2.34)
где d(k) - вектор, который направлен к решению системы линейных уравнений (вектор направления). В методе наискорейшего спуска, вектор невязки г(к> выбирается в качестве вектора направления, но для многих систем такой выбор оказывается не очень хорошим с точки зрения скорости сходимости. Лучшие вектора направления задаются следующими соотношениями
d(0) = г <°>
(2.35)
d(k) = r(k) + akd(k-1) , k = 1,2 ,...	'
Параметр otk определяется таким образом, чтобы вектора d(k) и Ad(k'1) были ортогональны ((d(k), Ad(k’1))), тогда
(r<k) , Ad(k'1>)
“k ” (d(k'1), Ad(k-’>)
(2.36)
Используя тот же самый подход, что и методе наискорейшего спуска, /л(к+1) параметр Тк определяется из условия минимума величины (ev , Ае(к+1)), что приводит к следующей формуле
2.7 Итерационные методы
73
(r(k),d(k>)
Тк (d(k) , Ad(k))	(237)
Итерационная схема (2.34) вместе с (2.35), (2.36) и (2.37) называется методом сопряжённых градиентов. Ошибка к-го приближения, получаемого этим методом, подчиняется следующей оценке
(е'к), Ае,к)) <2(е(0>, Ае(0) )(q( А))к, где
./max Х.(А) - ,/min А.. (А)
q(A) = 7-.--п . У .< 1
Jmax МА) + ./min Хп (А) V d	V п
Отличительной чертой этого метода является то, что, пренебрегая ошибками округлений, мы получаем r(k)=0 при некотором k<N, следовательно х(к)=х . Это значит, что нужно не более чем N итераций, для того чтобы вычислить точное решение. Для больших систем уравнений это не очень утешительный результат. Тем не менее, во многих случаях метод сопряжённых градиентов и его модификации сходятся очень быстро.
Как мы видим, скорость сходимости метода сопряжённых градиентов зависит от спектра матрицы коэффициентов системы уравнений. Для того чтобы улучшить сходимость этого итерационного метода, можно попытаться преобразовать исходную систему в другую систему, имеющую то же самое решение и матрица коэффициентов которой имеет более узкий спектр. Такое преобразование осуществляется с помощью специальной матрицы, которая называется пред-обусловливатель. Хороший предобусловливатель значительно ускоряет сходимость, что более чем компенсирует вычислительные затраты необходимые для применения преобразования. Например, если матрица Р близка к матрице А, то преобразованная система
Р Ах = Р 1f
имеет тоже решение что и Ax=f, но собственные значения матрицы Р‘1А будут близки к единице (тогда q(P‘1A) будет мало).
В качестве простого предобусловливателя можно использовать диагональ исходной матрицы коэффициентов:
P = diag(a11 ,...,aNN).
74
Гл.2. Решение систем линейных уравнений
Преобразование, основанное на таком выборе матрицы Р, называется предобусловливанием Якоби. Применение такого предобусловливания осуществляется очень просто, хотя с другой стороны, применение более сложных процедур обычно даёт лучшие результаты.
Пример 2.7 (применение предобусловливания Якоби) Рассмотрим систему уравнений с матрицей коэффициентов
Скорость сходимости метода сопряжённых градиентов для системы Ax=f определяется параметром q(A)«0.315. После применения пред-обусловливателя Якоби P=diag(2, 4, 2) к матрице А, мы получим преобразованную матрицу
1 0^
4 1
1 2J
1	0.5	0
0.25	1	0.25
0	0.5	1
сопряжённых градиентов для
Теперь скорость сходимости метода сопряжённых градиентов для системы P'1Ax=P'1f определяется параметром q(P‘1A)®0.128. Таким образом, достигается значительное ускорение сходимости по сравнению с исходной системой.
2.8 Какие методы более эффективны: прямые или итерационные?
Ответить на этот вопрос в общем случае не возможно - это зависит от конкретной проблемы. Мы можем сделать только некоторые
2,7 Итерационные методы
75
приблизительные оценки. Пусть А является матрицей общего вида. Согласно выражению (2.13) необходимо -2N2 операций, для того чтобы вычислить следующее приближение к решению. Тогда К итераций потребуют приблизительно 2KN2 операций, и по сравнению с методом LU-разложения, вычислительные затраты для К итераций будут меньше, если
№ >2KN2 или К<—N
2
Пусть теперь А является ленточной матрицей с шириной ленты т, и сама лента разрежена, скажем, она имеет р ненулевых элементов в строке. В этой ситуации, затраты для метода LU-разложения составляют mzN операций, в то время как затраты для К итераций составляют приблизительно 2pKN операций. Поэтому итерационные методы должны сходиться меньше чем за т2/2р итераций, для того чтобы быть более эффективными. Например, для матриц возникающих при решении уравнений в частных производных m приблизительно равно N1/2 и р>5. Число уравнений в задачах этого типа может лежать в пределах от 102 до 106. Следовательно, можно заключить, что итерационные методы более эффективны при решении больших систем линейных уравнений.
ГЛАВА 3
Вычисление собственных значений и векторов
Список обозначений
N
А , х
(х, у)=хту det(A)
I
А1
МА)
Ер
„(к)
р(х) = (х, Ах)/(х , х) г(х) = Ах - р(х)х
матрица (заглавные буквы, жирный шрифт) вектор (строчные буквы, жирный шрифт) размер матрицы или вектора норма вектора или матрицы транспонированная матрица или вектор скалярное произведение векторов х и у определитель матрицы
единичная матрица (I = diag( 1 , ... , 1))
обратная матрица (А"1 А - I)
n-ый собственный вектор
n-ое собственное значение матрицы А
требуемая точность вычисления приближенного решения
k-ое приближение к собственному вектору отношение Рэлея для матрицы А
вектор невязки для задачи на собственное значение
Необходимость определения собственных значений квадратной матрицы возникает при решении различных научных и инженерных задач. В качестве примера можно привести такие проблемы как вибрация конструкций, уровни энергии в квантовых системах, колебательные движения молекул, решение и анализ систем линейных дифференциальных уравнений. Задача на собственное значение является нелинейной задачей, поэтому вычисление собственных значений и векторов возможно лишь на основе , той или иной итерационной процедуры. В этой главе рассматриваются два основных подхода для решения задачи на собственное значение: степенной метод
78
Гл. 3. Вычисление собственных значений и векторов
и QR метод. Мы ограничимся рассмотрением собственных значений вещественных матриц, хотя аналогичные подходы применимы и к комплексным матрицам. В начале, мы рассмотрим основные определения из линейной алгебры, относящиеся к задаче на собственное значение.
3.1	Основные сведения из линейной алгебры, относящиеся к задаче на собственное значение.
Общие сведения из линейной алгебры представлены в параграфе 2.1. Здесь мы рассмотрим некоторые специфические определения, касающиеся задачи на собственное значение. В общем случае, эта задача формулируется в виде
Azn = XnMzn , п = 1, ..., N
где А и М - квадратные матрицы размером N на N и пара (Xn , zn) есть собственное значение и соответствующий собственный вектор. В частности, такая проблема возникает при анализе вибрации конструкций. Мы ограничимся рассмотрением более простой проблемы (стандартная задача на собственное значение):
Azn = Мп,л = 1.N
(3.1)
Матрица А имеет N собственных значений (набор всех значений называется спектром матрицы А), и они определяются как корни характеристического полинома det(A - А,1). Собственные вектора zn (п = 1 ,	, N)
образуют систему ортонормированных векторов:
(Zn-Zm) =
1, n = m
0,n*m
В общем случае, матрица А имеет комплексные собственные значения. Только матрицы, обладающие специальными свойствами, имеют только вещественные собственные значения. Такие матрицы называются Эрмитовыми. Пусть символ “Н” обозначает последовательное применение двух операций: комплексного сопряжения и транспонирования,
3.2 Локализация собственных значений
79
тогда матрица А является Эрмитовой если А=АН. Вещественная симметричная матрица есть частный случай Эрмитовой матрицы.
В дальнейшем, для определённости, мы будем нумеровать собственные значения следующим образом:
Это значит, что X-t - минимальное по модулю собственное значение, a Xn - максимальное по модулю собственное значение.
Отношение Рэлея для симметричной матрицы А определяется как
для любого вектора х^о. Оно имеет очень полезные свойства, а именно
1)	Xj < р(х) < Xn для всех ненулевых векторов xgRn
2)	если х = zn, тогда р(х) = Хп
3)	на основе предыдущего свойства, вектор невязки для задачи на собственное значение может быть определён как
г(х) = Ах -р(х)х
и неравенство ||г(х)||<||Ах-ах|| справедливо для любого числа а. Следовательно, если вектор х есть некоторое приближение к zn, то р(х) есть наилучшее приближение к Хп.
3.2	Локализация собственных значений.
Информация о расположении собственных значений на комплексной плоскости может быть получена без особых вычислительных затрат. Один из простых методов локализации собственных значений основан на следующей теореме.
Теорема 3.1 (Гершгорин)
Любое собственное значение матрицы A={anm} лежит, по крайней мере, в одном из кругов
80
Гл. 3. Вычисление собственных значений и векторов
G
N
X-a_|^ V a„J = sum„ I пп |	пт |	п
т=1 т#п
(3.2)
Множество Gn, определяемое выражением (3.2) называется n-ым кругом Гершгорина матрицы А. Когда собственные значения вещественны, тогда круги Гершгорина это просто интервалы. Если п кругов образуют область G изолированную от других кругов, тогда G содержит точно п собственных значений матрицы А. Объединение всех кругов Гершгорина содержит все собственные значения матрицы А. Иногда возможно выделить круг, который содержит единственное собственное значение. Это возможно для матриц имеющих специальные свойства, а именно: если при некотором значении п для всех к=1, ... , N (к^п), справедливы неравенства
I акк-ann |< sum,,+sum„,	(3.3)
то круг Гершгорина |X-ann|^sumn содержит единственное собственное значение.
Пример 3.1 (локализация собственных значений)
Рассмотрим вещественную симметричную матрицу
тогда sumi=1, sum2=2, sum3=1. Согласно (3.2), собственные значения матрицы А лежат в интервалах [0,2], [3,7] и [0,2]. Условие (3.3) выполняется при п=2, следовательно, интервал [3,7] содержит единственное собственное значение, а два других значения лежат в интервале [0,2]. Действительно, эта матрица имеет собственные значения 0.5505, 1, и 5.4495, с точностью до четырех знаков.
3.3	Степенной метод.
Степенной метод используется, в основном, для вычисления доминирующего собственного значения и соответствующего ему
3.3 Степенной метод
81
собственного вектора. Он не является универсальным методом, но моя:ет быть полезен в ряде ситуаций, например, в случае больших разреженных матриц. В дополнение, схема этого метода демонстрирует некоторые важные аспекты вычисления собственных значений.
Степенной метод является итерационным процессом для нахождения собственных векторов матрицы А. Вначале, проведём некоторый предварительный анализ. Возьмём произвольный начальный вектор х^°\ Предположим, что все собственные значения различны по абсолютной величине. Разложим вектор х^ по собственным векторам матрицы А:
П=1
Умножая вектор х<0) к раз на матрицу А, получим N	N
У<к) = А*х(0) = у Akzn = У anXk z = *	Л П	п п п
П=1	П=1
Когда к—>оо, у<к> стремится к вектору коллинеарному с вектором z^ Поэтому, последовательные степени матрицы А дают информацию о её собственном значении Xn. Величина этого собственного значения может быть легко найдена: учитывая второе свойство отношения Рэлея, р(у(к)) стремится к Xn когда к->оо.
Основываясь на проведённом анализе, можно предложить следующую реализацию степенного метода:
1)	задать начальный вектор х(0>
2)	для каждого значения к = 0 , 1 , ... вычислить у(к+1) = Ах(к)
3)	следующее приближение вычисляется как х<к+1' = у<к+1> / ||у(к+1)|| (эта процедура называется нормализацией и она предназначена для того, чтобы предотвратить переполнение или исчезновение порядка)
4)	если при некотором значении к, ||х(к+1) - х(к)|| < ер, тогда х(к+1) есть приближённый собственный вектор zN и S№p(x(k+1)) есть приближённое максимальное по модулю собственное значение Хи.
Сходимость степенного метода.
Если все |ХП| различны и (zN, х(0)) * 0, тогда
lim x(k) = zN
k->oc	N
и справедлива следующая оценка
82
Гл. 3. Вычисление собственных значений и векторов
^N-1
k
= ck
Таким образом, скорость сходимости степенного метода зависит от того насколько |Xn-i| меньше чем |Xn|.
Пример 3.2 (степенной метод)
Рассмотрим следующую матрицу:
/2 -1 0	0"
_	-1 2 -10
А =
0-12-1
,0 0	2>
Выберем начальный вектор х(0)=(1 ,0,0,0)т и ер = 10'6. Результаты вычислений приведены в Таблице 3.1.
Таблица 3.1
к	|| xw-xlK‘1,||	р(х(|сИ>)
1	4.5950е-01	2.8000
2	2.6041 е-01	3.1428
		
18	1.8282е-03	3.6180
		
35	7.4787е-06	3.6180
Видно, что приближения х(к) довольно медленно сходятся к Zn, так как эта матрица имеет собственные значения
« 0.3820
«1.3819
Х3 «2.6181 ’
» 3.6180
4
и, следовательно, асимптотическая константа сходимости С = Xn-i / Xn ® 0.7236.
3.3 Степенной метод
83
Если нам нужно вычислить только собственное значение симметричной матрицы А, то можно выполнить гораздо меньшее число итераций. Пусть xw есть некоторое приближение к zn, такое, что zn = X(k) + e(k) и ||e(k) ||=5. Отношение Рэлея для вектора х(к) имеет вид
р(х<к)) = Лп(1 - 4(zn, е<к) )2 + О(53)) = Хп + О(52).
Это выражение показывает, что р(х<к)) сходится квадратично к Хп, в то время как приближения х(к> в степенном методе сходятся линейно к zn. Например, как видно из примера 3>2, нужно только 18 итераций для того, чтобы вычислить In с точностью до четырех знаков.
3.4 Метод обратной итерации.
Метод обратной итерации по существу является степенным методом, применённым к соответствующей обратной матрице. Рассмотрим кратко теоретические основы этого метода. Умножая выражение (3.1) на матрицу А’1, задачу на собственное значение можно записать в другом виде:
A1zn =-tzn ,det(A)*O.
А'л
Это значит, что собственный вектор матрицы А является собственным вектором матрицы А”1 и ХП(А'1) = 1 7 ХП(А). Выберем некоторый начальный вектор х^ и разложим его по собственным векторам матрицы А:
N
х(0) = V anzn
П=1
Умножая вектор х<0) к раз на матрицу А1, получим
N у<м=(А-1)кх(0>=£ал(А-)к2п =
Когда k-w, у{к> стремится к вектору коллинеарному с вектором zv Поэтому, последовательные степени матрицы А" дают информацию о наименьшем по модулю собственном значении X-i матрицы А. На
84
Гл. 3. Вычисление собственных значений и векторов
практике, вычислять матрицу А’1 нецелесообразно, так как решение системы Ау=х относительно вектора у требует меньше затрат чем вычисление у=А1х. Суммируя все эти замечания, можно предложить следующую реализацию метода обратной итерации:
1)	задать начальный вектор х(0)
2)	для каждого значения к = 0, 1, ... решить систему линейных уравнений Ау(к+1) = х(к)
3)	следующее приближение вычисляется как х(к+1) = у(к+1)/ ||у(к+1)||
4)	если при некотором значении к, || х(к+1) - х(к) || < е„, тогда х(к+1) есть приближённый собственный вектор z-\ и Si=p(x(k+1)) есть приближённое минимальное по модулю собственное значение li.
Сходимость метода обратной итерации.
Если все |ХП| различны и (zN, х(0)) 0, тогда
lim х(к) = z1
и справедлива следующая оценка
Таким образом, скорость сходимости метода обратной итерации зависит от того насколько | меньше чем
Пример 3.3 (метод обратной итерации)
Рассмотрим матрицу из примера 3.2. Выберем начальный вектор х(0) = (1, 0,0 , б)т и ер = 10’5. Результаты вычислений приведены в Таблице 3.2.
Таблица 3.2
к	1	р(х(к))
1	7.3444е-01	0.6666
2	3.5190е-01	0.4000
• •		
5	6.8620е-03	0.3820
• •		
10	1.0994е-05	0.3820
3.4 Метод обратной итерации	85
Для этой матрицы, метод обратной итерации сходится довольно быстро, так как асимптотическая константа сходимости С=Х1/Х2«0.2764. Если нам нужно только собственное значение, то достаточно 5-ти итераций чтобы вычислить его с точностью до четырёх знаков.
Метод обратной итерации требует больше вычислительных затрат по сравнению со степенным методом, так как необходимо решать систему линейных уравнений на каждом шаге итерационного процесса. Однако, это количество операций может быть значительно уменьшено, если учесть тот факт, что матрица А остаётся постоянной для всех итераций. Поэтому, в начале вычислительной процедуры следует разложить матрицу А (смотри 2.6.1), тогда решение системы уравнений в пункте 2) сводится к решению двух систем с треугольными матрицами. При таком подходе, вычислительные затраты для решения К систем уравнений сравнимы с затратами для решения одной системы.
3.5 Итерации со сдвигом начала.
Часто на практике, итерации применяются не к матрице А, а к матрице В=А-с1 (o=ConsteO - сдвиг начала). Такое преобразование практически не меняет исходную задачу (3.1) , так как собственные вектора матрицы А совпадают с собственными векторами матрицы В и Хп(А)=Хп{В)+а- В этом случае, степенной метод сходится к некоторому собственному вектору zn соответствующему собственному значению
|Xn(B)|=max|Xn(A)-o| п
и асимптотическая константа сходимости определяется как
тах| Хт(А)-а| q _ т^п _________
тах| Хп(А)-сГ
R
Метод обратной итерации сходится к некоторому собственному вектору zn соответствующему собственному значению
|Х (B)f=min|Xn(A)-a|
п
86
Гл. 3. Вычисление собственных значений и векторов '
и асимптотическая константа сходимости определяется как min|Xn(A)-o|
С = —-------------
min|X (А)-ст| m*n
В каких ситуациях следует использовать сдвиг начала?
Ситуация 1.
Пусть матрица А имеет |%n-i|=M (или они очень близки). Если мы применим степенной метод к этой матрице, то не получим сходимости ни к вектору Zn ни к вектору Zn-i (или сходимость будет очень медленной). Когда <тД) , все ХП(В) различны по модулю и сходимость появится.
Пример 3.4 (степенной метод со сдвигом начала) Рассмотрим следующую матрицу
Эта матрица имеет собственные значения
=1
Х2 = л/з «1.7320 .
X, =-7з«-1.7320
Применим степенной метод к матрице А, начиная с вектора х(0)=(1, 0, 0, 0)т. Результаты вычислений приведены в Таблице 3.3.
Таблица 3.3
к	И rw ।	р(х<к>)
1	1.2247	1
2	1.3416	1
3	1.3887	1
4	1.4055	1
5	1.4113	1
Хорошо видно, что сходимрсть отсутствует. Теперь применим степенной метод к матрице A-qI (с=2) с тем же самым начальным вектором. Результаты вычислений приведены в Таблице 3.4.
3.5 Итерации со сдвигом начала
87
Таблица 3.4
к	" Ц ?к)	р(х(к>) + о
1	1.2247	-1
2	0.4178	-16666
3	0.1141	-1.7272
4	0.0306	-1.7317
5	0.0082	-1.7320
Видно, что сдвиг начала обеспечил сходимость итераций и асимптотическая константа сходимости
с _ ЩА) ст| = —1	* 0 2б79
|%3(А)-о| 2 + л/З
Ситуация?.
Предположим, что нам надо найти собственное значение матрицы А ближайшее к заданному числу Р, то есть такое km(A), что
Xra(A)-p|<min|Xn(A)-p|.
Тогда метод обратной итерации со сдвигом 0=0 сходится к собственному вектору zm
Пример 3.5 (метод обратной итерации со сдвигом начала)
Рассмотрим снова матрицу из примера 3.2. Применим метод обратной итерации с начальным вектором х -(1, 0, 0, 0)т к матрице А-о1 (о=3.5). Результаты вычислений приведены в Таблице 3.5.
Таблица 3.5
к	у(к) _ у(к-1)		р(х<к>) + о
1	1.2895	3.5520
2	2.6116е-01	3.6171
3	3.3306е-02	3.6180
		
6	7.8765е-05	3.6180
88
Гл. 3. Вычисление собственных значений и векторов
Мы выбрали сдвиг достаточно близко к собственному значению поэтому наблюдается быстрая сходимость к собственному вектору Z4, так как асимптотическая константа сходимости
|МА)-о
---------
0.104.

3.6 Применение ортогональных преобразований (QR метод).
QR метод является одним из наиболее часто используемых методов для вычисления собственных значений. Эта процедура имеет ряд полезных особенностей, а именно:
1)	она позволяет вычислить все собственные значения матрицы
2)	в случае одинаковых по модулю собственных значений, она всё же позволяет получить некоторую информацию о спектре матрицы
3)	в случае симметричных матриц, вычисления сильно упрощаются Основная идея QR метода выглядит просто. Сначала, для данной матрицы А вычисляется разложение А=А< -QR, где Q - ортогональная матрица и R - верхняя треугольная матрица (смотри 2.6.1). Затем вычисляется новая матрица A(1)=RQ. Далее процедура продолжается последовательно: для A^=Q^R(k\ мы вычисляем А( +1)=R^Q<k\ Этот алгоритм выглядит довольно просто, но даёт очень интересный результат: если все |ХП| различны, то
limA(k) =Т,
где
(3.4)
3.6 QR метод
89
Таким образом, мы можем вычислить все собственные значения в одном итерационном процессе. Однако, QR метод, в том виде, что мы рассмотрели, требует слишком больших вычислительных затрат. Если А - матрица общего вида, то каждое QR разложение потребует O(N3) операций. Для того чтобы сделать метод более эффективным, исходная матрица А сначала трансформируется в другую матрицу, для которой последующие QR разложения вычисляются за гораздо меньшее количество операций. Поэтому, QR метод начинается с преобразования исходной матрицы А в матрицу Нд в форме Хессенберга:
После такого преобразования, QR разложение исходной матрицы А(0)=Нд можно вычислить за O(N2) операций. В дополнение, и это очень важно, все последующие матрицы А(к остаются в форме Хессенберга. Для симметричных матриц, форма Хессенберга является трёхдиагональной матрицей, что значительно уменьшает количество операций и позволяет эффективное хранение матриц. В качестве индикатора сходимости можно следить за уменьшением величины поддиагональных элементов ап+1,п в матрице А(к) или можно следить за уменьшением величины
| а<к+1> - а'кп> |, п=1.N.
Всё рассмотренное выше можно представить в виде следующего алгоритма:
1)	представить матрицу А в форме Хессенберга: А —» Ид = А<0)
2)	для каждого значения к=0, 1,... вычислить QR разложение матрицы А(к): A(k)=Q(k)R(k) и следующее приближение A(k+1)=R(k)Q(k)
3)	сформировать два вектора:
(к) _ /д(к) д(к) д(к)
1	“ W21 »а32	/
и
а(к) _ /а(к)	о<к-1) я(к) _ Я(к-1)\Т
а2	aNN / ’
90
Гл. 3. Вычисление собственных значений и векторов
Если
||а'к) ||<ер или || а^’ ||<ер,
тогда элементы ап,п матрицы А^ есть приближённые собственные значения матрицы Ай
1Ч(А)-а<кп> |<Ер
Сходимость QR метода.
Если все |ХП| различны, то матрицы А(к) сходятся к верхней треугольной матрице Т (смотри (3.4)), диагональные элементы которой являются собственными значениями матрицы А. Для симметричных матриц, последовательность { А^} сходится к диагональной матрице. Скорость сходимости оценивается следующим образом:
||f-A<k>||<
max ten^N-1
Легко видеть, что сходимость отсутствует, если хотя бы два собственных значения равны по модулю (или она очень медленная, если их абсолютные значения близки). Такая ситуация не такая уж редкая, особенно для несимметричных матриц, так как в этом случае собственные значения составляют комплексно-сопряжённые пары. Поэтому, в QR методе обычно применяется сдвиг начала, что часто обеспечивает сходимость.
Пример 3.6 (QR метод)
Рассмотрим следующую матрицу
1	1	0	0
1-110
0	0	2	1
0	0	1-2,
Собственные значения этой матрицы (с точностью до четырёх десятичных знаков):
3.6 QR метод
91
X, « 1.4142
X2 » -1.4142
Х3 «' 2.2360
Х4 « -2.2360
Результат применения QR метода к матрице А-al (о=1) показан в Таблице 3.6.
Таблица 3.6
к	а<* > + а ”пп м п=1	4	II а<к> ||2	Ца<к>||2
1	-1.0000 1.0000 1.0000 -1.0000	2.2360е+00	3.1622е+00
	•		
3	2.0000 -2.0000 1.4138 -1.4138	1.0006е+00	1.4143е+00
			
5	2.2307 -2.2307 1.4142 -1.4142	1.5384е-01	4.3514е-02
			
10	2.2360 -2.2360 1.4142 -1.4142	1.2523е-03	2.9034е-06
3.7. Заключительные замечания.
В течении последних десятилетий был достигнут значительный прогресс в области вычислительной линейной алгебры. Это привело к созданию эффективного и надёжного программного обеспечения для
92
Гл. 3. Вычисление собственных значений и векторов
решения задач на собственное значение Все основные пакеты программ, такие как IMSL®, NAG® и LAPACK, включают в себя большой набор процедур для решения этой проблемы. Эти процедуры реализуют различные виды ортогональных разложений (одно из них, QR разложение, мы обсуждали) для различных типов матриц. В случае стандартной задачи на собственное значение (3.1) имеются вычислительные процедуры для вещественных симметричных и несимметричных матриц, комплексных общего вида и Эрмитовых матриц. В случае обобщённой задачи на собственное значение Azn=XnMzn имеются вычислительные процедуры для следующих ситуаций:
1) матрицы А и М симметричные, и матрица М также положительно определённая
2) матрицы А и М вещественные или комплексные матрицы общего вида
ГЛАВА 4
Решение систем нелинейных уравнений
Список обозначений
X = (х,.....XN)'
N
Illi sp
х- =(х;,...,х*)т
‘k>=(x<k>,...,x<k>)T
<k> = x* - x(k) = (e<k),
s(B) = max Xn(B) n
—-(x)>
F(x) =
вектор (жирные строчные буквы) число уравнений
норма вектора или матрицы требуемая точность вычисления приближённого решения
точное решение системы нелинейных
уравнений (f(x ) г о)
k-ое приближение к точному решению е (Nk * )т ошибка k-го приближения
n-ое собственное значение матрицы В спектральный радиус матрицы В
матрица Якоби
Тема, обсуждаемая в этой главе, часто представляет довольно трудную проблему. Решение системы из N нелинейных уравнений часто требует гораздо больших усилий, чем просто решение N одномерных уравнений. Например, как мы видели в Главе 1, первая производная функции играет важную роль в создании итерационных алгоритмов. В случае N уравнений она заменяется матрицей из N2 первых частных производных. Некоторые методы, применяемые для решения уравнения f(x)=O, могут быть обобщены на случай систем нелинейных уравнений, однако простые методы, типа метода деления отрезка пополам, не имеют аналогов в многомерном случае. Поэтому, прежде чем использовать ту или иную итерационную схему, часто необходим некоторый
94
Гл.4. Решение систем нелинейных уравнений
предварительный анализ, чтобы определить приближённое расположение решения.
Система нелинейных уравнений, в общем виде, записывается как
f(x) = о
или в развёрнутой форме
(4.1)
f1 (х1 ,, xN) — О
, ... , XN ) — О
В случае N уравнений, мы должны заменить интервалы на некоторые множества в RN, а именно:
Sc(x0,a) = {х е RN :|| х -х0 ||< а} (закрытый шар)
So(x0,a) = {xeRN :|| х-х0 ||<а} (открытыйшар)
Форма шара зависит векторной нормы. Например, на рисунке 4.1 показаны различные формы шаров для N=2.
Рисунок 4.1. Sc((0, 0), а) для некоторых векторных норм: a) IHh;b) ||.||2;с) |HU
с)
4Д Метод простой итерации.
По аналогии с (1.1), систему (4.1) можно представить в следующей эквивалентной форме:
4.1 Метод простой итерации
95
х = д(х)
ИЛИ
(4.2)
Х1 9i(X1 » ••• ’ XN )
где g(x) - итерационная вектор функция векторного аргумента. Системы нелинейных уравнений часто возникают непосредственно в виде (4.2) (например, в численных схемах для дифференциальных уравнений), в этом случае никаких дополнительных усилий для преобразования уравнений (4.1) в систему (4.2) не требуется. Если продолжить аналогию с методом простой итерации для одного уравнения, то итерационный процесс, основанный на уравнении (4.2), можно организовать следующим образом:
1)	выбирается некоторый начальный вектор x(0)eSo(Xo,а) (предполагается, что х eSo(Xo,a))
2)	последующие приближения вычисляются по формуле:
х{к+1) = д(х(к))
или х'к+1) =д1(х(1к)...............х*’>
(4.3)
3)	если
у(к+1) _	\
AN “ »N\a1	»•••.» aN />
к = 0,1,...
или
||х(к+1) -д(х(к))||<Ер, то итерационный процесс завершён и
96
Гл.4. Решение систем нелинейных уравнений
Как и раньше, нам необходимо выяснить при каких условиях lim x(k) = х’.
к—>оо
Обсудим этот вопрос, выполнив простой анализ. Вначале мы введём ошибку k-го приближения как e(k)=x(k)-x*. Тогда мы можем записать
и
r(k+n
= х* + e(k+1)
..(хГ1>,....хГ)) = (х;+еГ)
+ e<k+1))
Подставим эти выражения в (4.3) и разложим g(x +е(к)) по степеням е(к* в окрестности х как функцию векторного аргумента (предполагая, что все частные производные функции д(х) непрерывны). Учитывая также, чтох = д(х) мы получим
+0№£’>г>
гп=1 Хт
или в матричной форме
е(к+1) =Ве(к) +О(|| е(к) ||2 ),
(4.4)
где
итерационная матрица.
Если норма ошибки ||е(к)|| достаточно мала, то вторым слагаемым в правой части выражения (4.4) можно пренебречь и тогда оно совпадает с выражением (2.16). Следовательно, условие сходимости итерационного процесса (4.3) вблизи точного решения, описывается Теоремой 2.1.
Сходимость метода простой итерации.
Необходимое и достаточное условие для сходимости итерационного процесса (4.3):
s(B) = max | ХП(В)|<1 л
4.1 Метод простой итерации
97
и достаточное условие:
II в II <1	(4.5)
Эти условия имеют скорее теоретическое, чем практическое значение, так как мы не знаем х . По аналогии с (1.11), получим условие, которое может быть полезным. Пусть х eS0(xo,a) и матрица Якоби для функции fl(x)
C(x) = {cnm(x)} = fe(x).=
1ЭХт J
dxN
существует для всех xeS0(xo,a) (заметим, что С(х )=В). Если элементы матрицы С(х) удовлетворяют неравенству
| cnra(x) |< —j-, n,m = 1,..,,N	(4.6)
дая всех xeSo(xo,a), тогда достаточное условие (4.5) также выполняется для любой матричной нормы.
Пример 4.1 (метод простой итерации).
Рассмотрим следующую систему уравнений:
. Х2) = x2(xt -1) -1 = О	4 7)
f2(x,, х2) = х, - х2-1 = 0
f
Одна из возможностей представить эту систему в эквивалентной форме (4.2) - выразить из первого уравнения и Хг из второго уравнения:
98
Гл.4. Решение систем нелинейных уравнений
xt = 1 + 1/x2	,х2)
|х2 = д/х? -1 = д2(х1, х2)
Тогда итерационная схема имеет вид
х'к+1) = 1 + 1/х'к)
х<к+1) = ^(х*к7-1, к = 0,1,...
Точное решение х gS0((2, 2), 1). Выберем начальный вектор х(0)=(2, 2) и ер =10’5. Результаты вычислений представлены в Таблице 4.1.
Таблице 4.1
к	' у(к)	||xw- х(к’1,||2/||х(К'||2	II f(x(K') ||2
1	1.50000 1.73205	2.0056е-01	1.7551е-00
			
10	1.69258 1.34646	4.4561 е-02	8.5105е-02
			
20	1.71914 1.40036	4.4992е-03	9.0029е-03
			
30	1.71642 1.39483	4.5324е-04	9.0258е-04
			
40	1.71669 1.39536	4.5665е-05	9.0982е-05
			
47	1.71667 1.39532	6.2770е-06	4.4503е-05
Эти результаты показывают, что сходимость довольно медленная. Для того чтобы получить количественную характеристику сходимости,
4.1 Метод простой итерации
99
/Д7\
проведем простой анализ, считая х точным решением. Матрица Якоби С(х) для нашей итерационной функции имеет вид
тогда матрица В приближённо оценивается как
Легко проверить, что ни условие (4.5) ни условие (4.6) не удовлетворяются, но сходимость имеет место, так как s(B)«0.8i
Часто можно ускорить сходимость метода простой итерации, слегка изменив процесс вычислений. Идея такой модификации очень проста: для вычисления n-ой компоненты вектора х(к+1) можно использовать не только
x(mk) (m = n,...,N),
но также уже вычисленные компоненты вектора следующего приближения
х<к+1) (I =	— 1).
Таким образом, модифицированный метод простой итерации может быть представлен в виде следующей итерационной схемы:
х<к+1) = дДх’10,..., х* *>)
Y(k+1) _ n /Y(k+1) у(к)	Y(k)\
• 2	*“ У2\Л1	» Л2 .....AN /
(4-8)
v(k+1) _ n Zv(k+1)	Y(k+1) y(k)\ k=n 1
XN - 9nKX1 ’ ••• ’ XN-1 ’ XN /’ К - U , I ,
Если приближения, генерируемые итерационным процессом (4.3) сходятся, то итерационный процесс (4.8) сходится, как правило, быстрее за счёт более полного использования информации.
100
Гл.4. Решение систем нелинейных уравнений
Пример 4.2 (модифицированный метод простой итерации)
Модифицированная простая итерация для системы (4.7) представляется в виде
Х(1к+1)=1 + 1/х(2к)
х<к+1) = ^(х<к+17-1, к = 0,1,...
Как и прежде выберем начальный вектор х(0)=(2,2) и ер=10’5. Результаты вычислений представлены в Таблице 4.2.
Таблица 4.2
к	\дк) '	"W v(к-1) / " (к) ' X - X	2' х 2	f(x(K)) ||2
1	1.50000 1.11803	3.5844е-01	4.4098е-01
			
10	1.72076 1.40036	7.5781 е-03	9.3355е-03
			
20	1.71671 1.39538	7.6678е-05	5.9607е-05
			
25	1.71667 1.39533	7.7251е-06	9.5041е-06
Небольшое изменение порядка вычислений привело к уменьшению количества итераций в два раза, а значит и к уменьшению количества операций в два раза.
4.2 Метод Ньютона.
В Главе 1 мы рассматривали метод Ньютона, который является очень эффективным методом для решения скалярного уравнения. Этот метод обобщается и на случай системы уравнений. Пусть х eS0(Xo,a) и
4.2 Метод Ньютона
101
первые частные производные векторной функции f(x) существуют тогда можно разложить fn(x) в окрестности некоторого приближения х<к eS0(Xo, а) по степеням (х - х(к)):
,...,xN) = fn(x<k) X(Nk)) +
Ет7-(х(к>)(хт - хпк)) + О((хп - х<к) )2) = m=l5Xm
Pn(xi , ..,xN)+O((xn -х<к))2).
n = 1,...,N
Это разложение можно также представить в матричной форме:
f(х) = f(x(k)) + F(x<к))(х - х(к)) + О(|| X - х(к) II2) =' р(х) + (О(|| х-х(к) ||2) )
где
0f1 7 А т-Цх) 3xN
3f2 . . т-Чх) 3xN
gfN axN
(x)
есть матрица Якоби для функции f(x). Следующее приближение определяется из условия p(x(k+19 = о или
F(x(k))(x(k+1) -x(k)) + f(x(k>) = о.
(4.9)
На практике, вычисления по методу Ньютона организуются следующим образом:
г	«	(0)
1)	выбирается некоторый начальный вектор х .
102
Гл.4. Решение систем нелинейных уравнений
2)	для каждого значения к - 0 , 1 , ... решается система линейных уравнений
F(x(k>)Ax(k+1> = —f(x(k))	(4Л0)
относительно вектора Ах(к+1), где Ах(к+1)=х{к+1)-х(к). Следующее приближение вычисляется очень легко: х<к+1) = х(к* + Ах<к+1\
3)	если
или
||f(X(k+1))||<8p, то итерационный процесс завершён и
Для решения системы линейных уравнений с матрицей F(x(k)) следует использовать прямые методы, так как эта матрица изменяется с к и маловероятно, чтобы какой-нибудь итерационный метод сходился при каждом значении к. При этом тип разложения зависит свойств и структуры матрицы F(x(k)). Теперь рассмотрим вопрос сходимости метода Ньютона.
Теорема о сходимости метода Ньютона (Канторович).
Пусть функция f(x) дифференцируема в некоторой области So(x0, а) с матрицей Якоби F(x). Предположим также, что матрица F(x) обратима для всех xeSo(x0,a) и существуют вещественные положительные числа Уъ У2, и уз такие, что
II F-1(X<°>),||<Yi
||F-’(x(0>)f(x<0))II^Y2
И
Пусть также функция f(x) дважды дифференцируема и выполняется условие
4.2 Метод Ньютона
103
I|D(X)|| =
SxmSx
N
(x) < y3
n = 1 ,	,
для всех x e So(x(0), а), где
Ь = ^(М1-2Г>ЪТ3)-
Если шар S0(x<0\b)aS0(Xo,a), тогда последовательность { х(к)}, генерируемая методом Ньютона с начальным вектором х, сходится к X eSo(x(0), b) и существует некоторая константа С > 0 такая, что
II х* -х(к+1) ||< С,|| х* -х(к) II2.
Это говорит о квадратичной сходимости, также как и в случае одного уравнения
Пример 4.3 (метод Ньютона)
Рассмотрим систему уравнений (4.7). Матрица Якоби для этой системы имеет простой вид:
F(x) = P2 V1>
< 2xr -2х2/
Эта матрица обратима для х а {х : х^ > 1 , х2 > 0} = S0(Xq , а) и
х2 О.5(х4 -1)
х1 - 0.5х2
Выберем начальное приближение х<0) =(2,2), тогда
Ц F1 (х(0)) || Л= 0.5 и || F-1(x(0>)f(x(0>) ||	0.5.
Числа уъ у2, и уз определяются как y-i = 0.5, у2 = 0-5, и у3 = 2. Матрицы Dn(x) для данной системы имеют следующий вид
104
Гл.4. Решение систем нелинейных уравнений
D,(x)
И D2(x) =
2
0
О А

таким образом, условие ||Оп(х)||<у3 выполняется и Ь=1. Шар So(x(0\l)e S0(Xo,a), поэтому приближения, генерируемые по методу Ньютона, сходятся к точному решению квадратично, начиная с выбранного начального приближения.
Итерационная схема для данной системы уравнений записывается в виде
х<к>
х<к)-1¥дх<к+1)>
-2х<к)1дх<к+1> м J	4* у
f -х<к>(х<к> -1) + 1Л J4xr)2+(XH2/
Y(k+1) \Л2 у
Гх^ + Дх^П
tx<k> + Д хГ1) J
к = 0,1 ,...
Результаты вычислений представлены в Таблице 4.3.
Таблица 4.3
к	“ 1 " (&)"		2/	7*1	2	f(XW) 2
1	1.75000 1.50000	2.4253е-01				2.2534е-01
2	1.71710 1.39912	4.7904е-02				9.6806е-03
3	1.71667 1.39534	1,7207е-03				1.4209е-05
4	1.71667 1.39533	1,8439е-06				1.5512е-011
Этот пример показывает, что когда начальное приближение выбрано достаточно близко к х, метод Ньютона обеспечивает быструю сходимость.
4.3 Метод с кубической сходимостью
105
4.3	Метод с кубической сходимостью.
Один из путей построения метода с кубической сходимостью это провести аналогию с методами третьего порядка для одномерного уравнения. При этом имеет смысл рассматривать схемы, использующие только первую производную функции, так как в случае N уравнений вторая производная скалярной функции заменяется матрицей содержащей N частных производных второго порядка, что приводит к очень громоздким алгоритмам. Поэтому многоточечная итерация (1.25) является наиболее приемлемым выбором. Перепишем эту схему в следующем виде
f'(xk)(yk-xk) + f(xk) = O
f'(xk)(xk+1 -yk) + f(yk) = O
В многомерном случае мы работаем с векторами из RN и естественным аналогом f (х) является матрица Якоби F(x), тогда предыдущее выражение превращается в
F(x(k))(y(k) -x(k)) + f(x(k)) = о
F(x(k))(x(k+1) -y<k)) + f(y(k)) = o
Следует заметить, что метод Ньютона для системы уравнений можно достроить, поступая аналогичным образом (смотри (4.9)). Теперь, вместо системы (4.10) мы решаем две линейные системы для каждого значения к:
F(x(k))Ay(k) =-f(x(k)) у(^) — ^(*0 4- Ду(к)
(4.11)
F^Ax0"1’ = -f(y(k)) х(к+1) _ у(Ю + ДХ(к+1>
Матрица F(x(k)) одинакова для обеих систем, поэтому предварительно можно разложить её на множители и затем использовать эти множители для решения двух систем. Такой подход приводит к тому, что при
106
Гл.4. Решение систем нелинейных уравнений
больших значениях N вычислительные затраты на решение второ 5 системы определяются в основном затратами на вычисление f(у(к)). Если этот метод сходится, то имеет место сходимость третьего порядка, то есть
|| Х*-х(к+1) || < С || х* - х(к> ||3
Пример 4.4 (кубическая сходимость)
Рассмотрим систему уравнений (4.7). Матрица Якоби для этой системы приведена в примере 4.3 и итерационная схема (4.11) имеет вид
Y(k)
Л2
2х<к)
х<к> -1¥ду<кр - 2х2к> Дд у(2к\
\<кП = |х<к> + Д у<к)> j<k)J |х!>к) + Д у™,
I
к = 0,1 ,...
Результаты вычислений представлены в Таблице 4.4.
Таблица 4.4
к	„(к)	v(k) _	Г	2/	Y(k)	2	f(xw)	2
1	1.72395 1.42708	3.4596е-02				7.2550е-02	
2	1.71667 1.39534	1,4605е-04				2.0578е-05	
3	1.71667 1.39533	3.2996е-12				2.2204е-16	
4.4 Модификации метода Ньютона
107
Эт от метод обеспечивает ещё более быструю сходимость по сравнению с методом Ньютона, но для данной системы он менее эффективен, так кас требует больше вычислений на итерацию. Метод с кубической сходимостью может иметь предпочтение перед методом Ньютона, когда число уравнений становиться относительно большим.
4.4	Модификации метода Ньютона.
Часто на практике выражения для элементов матрицы Якоби имеют сложный вид и их вычисление требует гораздо больших затрат по сравнению с вычислением функции f(x). По аналогии с одномерным случаем, можно использовать разностные отношения для аппроксимации частных производных, которые образуют матрицу Якоби. Применяя этот метод, мы заменяем матрицу F(x) приближённой матрицей D(x), которая имеет следующий вид:
D(x(k>)= {dnm(xlk>)} =
•f /у(Ю у (Ю 4-И	) \	f. /у(Ю у^)\
'п\А1	/	!n\A1	’
<---------------------------------------------->
h
(4.12)
где h - малый параметр. Если вместо матрицы F(x<k)) в (4.10) подставить матрицу D(x<k), определённую в (4.12), мы получим конечноразностный метод Ньютона. Этот метод обеспечивает, по крайней мере, линейную сходимость, если значение параметра h достаточно мало. Для вычисления элементов матрицы D(x<k)) можно применить процедуру аналогичную той, что использовалась в методе секущих (1.26)* Однако, применяя такой подход мы можем столкнуться с ситуацией деления очень малых чисел, когда приближенное решение близко к X и это может привести к значительному возмущению матрицы D(x(k)). В результате этого, сходимость итерационного процесса может замедлиться. Метод с кубической сходимостью можно также модифицировать, заменяя матрицу F(x(k)) в (4.11) на матрицу D(x(k)).
Шаг (2) в методе Ньютона предусматривает решение системы линейных уравнений на каждой итерации. Когда N достаточно большое это может потребовать значительных вычислительных затрат. Поэтому в некоторых ситуациях имеет смысл несколько упростить метод
108
Гл,4. Решение систем нелинейных уравнений
Ньютона и тем самым уменьшить количество вычислений необходимое для решения линейных систем с матрицей Якоби. Один из простейших способов такой модификации - вычислить матрицу F(x °) и затем использовать её вместо матрицы F(x(k)) в последующих итерациях. Тогда мы можем разложить матрицу F(x(0)) на множители один раз и использовать эти множители для решения систем уравнений на последующих итерациях. Другой несколько более сложный способ модифицировать метод Ньютона состоит в том, чтобы изменять матрицу F(x(k)) не на каждой итерации, а через m итераций. Это значит, что вместо матрицы F(x(k)) используется матрица
F (x(kh = !F(X<k>)’ ifk = pm [F(x(p)), ifk^pm’
где [у] обозначает целую часть числа у.
Пример 4.5 (модифицированный метод Ньютона)
Рассмотрим систему уравнений (4.7). Матрица Якоби для этой системы приведена в примере 4.3. Если мы выберем начальное приближение х(0) = (2,2), тогда
и итерационная схема упрощённого метода Ньютона имеет вид
(4.13)
Результаты вычислений представлены в Таблице 4.5.
4.4 Модификации метода Ньютона
109
Таблица 4.5
к			у(к)'	' “xW?x(M)'		v(k) А	2	||f(xlk?)	
1	1.75000 1.50000	2.4253е-01				2.2534е-01	
2	1.72396 1.42708	7.4598е-02				7.2550е-02	
3	1.71829 1.40528	1.0150е-02				2.4194е-02	
		• • •					
9	1.71667 1.39534	8.1816е-06				2.2523е-05	
Результаты вычислений указывают на линейную сходимость. На самом деле эта итерационная схема представляет собой простую итерацию (4.3), так как мы можем переписать выражение (4.13) в следующей форме
x(k+1) =x(k) -F~1(x(0))f(x(k)) = g(x(k))
или
X(k+1) = хоо -lf1(xjk\xgl))--^f2(x^),x(2k)) = дДх^’.х^) О	I
Х<к+1) = Х2к) - — fT(X<k>,Х(2к)) + 4f2(Х1° >Х2 ’ ) - 9г(х1к> • Х2 *) 3	6
Проводя такой же анализ как в примере 4.1, получим оценку итерационной матрицы В определённой в (4.4):
- 0.006^
0.30 .
Это указывает на более быструю сходимость по сравнению с методом простой итерации из примера 4.1, так как теперь s(B)«0.3.
4.5	Повышение надёжности метода Ньютона.
Преимуществом метода Ньютона является то, что он обеспечивает быструю сходимость. Однако квадратичная сходимость имеет место
110
Гл.4. Решение систем нелинейных уравнений
только тогда, когда начальное приближение выбрано достаточно близко к точному решению. Существует довольно простой способ расширить набор начальных приближений, которые порождают итерационные последовательности {х(к)}, быстро сходящиеся к точному решению. Идея этого метода основана на том факте, что система уравнений (4.1) имеет решение х , когда функция определённая как
N
w(x) = w(x, XN) = £fn2 (X, ,...,XN),
n=1
имеет минимальное значение равное нулю (рисунок 4.2). Для того чтобы найти этот минимум рассмотрим приращение Дх(к+1\ генерируемое методом Ньютона, как направление для поиска минимума функции w(x). Если w(x(k)+Ax(k+1))>w(x(k)), тогда мы будем делить приращение пополам до тех пор, пока не достигнем уменьшения значения функции w(x). Теперь шаг 2) метода Ньютона следует немного изменить. После решения системы (4.10) будем вычислять вектор
d(m) =— дх<к+1), т = 0,1,...
Рисунок 4.2. Пример функции w(x) для двумерной проблемы.
4.5 Повышение надёжности метода Ньютона	111
до тех пор, пока значение w(x^k^+d^) не станет меньше чем w(x^). Тогда следующее приближение вычисляется, как x(k+1)=x(k)+d<m). Эта процедура называется демпфированием. В идеальном случае, процедура деления приращения приводит некоторое приближение х^ в окрестность точного решения х, откуда метод Ньютона сходится уже без дальнейшего демпфирования
Пример 4.6 (метод Ньютона с демпфированием) Рассмотрим следующую систему уравнений:
Цх, ,x2) = sin
лх1
— х2 = 0
Результаты вычислений методом Ньютона с начальным приближением х(0) = (0.01 , 0.01) представлены в Таблице 4.6
Таблица 4.6
к	х1К)	VW (К-1)	/	(К) X - X	2' X 2	,f(XW) 2
1	299.28907 47.01216	9 9996е-01	3.1052е+03
2	149.15142 23.54811	1.0064е+00	7.7636е+02
3	339.03070 -4.95503	5.6628е-01	1.1730е+03
11 111 * •			
8	56.05367 5.45498	8.5945е-01	6.0374е+01
	•  •	• • •	
11	130.53349 -3.83916	9.1168е-01	1.8419е+02
• •	• • •	9 9 •	
18	7.69136 0.93513	8.9456е-02	4.6604е-01
 •		• • •	
21	5.94612 0.80401	5.4723е-04	2.4848е-07
112
Гл.4. Решение систем нелинейных уравнений
В данном случае мы наблюдаем немонотонную сходимость и требуется 21 итерация, чтобы получить приближенное решение с заданной точностью. Введение демпфирования в метод Ньютона замечательным образом меняет характер сходимости, как показывает Таблица 4.7.
Таблица 4.7
к	-ДО'		2/| xw	2	f(XW) 2
1	4.68624 0.74441	9.9759е-01			2.3773е-01
2	5.94047 0.81741	2.0952е-01			2.5252е-02
3	5.94678 0.80408	2.4591 е-03			1.7838е-04
4	5.94612 0.80401	1.1056е-04			9.2859е-09
Более того, шесть операций деления приращения были выполнены только на первой итерации, и это требует меньше вычислений, чем шесть итераций по методу Ньютона. Это говорит о том, что демпфирование не только делает метод Ньютона более надежным, но и может значительно уменьшить количество операций необходимых для получения приближённого решения.
ГЛАВА 5
Численное интегрирование
Список обозначений
1(f), J(f) e(f) hk
Ik
ek N, L, К
M
f(x)eC(n)[a, b]
Sp
точное значение интеграла
ошибка квадратурной формулы
длина подинтервала при делении отрезка
интегрирования
приближённое значение интеграла,
вычисленное с шагом hk
оценка ошибки вычисления |к
число подинтервалов в направлении осей х, у и
z соответственно
число узлов в квадратурной формуле Гаусса-
Кристоффеля
функция f(x) имеет непрерывные производные до порядка п включительно на интервале [а , Ь]
заданная точность вычисления интеграла
В этой главе мы рассмотрим методы, которые часто применяются для приближённого вычисления определённых интегралов. Формулы для вычисления одномерных (двумерных) интегралов часто называются квадратурными (кубатурными) формулами. Необходимость вычисления определённых интегралов возникает в различных ситуациях. Самый очевидный случай - когда первообразная подинтегральной функции не может быть выражена через элементарные функции. Если подинтегральная функция задана только в наборе точек, например, она представляет данные эксперимента, то интеграл от этой функций не может быть вычислен аналитическими методами. Формулы приближённого интегрирования также находят широкое применение при создании численных методов для решения дифференциальных и
114
Гл. 5 Численное интегрирование
интегральных уравнений. Всё это говорит о том что численное интегрирование играет важную роль при решении различных практических задач.
В физике и инженерных науках чаще всего встречается интеграл Римана. Он определяется как
N
Jf(x)dx.Jim Х«х;;лх,, а	п=1
где х* - произвольная точка из интервала Ахп и UAxn=[a,b],
N
JJf(х, у) dx dy ж lim £ f(x;, у' )ASn,
S	n=1
где x*,y’ - произвольныеточки из подобласти ASn и UAS.n=S,
N
JJJf(x, у, z) dx dy dz ж lim £ f(x;, y’, z; )AVn,
JJJ	max AVn —>u ^-7
V	n=1
где x*,y*,z* - произвольные точки из подобласти AVn и [jAVn=V. t
Самый простой способ построения формул приближённого интегрирования непосредственно следует из приведённых выше определений. Если мы будем использовать интервалы конечной длины вместо бесконечно малых интервалов (просто уберём знак lim), то получим простейшие формулы для приближённого вычисления интегралов. Однако такой подход далеко не всегда наиболее эффективный.
5.1 Простейшие квадратурные формулы.
Мы начнём рассмотрение методов для приближенного вычисления определённого интеграла
l(f)= Jf(x)dx	(5.1)
а
с метода, основанного на замене подынтегральной функции f(x) некоторым полиномом, интеграл от которого вычисляется легко. Вначале разобьем интервал интегрирования на подинтервалы, вводя множество точек a=Xo<Xi<...<Х№=Ь. Приблизим функцию f(х) на каждом подинтервале [Xn,xn+i] константой f(xn+i/2), где xn+i/2=(Xn+i+ xn+i )/2 (рисунок 5.1),. * , I
5.1 Простейшие квадратурные формулы
Рисунок 5.1. Приближение функции в методе прямоугольников.
Тогда
Jf(x)dx«f(xn+1/2)(xn+, — хп)
и сумма
N-1
lR(f) = ]Tf(x„+i/2)(xn+1-xn)	(5.2)
п=0
даёт приближённое значение определённого интеграла (5.1), то есть
l(f) = lR(f) + eR(f).
Так как сумма (5.2) геометрически представляет собой сумму площадей прямоугольников, то этот метод часто называют методом прямоугольников. Если мы приблизим функцию f(x) на каждом интервале [хп,
116
Гл. 5 Численное интегрирование
Xn+i] линейной функцией (рисунок 5.2), то приближённое значение интеграла 1(f) есть сумма площадей соответствующих трапеций:
N-1 и
КО = Z?<f(xn) + f(xn+,))(xn+1 - xn) + eT(f) = lT(f) + eT(f), (5.3)
n=o 2
поэтому этот метод называется методом трапеций.
Рисунок 5.2. Приближение функции в методе трапеций.
Пусть N=2L, тогда мы можем приблизить подинтегральную функцию f(x) на каждом подинтервале [xn,xn+i] полиномом второй степени p(x)=p2x2+piX+p0 (рисунок 5.3), где коэффициенты р2, ръ и р0 определяются из решения системы
p(xn+1) = f (хл+1) P(xn) = f(xJ P(xn_1)^f(xn_1)
5.1 Простейшие квадратурные формулы
117
Рисунок 5.3. Приближение функции в методе Симпсона
Тогда следующая сумма даёт приближённое значение интеграла 1(f):
x2m+2
m=0
es(f) =
X2m
где
m=0
amf(x2m+2) +
(bm+cm-am)f(x2m+1) + _cmf(x2m)
es(f) = ls(f) + es(f)
£ _ 2X2m+2	^2m(^2m+2 + *2m) ^X2
6(X2m+2 ” X2m+i)
b ~ ^^2m ~~ ^2m+2^2m+2 * ^2m)	^^2m+l(^2m-t-2 ~~ ^2m)
6(*2m+1 X2m)
2m+2	^2m)
^2m+2	^2m
(5.4)
118
Гл. 5 Численное интегрирование
Этот метод называется методом Симпсона.
Если мы разделим отрезок интегрирования на равные части, то
h = xn+i -xn =^p,xn =a + nh ,n = 0,...,N
где h называется шагом деления. При этом квадратурные формулы (5.2), (5.3) и (5.4) значительно упрощаются:
N-1
lR(f) = h]Tf(xn+1/2)	(5.5)
п=0
4	N-1
lT(O = >t(f(xn)+f(xn+1)) = п=0
( 4	N-1	4	\
h —f(a)+jTf(xn)+-^f(b)
n=1	)
ls (f) = ^h^(f(x2m+2) + f(x2m+1) + f(x2m)) = *3 m=0
lhff(x0) + 4f(x1) + 2f(x2) + ...+>
3 l42f(xN.2) + 4f(xN_1) + f(xN) ,
(5.6)
(5-7)
Хотя формулы интегрирования с постоянным шагом имеют простой вид, их использование не всегда приемлемо с точки зрения вычислительной эффективности. Рассмотрим, например, функцию, показанную на рисунке 5.4. Если мы выберем постоянный шаг интегрирования, то он должен быть достаточно малым для того, чтобы более точно интегрировать функцию вблизи пика. Вместо этого можно использовать относительно большой шаг там, где производная функции f(x) мала и меньший шаг в областях резкого изменения функции (рисунок 5.4). Если нам требуется вычислить интеграл с некоторой заданной точностью, то данный приём позволяет это сделать с меньшими затратами, так как значение функции вычисляется в меньшем количестве точек.
Теперь мы обратим наше внимание на оценку ошибок полученных выше квадратурных формул, Для простоты мы рассмотрим случай деления отрезка интегрирования с постоянным шагом. Предположим, что f(x)eC(4)[a,b], тогда используя формулу Тейлора, представим функцию f(x) на каждом подинтервале [xn,xn+i] в виде
5.1 Простейшие квадратурные формулы
119
Рисунок 5.4, Ситуация когда следует использовать неравномерное деление отрезка интегрирования.
Цх) = f(Xn+1,2) + f'(хп+1/2 )(х - хп+1/2
f (хп+1/2)(х хп+1/2) + f (хп+1/2)(х хп+1/2
Z	о
Af(4)(y)(x_Xn+i/2)4
ye[xn,Xnti]
Из этого разложения легко получить, что
Xr+1	L. 3
jf(x) dx - hf (xn+1/2) = f’(Xn+V2) + O(h5)
и, следовательно, выражение для ошибки метода прямоугольников (5.5) принимает вид
120
Гл. 5 Численное интегрирование
N-l/иЗ	Л
^(0 = ^ ^f’(xn+1/2) + O(hs) .
n=O \
Используя теорему о промежуточном значении, окончательно получим
f "(у) + O(h4 ),
У € [a,b]
Оценка ошибки для метода трапеций (5.6) и для метода Симпсона (5.7) (в этом случае мы предполагаем, что f(x)eC<6)[a,b]) может быть получена аналогичным образом:
ет(f) = -(b~^2 f'(y) + O(h4), у е [а,b],
es(f) =	f(4)(y) + °(h6), у g [a,b].
Эти оценки ошибки показывают, что методы прямоугольников и трапеций дают точное значение интеграла от линейных функций. Метод Симпсона даёт точное значение интеграла, если подинтегральная функция является полиномом не выше третьей степени.
Полученные выше выражения для ошибок квадратурных формул можно представить в общем виде как
e(f) = Chp + O(hm),	(5.8)
где С, р и m зависят от метода. Параметр р называется порядком квадратурной формулы, и он показывает как быстро ошибка e(f) стремится к нулю, когда h->0. Чем выше порядок квадратурной формулы, тем меньше ошибка приближённого значения интеграла при заданном значении шага h. Однако квадратурные формулы высоких порядков довольно громоздки и не всегда надёжны. Более того, теоретическая оценка ошибки (5.8) справедлива только для функций имеющих непрерывные производные вплоть до порядка р, поэтому формулы высоких порядков имеет смысл использовать для интегрирования очень гладких функций.
5.2 Вычисление интегралов с заданной точностью
121
5.2 Вычисление интегралов с заданной точностью.
На практике нам нужно вычислить интеграл с некоторой заданной точностью, то есть, должно быть выполнено условие |e(f)|<8p: Как рассматривалось ранее, ошибка зависит от шага, но определить приемлемую величину шага, используя выражение (5.8) и данное выше условие, довольно затруднительно. Оценить ошибку можно непосредственно в процессе вычислений. Обозначим приближённое значение интеграла вычисленного с шагом hk=hak (0<a<1) как lk , где h -начальный шаг. Запишем выражение (5.8) для двух последовательных приближений:
ek(f) = l-lk=Ch₽+O(h^)
ekt1(f) = l-lk+1 = C(ahkr+O(hn
Эти два выражения содержат два неизвестных: I и С, и после исключения С мы получим
ek+1(f) = l-lk*i “-^(ки-и + ОФк)	(5.9)
1-ар
Так как величина (hk)m много меньше, чем (hk)p, то слагаемым O((hk)m) в выражении (5.9) можно пренебречь и, тогда мы получаем возможность оценить ошибку вычисления интеграла через два его приближённых значения. Для того чтобы получить значение lk, мы должны вычислить подинтегральную функцию в Nk=(b-a)/hk точках и по мере уменьшения шага hk это может потребовать значительных вычислительных затрат. Используя два последовательных приближения lk и 1к+1, можно получить более точное приближение к I. Если мы перепишем выражение (5.9) в виде
1 = 1к+1+т^т(|к+1-1) + °(^) =
1~а	(5.10)
I - ГУР1
al^+O(hH = e)i+O(hH
1-ар
то будет ближе к I (так как т>р) и это даёт возможность получить приближённое значение интеграла с заданной точностью при относительно большом шаге hk. Процедура (5.9) и (5.10) называется экстраполяцией по Ричардсону.
Суммируя всё изложенное выше, можно предложить следующую схему для вычисления интегралов:
122
Гл. 5 Численное интегрирование
1)	зададим начальное значение шага h и параметр а, затем вычислим 1о и положим
l(e) = I
•о 'о •
2)	для каждого значения к=1, 2, ... вычислим lk с шагом hk=hak й улучшенное приближение
3)	если
или
тогда процесс вычисления завершается и
или
Пример 5.1 (применение экстраполяции по Ричардсону) Рассмотрим следующий интеграл
1
l = Jxln(1 + x)dx = 0.25 о
Для вычисления этого интеграла мы воспользуемся методом трапеций (5.6) (р=2, т=4). Выберем начальный шаг h=1 и будем последовательно уменьшать его в два раза (а=0.5). Результаты вычислений представлены в Таблице 5.1.
5.2 Вычисление интегралов с заданной точностью
123
Таблица 5.1
к	Nk	ik	ек из (5.9)	1(e) ’к	||'е) - № г>		К*** I 1(e) к
0	1	0.346574		0.346574	
1	2	0.274653	8.7287е-02	0.250700	3.8254е-01
2	4	0.256201	2.4007е-02	0.250050	2.5167е-03
3	8	0.251553	6.1594е-03	0.250003	1.8778е-04
4	16	0.250388	1.55016-03	0.250000	1.2441е-05
5	32	0.250097	3.8818е-04		
6	64	0.250024	9.7085е-05		
7	128	0.250006	2.4274е-05		
8	256	0.250002	6.0686е-06		
9	512	0.250000	1.5172е-06		
Этот пример демонстрирует эффективность применения экстраполяции по Ричардсону. Улучшенное значение интеграла приближается к I быстрее чем Ir, что значительно уменьшает количество вычислений.
Существуют ситуации, когда подинтегральная функция непрерывна и ограничена на интервале интегрирования, а её производные имеют особые точки на этом интервале. В этом случае константа С в (5.8) стремиться к бесконечности, когда h —> 0. Интеграл
1
I = JVx dx о
является примером такой ситуации. С другой стороны понятно, что интеграл от непрерывной ограниченной функции может быть вычислен с любой точностью в рамках машинной арифметики. Это означает, что поведение ошибки описывается выражением (5.8), но параметры С, р и m неизвестны и, более того, они зависят от конкретной подинтегральной функции. В этом случае экстраполяция по Ричардсону строится на основе трёх последовательных приближений:
l = lk + Ch* +O(hk)
I = 1к+1 + C(ahk )₽ + O(h")
I = lk+2 + С(а2ЬкГ + ОД)
124
Гл. 5 Численное интегрирование
После исключения из этих выражений неизвестных Сир, мы получим
ek+2(f) = I - lk+2 = lk - lk+2 + Qi(l|t\ k~^|2 + O(h") ^’k+1 k 'k+2
(5.11)
и улучшенное приближение вычисляется по формуле
|2	II
*к+1	'к'к+2
2I -1 -1
^‘к+1 ’к	к+2
+о(ьп=е>2+о(К’)
(5.12)
Что интересно, это выражение совпадает с выражением (1.14), поэтому формулу (5.12) часто называют процессом Эйткена для интегралов. Порядок квадратурной формулы, используемой для вычисления Ik, определяется как
In k+2 k+1 р = lim —— Ina
Теперь вычислительная схема конструируется следующим образом:
1)	зададим начальное значение шага h и параметр а, затем вычислим 10 и Ц, и положим
Г = I,.
2)	для каждого значения к = 2,3 , ... вычислим 1к с шагом hk=hak и улучшенное приближение и улучшенное приближение по формуле (5.12)
3)	если | ek(f) |< ер (смотри (5.11)) или
тогда процесс вычисления завершается и
5.2 Вычисление интегралов с заданной точностью
125
или
Пример 5.2 (применение экстраполяции по Ричардсону, когда производные подинтегральной функции имеют особенность на интервале интегрирования)
Рассмотрим интеграл
1 ~
I = |Vl - х2 dx О
= - « 0.785398.
4
Производные подинтегральной функции:
f'(x) = —х(1 - х2р, f "(х) = -(1 - Х2Р ,
и они имеют особенность в точке х=1. Для вычисления этого интеграла мы воспользуемся методом трапеций (5.6). Выберем начальный шаг h=1 и будем последовательно уменьшать его в два раза (а=0.5). Результаты вычислений представлены в Таблице 5.2.
Таблица 5.2
к	Nk	к	ек из (5.11)
0	1	0.500000	
1	2	0.683013	
2	4	0.748927	1.32е-01
3	8	0.772455	4.32е-02
4	16	0.780813	1,48е-02
5	32	0.783776	5.19е-03
6 -	64	0.784824	1.83е-03
• t			
ю	1024	0.785390	2.85е-05
126
Гл. 5 Численное интегрирование
Таблица 5.2 (продолжение)
к	Nk	1<е) из (5.12)	1<е) -1<’> К — 1 1(e) *к	l‘e) из (5.10)
0	1			0.500000
1	2	0.683013		0.744017
2	4	0.786031	1.31е-01	0.770899
3	8	0.785514	6.57е-04	0.780297
4	16	0.785413	1.21е-04	0.783599
5	32	0.785402	2.17е-05	0.784763
6	64	0.785399	3.87е-06	0.785174
				
10	1024			0.785395
И опять значения 1<е\ основанное на экстраполяции (5.12), дают лучшее приближение к I по сравнению с lk; Порядок метода трапеций для данного интеграла можно оценить следующим образом:
р«— 1п2
Результаты последнего столбца Таблицы 5.2 показывают, что экстраполяция (5.10), основанная на теоретическом значении порядка метода трапеций р=2, даёт лишь незначительное улучшение сходимости.
5.3. Формулы Гаусса-Кристоффеля.
В этом параграфе мы рассмотрим вычисление интегралов специального вида
Iff) = jp(x)f(x)dx,	(5.13)
с
где р(х) называется весовой функцией. До сих пор в этой главе мы имели дело с квадратурными формулами, в которых подинтегральная функция вычислялась в заданных точках (узлах). Теперь мы обсудим
5.3. Формулы Гаусса-Кристоффеля
127
некоторые специальные формулы для интеграла (5.13) которые имеют следующий вид (формулы Гаусса-Кристоффеля):
м
1(f) = 2wmf(zm) + eM(f),	(5.14)
m=1
где веса W-! , ... , Wm и узлы z-i, ... , Zm свободные параметры. Следует заметить, что весовая функция р(х) не участвует в вычислениях явным образом. Как мы увидим позднее, она влияет на выбор весов и узлов в формуле (5.14). Наша цель состоит в определении этих параметров таким образом, чтобы квадратурная формула (5.14) имела наименьшую возможную погрешность. Так как теперь мы имеем 2М параметров wm и zm, то можно построить формулу, которая даёт точное значение интеграла (ем(0=:0) от всех полиномов степени не выше чем 2М-1. Поясним это утверждение на примере. Пусть функция f(x) есть полином третьей степени: f(x) = ЗзХ3 + а2х2 + р^х + р0, и [c,d]=[0,1 ]. Пусть также р(х)=1 и М=2. Предположим, что квадратурная формула (5.14) даёт точное значение интеграла (5.13). Тогда мы имеем
Перепишем это выражение в виде
a0(1-w, -w2) + a1(--w1z1 -w2z2) +
a24-w1z? -w2z22) + a34-w1z13 -w2z3) = 0
О	»
Решение системы уравнений
1 - w, — w2 = 0
128
Гл. 5 Численное интегрирование
даёт веса Wj, W2 и узлы z1f Z2 квадратурной формулы, которая точна для полиномов третьей степени.
Возвратимся теперь к интегралу (5.13). Если
1)
2)
р(х) > 0 на интервале [c,d] и p(x)eC(0)[c,d],
d
существует,
с
тогда существует набор полиномов Рп(х) ортогональных на отрезке [c,d] с весовой функцией р(х), то есть
d
|p(x)Pn(x)Pm(x)dx =
С
О, n # m const,n = m ч -
(5.15)
Все нули этих полиномов вещественны и расположены внутри отрезка [с, d]: Составим полином степени М по узлам квадратурной формулы:
м
QM(X) = n(X~Zm)
m=1
Пусть f(x)=QM(x)Pm(x) и если т<М-1, то функция f(x) есть полином степени не выше 2М-1. Следовательно, формула (5.14) точна для этой функции. Это даёт
d	М
Jp(x)QM (x)Pm (х) dx = 2 w^QM (zm )Pm (zm) = 0, c	m=1	(5.16)
m =
так как QM(zm)=0. Значит, Qm(x) ортогонален ко всем полиномам Рт(х) степени т<М-1. Разложим теперь Qm(x) по полиномам Рп(х):
м
QM(x) = £bnPn(x).
П=1
Подставим это выражение в (5.16) и, учитывая (5.17)получим
5.3. Формулы Гаусса-Кристоффеля
129
d
Jp(x)QM(x)Pm(x)dx =
С м
Jp(x)Pn(x)Pm(x)dx = bm • const = 0,
то есть bm=0 когда гп<М-1. Тогда согласно нашему разложению, Qm(x) совпадает с Рм(х):
м
QM(x) = f[(x-zm) = bMPM(x) m=1
Следовательно, узлы квадратурной формулы (нули полинома QM(x)) являются нулями Рм(х). Получим выражение для весов квадратурной формулы. Составим полином
ад= п 7~j-т=1,т*п \*-п	/
Это полином степени М-1 и формула (5.14) для него точна. Учитывая, что Sn(zm)^0 когда т=п, получим
jp(x)Sn(x)dx = £wmSn(zm) = wn , с	т.1
n = 1..М
Для некоторых интегралов вида (5.13), узлы и веса квадратурной формулы (5.14) известны, например, для следующих случаев, часто встречающихся на практике:
1)	р(х) = 1, с = -1 , d = 1 (формула Гаусса)
2)	p(x) = xk,c = 0,d = 1
3)	р(х) = Vi-х ,с = 0, d = 1
130
Гл. 5 Численное интегрирование
4)	p(x) = -=L=,c = O,d = 1
Vl-X
5)	р(х) = -7====,с =-1 ,d = 1 71-х2
6)	р(х) = 7l-x2, с = -1 , d = 1
7)	р(х) = ,с = 0 ,d = 1 V1 —х
8)	р(х) = -ln(x), с = 0, d = 1
9)	р(х) = ехр(-х), с = 0, d = да
(5.17)
10)	р(х) = ехр(-х2), с = -оо, d = оо
Выражение для ошибки квадратурных формул (5.14) можно представить в виде
eM(f) = C(M)f(2M>(y),ye[c,d],
и они являются наиболее точными формулами для вычисления интегралов от гладких функций. Более подробную информацию о вычислении интеграла (5.13) с весовыми функциями (5.17) можно найти в Приложении А. Это приложение включает в себя информацию о соответствующих ортогональных полиномах, табличные данные о весах и узлах квадратурных формул, а также значения констант ошибки С(М).
Контроль ошибки формул Гаусса-Кристоффеля осуществляется путём выбора подходящего количества узлов интегрирования (чем больше узлов, тем меньше константа С(М)). Когда р(х)=1 квадратура Гаусса может быть применена к интегралу по конечному отрезку [а,Ь] (с помощью преобразования x=(b+a)/2+z(b-a)/2):
brx/ b-aV/b + a b-a А. Jf(x)dx = ——- Jf —- + ——z dz = a	-1 \	z /
5.3. Формулы Г ay сса-Кристоффеля
131
Ь-аЛ /Ь + а Ь-а ~rSw-f~+“z"
+ eM(f)
В этом случае используется смешанный подход к контролю ошибки. Если мы разделим интервал интегрирования [а,Ь] на отрезки длиной h, то можно построить следующую формулу интегрирования:
ь	1	N-1 Г м (
Jf(x)dx = -h£ £wmf а	п=0 _т=1	\
+ -ihz 2

Хп+1/2
.	1 xl. b - а
*n+i/2 = a + (n + -)h, h =	;
n = 0,...,N-1
Выражение для ошибки этой формулы имеет вид
(5.18)
eN(f) = (Ь--2мУ-М C(M)f(2М>(у), у 6 [а,Ь],
и теперь ошибка зависит не только от числа узлов в каждом подинтервале [хп,хп+1], но и от шага h.
Пример 5.3 (формула Гаусса)
Рассмотрим интеграл из примера 5.1:
1
I = jx In (1 + х) dx = 0.25, о
где подинтегральная функция f(x)eC^o)[0»1J. Используем квадратурную формулу (5.18) (N=1, h=1) с тремя узлами и весами (М=3) и в данном случае она примет вид
где wm и zm равны (смотри Таблицу А1 в Приложении А):
Z1 = - 0.774797 , Wi = 0.555556
z2 = 0.	, w2 = 0.888889
z3 = 0.774797 , w3 = 0.555556
132
Гл. 5 Численное интегрирование
Вычисление даёт следующий результат:
1‘3> » 0.249992
с абсолютной ошибкой
е = I -1<3) « 7.62 • 10 е.
Этот пример демонстрирует^ что формула Гаусса позволяет вычислять интегралы с высокой точностью, даже если мы используем всего несколько узлов.
5.4	Несобственные интегралы.
В этом параграфе мы обсудим применение рассмотренных выше квадратурных формул к вычислению несобственных интегралов. Начнём с темы
5.4.1 Бесконечные пределы интегрирования
Как было рассмотрено в параграфе 5.3, формулы Гаусса-Кристоффеля могут быть использованы для вычисления интегралов с весовыми функциями ехр(-х) и ехр(-х2) на интервалах [0, оо) и (-оо, оо), соответственно. Мы всегда можем ввести эти весовые функции искусственным образом, сделав простое преобразование:
jf(x)dx = jexp(-x)(exp(x)f(x))dx о	о
или
ОО	00
jf(x)dx = |exp(-x2)(exp(x2)f(x))dx
-00	-ОС
Теперь применим формулу (5.14) и получим следующие выражения:
ос	М
Jexp(-xXexp(x)f(x))dx « £w^L) exp(z(mL) )f(z^) о	' тп=1
или
5.4 Несобственные интегралы
133
jexp(-x2)(exp(x2)f(x))dx «	exp((z(”’)2)f(z(mH))
-оо	.. m=1
Значения модифицированных весов
wjnL) exp(z^) и w£’exp((z£°)2)
представлены в Таблицах А10 и АН Приложения А. Другой способ обращения с бесконечным интервалом интегрирования - преобразовать его в конечный интервал. Замены переменных у=х/(1+х) или у=ехр(-х) преобразуют интервал [0, оо) в интервал [0,1]. Аналогично, замена переменной у=(ехр(х)-1)/(ехр(х)+1) преобразует интервал (-оо,оо) в интервал [-1,1]. Если преобразованная подинтегральная функция непрерывна и ограничена, то мы получаем стандартную проблему интегрирования. В противном случае мы сталкиваемся с проблемой интегрирования функции имеющей особенность.
Пример 5.4 (преобразование полубесконечного интервала интегрирования)
Рассмотрим следующий интеграл:
। 7 dx
/l + x2 ’
Используя преобразование y=x/(1+x) получим
I = ’[_£_____.
Jy’+d-y)1
Вычисление этого интеграла уже не составляет особого труда.
5.4.2 Подынтегральная функция имеет особенность
В параграфе 5.3 мы рассматривали интегралы вида (5.13). Весовые функции и интервалы (4), (5), (7) и (8) представленные в (5.17), являются часто встречающимися на практике особенностями. Поэтому квадратурные формулы (5.14) с соответствующими узлами и весами могут быть использованы для численного интегрирования функций с этими особенностями.
134
Гл. 5 Численное интегрирование
Пример 5.5 (применение формулы Гаусса-Кристоффеля к вычислению интеграла от функции с особенностью)
Рассмотрим следующий интеграл:
1= -A-2dx =------«-0.822467,
0J1 + x 12
с особенностью ln(x) в точке х=0. Будем использовать формулу (5.14) с двумя узлами и весами (М=2) и для данного интеграла она имеет вид
где wm и zm равны (смотри Таблицу А9 в Приложении А):
Z, = 0.112009 , W! = 0.718539
z2 = 0.602277 , w2 = 0.281461
Вычисление даёт следующий результат: 12 « - 0.821826, с абсолютной ошибкой e2=l - 12~ - 6.4-10’4. Этот пример демонстрирует, что формулы Гаусса-Кристоффеля позволяют довольно точно вычислять интегралы от функций с особенностями, даже если используется всего несколько узлов.
А Другой способ интегрирования функций с особенностями требует некоторых предварительных преобразований исходного интеграла. Если мы можем выделить особенность и затем вычислить интеграл от неё точно или приближённо, тогда проблема сводится к вычислению обыкновенного интеграла. В качестве примера рассмотрим
Yexp(-x) dx = Vdx + Vexp(-x)-1dr =
; 7х oVx о Vx
2/rex PH;H.dx
о а/х
Так как теперь функция f(x)=(exp('X)-1 )х1/2 в точке х=0 равна нулю и непрерывна на интервале [0,1], то для вычисления последнего интеграла можно использовать стандартные формулы интегрирования.
5.5 Многомерное интегрирование
135
5.5	Многомерное интегрирование.
При переходе от задачи вычисления одномерных интегралов к многомерному интегрированию возникает целый ряд новых проблем. В одномерном случае мы имеем три возможных типа области интегрирования: конечный, полубесконечный и бесконечный интервалы. В многомерном случае мы сталкиваемся с большим разнообразием областей интегрирования. В дополнение, подинтегральная функция может иметь особенность не только в точке, а также во множествах точек таких как, например, интервал, плоскость т.д. Поэтому вычисление многомерных интегралов представляет собой значительно более сложную задачу по сравнению с одномерным случаем.
Для таких областей как квадрат, куб, цилиндр и т.д., которые представляют собой декартовые произведения областей более низкой размерности, можно построить формулы интегрирования «перемножая» формулы для вычисления интегралов более низкой размерности (правило перемножения). Так если
b	n
Jf(x)dx »£wnf(xn) а	п=1
есть одномерная формула интегрирования, то
ь b	N L
JJf(x,y)dxdy «^^wnwmf(xn,xm)) a a	n=1 m=1
даёт формулу для вычисления двумерного интеграла. Однако такие методы не всегда самые эффективные. В этом параграфе мы рассмотрим более универсальный подход к вычислению многомерных интегралов, который, в частности, включает в себя и правило перемножения.
Вначале рассмотрим интегрирование по квадратной области S={-1<r< 1, -1<s<1} на плоскости, и наша задача - построить кубатурную формулу для вычисления интеграла
1 1
j = j jf(r,s)drds	(5.19)
-1-1
136
Гл. 5 Численное интегрирование
Введём некоторые узлы (r^Si), (r2,S2), ... .(fuSc), и соответствующие веса w-i, ... ,W|_ таким образом, чтобы формула
L
J«2>kf(rk.sk)	(5.20)
k=1
была точной для одночленов вида rmsm, n>0, т>0, как можно более высокой степени n+m<p. Для простоты мы рассмотрим случай L=4 (рисунок 5.5).
Рисунок 5.5. Расположение узлов кубатурной формулы (5.20) в случае 1=4.
Подставляя функцию f(r,s)=rmsm в формулу (5.20), получим
1 1
w1+w2+w3+w4 = J j dr ds = 4,
-1 -1
1 1
w1r1 +w2r2 + w3r3 + w4r4 = | jrdrds = 0, -1-1
5.5 Многомерное интегрирование
137
1 1
+ w2s2 + w3s3 + w4s4 = f jsdrds = 0,
-1-1
1 1 w^s, +w2r2s2 +w3r3s3 + w4r4s4 = [frsdrds = O,
-1-1
1 1	4
w/2 + w2r22 + w3r2 + w4r2 = j Jr2 drds = -,
-1-1	3
(5.21)
* 1	A
w4s2 +w2s2 + w3s3 +w4s4 = ([s2 dr ds = —,
и так далее.
Если мы наложим некоторые условия на расположение узлов, то эти уравнения можно упростить. Предположим, что (п ,8^)=(-₽,у), (r2,S2)=(p, у), (гз,5з)=(Р,-у) и (r4,s4)=(-p,-y), тогда система (5.21) принимает вид
w1 + w2 + w3 + w4 = 4, p(-w, +w2 +w3 -w4) = 0, y(w, +w2 — w3 -w4) = 0, Py(--w1 +w2 -w3 + w4) = 0, P2(Wj +w2 +w3 +w4) = 4/3, Y2(w1 + w2 + w3 + w4) = 4/3.
Теперь мы имеем шесть уравнений для шести неизвестных и решение этой системы: р=у=(1/3)1/2 и wk=1, k=1,...,4. Тогда кубатурная формула (5.20) приобретает вид
J«f (-Р, Р)+f (р, р)+f (р, - Р)+f (-Р. - Р),
р = 71/3
(5.22)
Это в точности даёт двумерную формулу Гаусса, которая может быть также получена по правилу перемножения для М=2. Мы можем расположить узлы и некоторым другим способом, например, (ri,Si)=(rp,O), (r2,s2)=(0,p), (r3,s3)=(p,0) и (r4,s4)=(0,-p). Решая уравнения (5.21), мы получим Р=(2/3)1-2 и wk=1, k=1,...,4, и теперь кубатурная формула (5.20) записывается в виде
138
Гл. 5 Численное интегрирование
J » f(-0,O) + f(O,0) + f(p,O) + f(O,-P), I-------	(5.23)
р = V2/3
На основе полученных выше формул, построим формулы интегрирования по произвольной прямоугольной области S={a<x<b,c<y<d}. Вначале разобьём область S на ячейки, вводя сетку с узлами (хп,Ут), которая задаётся следующим образом:
xn =a + nhx ,hx =^-^,n = 0,...,N N
U U d“C	Л	I
ym = c + mhy , hy = —— , m = 0 ,..., L
где hx и hy определяют размер каждой ячейки S={xn<x<xn+i»ym^y^yrn+i}-Используя формулы, полученные для интеграла (5.19) и сделав замену переменных x=0.5(xn+xn+i)+0.5hxr и y=0.5(ym+ym+i)+0.5hys , мы сначала вычислим интегралы по каждой ячейке Snm> а затем просуммируем все полученные значения. В результате, мы придём к следующим формулам:
d b
l= jjf(x,y)dxdy = с а
’f(xn+1/2 -0.5phx,ym+1/2 + 0.5₽hy)+'
J. h yy f(xn+1/2+0.5₽hx,ym+1/2 + 0.5phy) + 4 x f(xn+1/2 + 0.5₽hx,ym+1Z2 -0.5₽hy) +
f(xn+1/2 -0.5phx ,ym+1/2 -0.5phy)
на основе кубатуры (5.22) и
d b
1= JJf(x,y)dxdy = c a
((xn+W2 0.5₽hx,yn,+,/2) +
1	f(x„+1/2,yOHl/2+0.5phy)+
4 K yZ5l£o f<xn+V2 +0.5phx,ym+,/2)+
f(x
n+1/2 ’ ym+W2-0.5phy)
(5.24)
(5.25)
5.5 Многомерное интегрирование
139
на основе кубатуры (5.23). Точка (хп+1/2,Ут+1/2) обозначает центр ячейкй и имеет координаты xn+1/2=Xn+0;5hx и ym+i/2=ym+0.5hy. Формулы (5.22) и (5.23) точны для всех одночленов вида xmym, n>0, m>0, n+m<3. Тогда выражение для ошибки формул (5.24) и (5.25) можно записать в виде
e(f)~c(max(hx,hy))4,
где константа С зависит от частных производных функции f(х,у) и мы предполагаем, что все эти производные непрерывны. Для того чтобы вычислить интеграл с заданной точностью мы можем использовать метод представленный в параграфе 5.2, только теперь lk будет обозначать приближённое значение интеграла, вычисленное при делении области интегрирования на Nk х Lk ячеек, где
Nk=^T-hxk, = hxak-°<a<'1
представляют собой число подинтервалов в направлениях х и у, соответственно.
Пример 5.6 (вычисление двумерного интеграла)
Рассмотрим следующий интеграл
I = г гdxdy = а0 8224б7 .
JJl + xy 12
Для вычисления этого интеграла мы воспользуемся кубатурной формулой (5.24). Выберем начальный шаг hx=hy=h=1 и будем последовательно уменьшать его в два раза (а=0.5). Результаты вычислений представлены в Таблице 5.3.
Таблица 5.3
к	Число ячеек	Ik	ek из (5.9)		l~V I	
0	1	0.822014		5.5072е-04		
1	4	0.822432	3.3877е-05	4.2592е-05		
2	16	0.822465	2.6510е-06	2.8275е-06		
140
Гл. 5 Численное интегрирование
Этот пример показывает, что приближённые значения интеграла, вычисленные по формуле (5.24) сходятся очень быстро к точному значению интеграла.
Используя рассмотренный выше подход, можно построить формулы интегрирования и для интегралов более высокой размерности. Например, рассмотрим трёхмерный интеграл 111
j= j | jf(r,s,t)drdsdt.
В этом случае, трёхмерный аналог кубатурной формулы (5.25) имеет вид
8p(-1,0,0) + f(1,0,0) + f(0,-1,0)+>
* 6lj(0,1,0) + f(0,0,-1) + f(0,0,1) ,'
Тогда формула интегрирования по прямоугольному параллелепипеду записывается в следующем виде:
р d Ь
l = Jjjf(x,y,z)dxdydz = оса
4	К-1 N-1 L-1
О	к=о п=0 т=0
f(*n.ym+V2 Zk+1/2 ) f(Xn+i , Ут+1/2 ’ ^k+1/2 К^п+1/2 »Ут »2к+1/г) f(Xn+V2 ,Ут+1 ^к+1/2
(5.26)
где
* Ь - а л	«к ।
х„ = a + nhx ,hx =—,n = 0.N
d-c _	.
ym = c + mhy ,hy =—— ,m = 0,...,L,
zk =o + khz ,hz =£—^,k = O,...,K rV
5.5 Многомерное интегрирование
141
До сих пор мы обсуждали интегрирование по прямоугольным областям, но рассмотренные выше методы имеют более широкую область применения. Дело в том, что при помощи подходящей замены переменных, некоторые регулярные области могут быть преобразованы в прямоугольные области. В частности это касается таких областей как круг, сфера, эллипс, эллипсоид и цилиндр (более подробная информация представлена в Приложении В). Например, чтобы вычислить интеграл по кругу, перейдём в полярные координаты и после преобразования получим
R 2п
jjf(x, y)dxdy = [ frf(rcos<p,rsincp)drd<p.
x2+y2^R2	О О
Таким образом, исходный интеграл превращается в интеграл по прямоугольнику 0 < г < R , 0 < ср < 2к.
Более серьёзная проблема возникает, если нам нужно вычислить интеграл по некоторой нерегулярной области. Предположим, дана область S, показанная на рисунке 5.6, и нам необходимо приближённо вычислить
JJf(x,y)dxdy.
S
При этом появляется дополнительная задача: как представить область S? Наиболее простой способ - приблизить границу S ломаной линией, а затем представить область S как набор треугольников (смотри рисунок 5.6). Эта процедура называется триангуляцией. Теперь для того чтобы получить значение интеграла по области S, мы должны вычислить объёмы всех прямых треугольных призм, где высоты этих призм определяются функцией f(x,y).
142
Гл. 5 Численное интегрирование
х
Рисунок 5.6. Триангуляция нерегулярной области
Прежде чем выводить формулу интегрирования по области S, мы построим кубатурную формулу для стандартного треугольника Т с вершинами (0, 0), (0, 1) и (1, 0) (рисунок 5.7). Если применить рассмотренный выше подход (смотри выражения (5’20) и (5.21)), то можно получить следующие формулы:
JJf (г, s) dr ds «1 (f (р,, у,) + f (₽2, y2) + f (Рз. Уз))
где
Pi = 0, р2 = 0.5 , Рз = 0.5 , у, = 0.5 , уг = 0.5 , уз = О или
Pi = 1/6, р2 = 2/3 , рз = 1/6 , ъ = 2/3, у2 = 1/6,7з = 1/6
Можно легко проверить, что приведённая выше формула точна для одночленов вида 1, х, у, х2, ху, у2. Трансформируя стандартный треугольник, можно получить формулу интегрирования по произвольному треугольнику Тп с вершинами
(х<">,у‘">>. (x<n>.yf0>) И(х^.у^).
5.5 Многомерное интегрирование
143
Рисунок 5.7 Узлы интегрирования для стандартного треугольника.
Суммируя значения интегралов по всем таким треугольникам, мы придём к общей формуле интегрирования по произвольной области S:
1 N
1« 4 £sn(f(x<"’. уГ)+f(x^, y(2n>)+,у<п>)), 3 П=1
144
Гл. 5 Численное интегрирование
где
х<"’ =(х^ -x^Pj +(xfn) - xDy, +х<п>. y<n)=(y!n",-y<’’))₽j+(y<n,-y>"))yj+y(">, j = 1.2,3
Sn - площадь треугольника Tn: Sn = -Jp(p - a)(p - b)(p - c), a = V<xfn) ~ x^n>)2 + (yfn) - УГ)2 b = 7(Xfn> - Xmn))2 + (yfn> - Ут’)2
C = JfXm’ - Xk"’)2 + (Ут’ - yi”’)2
p=-(a+b + c),
N - число треугольников приближающих область S.
Аналогичный подход может быть применен для численного интегрирования по нерегулярной трёхмерной области. В этом случае такая область представляется как набор тетраэдров.
ГЛАВА 6
Введение в конечно-разностные схемы для обыкновенных дифференциальных уравнений
Список обозначений
и(х)
и<е) = u(xn)
h
Du
Dhu
8f(a)
R
^m(A)
8P
точное решение дифференциального уравнения
точное решение дифференциального уравнения в точке хп приближённое решение дифференциального уравнения в точке хп абсолютная ошибка приближённого решения в точке хп шаг разностной сетки дифференциальный оператор конечно-разностный оператор невязка
оператор перехода
матрица Якоби
m-ое собственное значение матрицы А требуемая точность вычисления
Математические модели различных физических явлений часто формулируются в виде дифференциальных уравнений, и изучение таких моделей требует решения этих уравнений. В некоторых случаях их решение может быть выражено через известные функции. Однако, как правило, это невозможно, поэтому получение решения в виде явных выражений нельзя рассматривать как стандартный метод решения дифференциальных уравнений. Нельзя сказать, что аналитические методы
146
Гл. 6 Введение в конечно-разностные схемы
потеряли своё значение. Они остаются необходимым инструментом для решения упрощённых, так называемых, модельных задач. Исследование модельных задач позволяет получить важную информацию о решении более сложных задач.
Наряду с аналитическими методами широко используются различные численные методы для решения дифференциальных уравнений. Мы рассмотрим методы, основанные на конечных разностях. Основная идея этих методов состоит в том, что приближённое решение определяется на некотором множестве точек обычно называемом сеткой. Для вычисления этого приближенного решения используются алгебраические уравнения, которые приближают и заменяют дифференциальное уравнение.
6.1	Простейший пример конечно-разностной схемы
В качестве вводного примера рассмотрим построение вычислительной схемы для решения уравнения
du dx
+ —u = 0,0<x<l 1 + х
(6.1)
u(0) = 1
Первым шагом мы введём некоторое множество точек (узлов) на интервале [0,l]: O=Xo<Xi<...<Xn=I. Это простейший пример вычислительной сетки, и расстояние между двумя соседними узлами hn=xn+1-хп называется шагом сетки. В дальнейшем мы будем рассматривать более простой случай равномерной сетки, когда hn=h=const. Приближённое решение уравнения (6.1) определяется в узлах сетки, то есть оно представляет собой множество значений
U<a> = u(a,(xn), п = 0...N.
Такое множество часто называют сеточной функцией. Теперь нам нужно заменить производную некоторым разностным отношением, определённым на сетке. Простейший способ такой замены основан на определении производной:
du dx
(х и(х + Дх)-и(х)
6.1 Простейший пример конечно-разностной схемы
147
где Дх выбирается достаточно малым. Применяя это приближение, мы получим, вместо дифференциального уравнения (6.1), разностное уравнение в каждом узле сетки (x-»xn, Ax->h)
1|<а) — |1<а)	V
п+1 ип	ЛП. ..(а) _л
h 1 + хп "	’
ujj“ = 1,
(6.2)
хп = nh,n = O,...,N-1,h = — И	9	99	1	ж 1
N
Набор разностных уравнений определённых на некоторой сетке называется конечно-разностной схемой (или просто разностной схемой). Для того чтобы вычислить приближённое решение мы перепишем разностную схему (6.2) в форме рекуррентного соотношения
U
(а) _ п+1
Начиная с
<’=1,
для последовательных значений n=0,...,N-1 мы найдём приближённое решение во всех узлах сетки. Вообще говоря, можно построить бесконечное количество разностных схем для данного дифференциального уравнения. Например, можно записать следующие разностные схемы для уравнения (6.1):
Un°i - Un3) , Xn„ (,) = h 1 + хп+, Т
с рекуррентным соотношением
и(а), п+1
или
, X ,а) 2h 1 + хп "	’
с рекуррентным соотношением
(6.3)
(6.4)
Гл. 6 Введение в конечно-разностные схемы.
U
(а) п+1
= n-1
2hxn
1 + хп
u(a) n
Естественно, что все эти схемы имеют разные свойства. Эти различия показаны на рисунке 6.1, который представляет результаты вычислений для разностных схем (6.2), (6.3) и (6.4), вместе с точным решением уравнения (6.1).
Рисунок 6.1 Приближённые решения задачи (6.1) полученные с помощью различных разностных схем (I = 5 , h = 0.2); о - точное решение ц(х) = (1 + х)ехр( -х); --схема (6.2); — - схема (6.3);-- - схема (6.4).
Этот пример демонстрирует, что построение разностных схем и решение дифференциальных уравнений с помощью этих схем не совсем простая задача. Часто возникают ситуации когда, казалось бы, схема должна давать достоверный результат, а мы получаем приближённое решение, которое не имеет ничего общего с точным решением. Поэтому, прежде чем рассматривать методы построения разностных
6.2 Определения аппроксимации и устойчивости
149
схем, мы должны познакомиться с требованиями, выполнение которых обязательно для любой практически пригодной схемы.
6.2	Определения аппроксимации и устойчивости.
В этом параграфе мы рассмотрим определения аппроксимации, устойчивости и сходимости разностной схемы. Предположим, что дифференциальная задача определена на интервале I. Это значит что требуется найти решение дифференциального уравнения (или системы уравнений) и(х) на интервале I при дополнительных начальных и/или граничных условиях налагаемых на и(х). Далее мы будем записывать дифференциальную задачу в символической форме:
Du = f.
(6.5)
где D - дифференциальный оператор и f - правая часть. Например, чтобы записать задачу (6.1) в форме (6.5) мы определим
Du=N dx 1 + х u(0)
Другой пример: краевая задача
dx2
u(0) = 1
, 0 < х < I
может быть представлена в виде (6.5), если записать
du . . п .
—т + а(х)и, 0 < х < I dx2
g(x)
Du = < u(0)
150
Гл. 6 Введение в конечно-разностные схемы
6.2.1 Аппроксимация дифференциального уравнения разностной схемой.
Предположим что решение и(х) задачи (6.5) существует на интервале I. Для того чтобы вычислить это решение методом конечных разностей введём конечное число точек (узлов) на интервале I. Это множество точек называется сеткой, и будет обозначаться как 1ь={хп} (рисунок 6.2).
0	1
I__L___I____I_____L_____L___I_____I - ,t____I > f
Xn Xi ...................  Xn-1	Xn...............,XN
Рисунок 6.2. Одномерная сетка
Теперь мы будем искать не решение и(х) задачи (6.5)л а сеточную функцию
U(e) =(и<е)....и<в>),
которая представляет собой множество значений решения в узлах lh: Une)=u(xn).
Сетка lh зависит от положительного параметра Ь=хп+1-хп, который может быть выбран сколь угодно малым. По мере увеличения количества узлов сетки, h->0, и сеточная функция будет давать всё более полное представление решения. Тогда используя интерполяцию можно получить решение в любой точке интервала I. Однако точно вычислить и<е) невозможно. Вместо сеточной функции и(е), мы можем вычислить другую сеточную функцию
и(а) = (и(1а) ,...,|4а)),
которая стремится к и(е), когда число узлов сетки увеличивается. Для вычисления этого приближённого решения и<а) используются разностные схемы. По аналогии с выражением (6.5), разностную схему можно записать в символическом виде
DhU<a> = f{я)	(6.6)
Например, разностная схема (6.2) может быть представлена в виде (6.6) если записать
6.2 Определения аппроксимации и устойчивости
151
,N-1
J
f(a) [0,П = 0......N-1
I1
Прежде чем продолжить наше обсуждение нам нужно определить способ измерения сеточных функций. На самом деле, этот способ нам уже известен, так как функции определённые на сетке 1ь есть элементы линейного пространства RN (вектора). Поэтому все определения, рассмотренные в параграфе 2.1, здесь применимы и величина отклонения и(а> от ц(е) определяется как ||i?e)-u(a)||.
Если подставить и(е) в разностную схему (6.6), то мы не получим точного равенства, то есть возникает некоторый вектор невязки:
Dhu(e) =f(a) + 8f(a>.
Поясним это на примере разностной схемы (6.2) для задачи (6.1). Точное решение задачи (6.1) имеет вид и(х)=(1+х)ехр(-х). Если мы подставим сеточную функцию
U<e) = {u'e> = (1 + хп)ехр(-х„)}
в разностную схему (6.2), то получим следующее выражение:
ехр(-х n)(1 + xn)(exp(-h)-1)+hexp(-h) + х
. n = 0,...,N-1
1
Когда h—>0, exp(-h) = 1 - h + -^ h2 + O(h3)
152
Гл. 6 Введение в конечно-разностные схемы
и предыдущее выражение принимает вид
~h ехр(-хп )(1 - xn) + O(h2),
Dhu(e) =f<a> +4 n = 0,...,N-1
О
f(a) + 5f(a)
Мы будем говорить, что разностная схема
Dhu(a) = f(а)
аппроксимирует дифференциальную задачу Du=f на решении и(х) если || 8f||-»0 когда h->0. В дополнение, если выполняется неравенство
|| 5f(a> ||< Chk,
где С>0 и к>0, тогда мы будем говорить, что имеет место аппроксимация k-го порядка или, разностная схема имеет порядок к.
Так как точное решение исходной задачи нам неизвестно, мы можем сделать только оценку невязки. Далее мы рассмотрим пример, который демонстрирует общепринятый метод исследования аппроксимации.
Пример 6.1 (анализ аппроксимации)
Рассмотрим дифференциальную задачу (6.1). В параграфе 6.1 приведены три разностные схемы для этой задачи, и наша цель исследовать аппроксимацию этих схем. Вначале рассмотрим разностную схему (6.2). Если вместо сеточной функции и(а) подставить точное решение и(х), то выражение (6.2) примет вид
u(xn+i)-u(xn) хп
h 1 + хп
Dhu(e) = <п = 0,, N-1
(6.7)
u(0)
Предположим что все производные функции и(х), до четвёртого порядка включительно, непрерывны и ограничены. Тогда мы можем
6.2 Определения аппроксимации и устойчивости
153
разложить u(xn+1)-u(xn+h) по степеням h в окрестности точки хп по формуле Тейлора:
u(x„+1) = u(xn +h) =
u(Xn)+h^(Xn)+lh2'^7(Xn)+O(h3) ах z dx
Подставляя это разложение в (6.7), получим
u(xn+1)-u(x„)
u(xn)
n = 1,..., N-1
1 , d2 U . V
+ 2hd^(Xn> + ?(h ’
Выражение в скобках есть левая часть уравнения (6.1) вычисленная в узлах сетки и, следовательно, оно равно нулю. Тогда выражение (6.7) можно записать как
Dhu(e) = f(a) + 8f(a)
_i 2
— h—^-(xn) +O(h2), n = 1,..., N-1
<2 dx
0
Когда шаг разностной сетки достаточно мал, компоненты вектора невязки пропорциональны h и HSf^ ||<Ch. Следовательно, разностная схема (6.2) аппроксимирует дифференциальную задачу (6.1) с первым порядком по h.
Теперь обратимся к разностной схеме (6.3). После замены иа на точное решение, мы получим
u(xn+1)-u(xn) h
u(xnt1),
Dbu(e)
= ( n = 0,...,N-1
u(0)
(6.8)
В этом случае, анализ удобнее проводить в точке xn+i и разложение u(xn)=u(xn+i-h) по степеням h в окрестности xn+i даёт
154
Гл. 6 Введение в конечно-разностные схемы
, .	,	. . du .	. 1. 2 d2 u
u(xn) = u(xn+1)-h—(Xn+1) + -h2 — dx 2 dx
Подставляя это разложение в (6.8), получим
и(х„,)-и(х.) . х..^и()О =
п+1
h 1
du г . x«+j . . d7(XnJ+i77^u(XnJ
n = 0,...,N-1
Тогда мы можем заключить, что разностная схема (6.2) аппроксимирует дифференциальную задачу (6.1) с первым порядком по h.
В заключение рассмотрим разностную схему (6.4), которая на решении и(х) имеет следующий вид ufx^J-uCx^) 
- 1 h d2 U 2d?
Dhu(e> =
2h
< n = 0 ....
u(0)
*-u(xn), Хп
, N-1
(6.9)
Исследовать аппроксимацию будем в точке хП) поэтому нам нужно разложить u(xn+i)=u(xn+h) и u(Xn-i)=u(xn-h) по степеням h в окрестности хп:
du
2 dx
lh3^(xn) + O(h4)
6 dx
Подставляя это выражение в (6.9), мы получим
u(xn+1)-u(xnJ , xn
n 4
2h
—(xn) + ^-u(xn) +-~-h2-dx n 1 + xn J 6 r
Xn
d3 u
dx3
6.2 Определения аппроксимации и устойчивости
155
Теперь мы имеем | |5^а-| |<Ch2 и это говорит о том, что разностная схема (6.4) является схемой второго порядка.
6.2.2 Замена производных разностными отношениями
В рассмотренных выше примерах мы строили разностные схемы, заменяя производные в дифференциальных уравнениях на разностные отношения. Это общий подход, который позволяет конструировать разностные схемы любого порядка аппроксимации для дифференциальных задач с достаточно гладким решением и(х). Действительно, можно заменить производную duk/dxk таким разностным выражением, что ошибка, возникающая при такой замене, будет иметь любой заданный порядок р относительно h для достаточно гладкой функции и(х). Рассмотрим процедуру построения разностных отношений основанную на методе неопределённых коэффициентов. Общая формула для аппроксимации производных в некоторой точке хп имеет следующий вид:
К) = Л i a5u(x„ + sh) + O(h’)	(6.10)
Q X	П s=-m
где коэффициенты as (s=-m, -m+1,..., I) подбираются таким образом, чтобы добиться требуемого порядка аппроксимации. Пределы суммирования, m и I, подчиняются условию т+1>к+р-1. Из формулы Тейлора следует, что
, U4 / X u du ,  \	1 / u\2 d2 U ,	.
u(x„ + sh) = u(xn)+sh— (xn) + -(sh) —(xn) + ...+
1	rllt+p'1 II
-----!---(sh)k+p_| (xn) + O(h P) (k + p-1)!-dxkp
Подставим-- это разложение вместо u(xn+sh) в выражении (6.10) и получим
dk и dxk
s=-m
+ Q(h₽)
s=-m
156
Гл. 6 Введение в конечно-разностные схемы
Приравнивая коэффициенты при hs, s= -k,	p-1 в левой и правой
частях этого выражения, мы придём к следующей системе уравнений для as:
£а,=0, $=-m
2Sas=0’
iX’a, =0, s=-m
£ska5=k!,
s»-m
(6.11)
£sk+1as=0,
£ sk+p-’as = 0. s»-m
Если m+l=k+p-1. то мы имеем систему из k+p линейных уравнений для k+р неизвестных as. Определитель матрицы коэффициентов этой системы есть определитель Вандермонда, который не равен нулю. Таким образом, в этом случае существует единственный набор коэффициентов as, удовлетворяющий системе (6.11). Если m+i>k+p, то решение системы (6.11) не единственно.
Теперь рассмотрим примеры разностных выражений, которые часто используются на практике. Существует единственное выражение вида ^[aou(xn) + a,u(xn +h)], h
аппроксимирующее du/dx с первым порядком по h. Система (6.11) в этом случае имеет простой вид
ао+а,=О
а, = 1
с решением Эо - -1, а< = 1, Следовательно, мы получаем
u(x.+b)-u(x.)+0(h)_
h
6.2 Определения аппроксимации и устойчивости
157
и это соотношение часто называют «разностью вперёд».
Аналогично можно показать, что существует единственное выражение вида
^[а-Дхп-Ь) + аои(хл)]
аппроксимирующее du/dx с первым порядком по h, то есть
du=u(x.)-u(z.,-h) dx	h
Это соотношение часто называют «разностью назад».
Если мы хотим аппроксимировать du/dx со вторым порядком по h, тогда мы имеем т+1 = 2 и выражение (6.10) принимает вид
Яа.,и(хп -h) + aou(xn) + a,u(xn + h)]. h
Система уравнений (6.11) в этом случае записывается как
аи +.а0 + а1 = 0
а^а.^1
а1 + a_t = 0
Решая эту систему, получим, что а_1= -1/2, а0= 0, а^ 1/2 и, следовательно
—	u(x.+h)-u(x.-b)
dx 	2h
Это соотношение часто называют «центральной разностью».
Рассмотрим теперь аппроксимацию производной d u/dx с порядком о
h . В данном случае, к=2, р=2 и при условии m+l=3 выражение вида
1
h2
а.^х,, - h) + aou(x„) + a,u(x„ + h) +' a2u(x„+2h)
является единственным выражением с необходимым нам свойством. Решая соответствующую систему (6.11) для коэффициентов а_1, ... ,82, мы найдём, что a_i=8i=1, а0= -2 , а2=0 и, окончательно, мы приходим к следующему разностному отношению
h2
d2u u(x„ 4- h) - 2u(xn) + u(xn - h) dx2' n	1	'
158
Гл. 6 Введение в конечно-разностные схемы
6.2.3 Определение устойчивости разностной схемы
Как было показано в параграфе 6.1, приближённое решение и(а\ полученное с помощью разностной схемы (6.4), не отображает точного решения, хотя эта схема аппроксимирует задачу (6.1) со вторым порядком по h. Разностная схема должна обладать не только свойством аппроксимации, но также быть устойчивой.
Рассмотрим возмущённую разностную схему
Dhz(a) = f <а) + €(а),	(6.12)
которая получается из разностной схемы (6.6) путём добавления в правую часть возмущения Мы будем называть разностную схему (6.6) устойчивой, если существуют числа ho>O и 8>0, такие что для любого h<h0 и ||е(а)||<8 разностная задача (6.12) имеет единственное решение z(a) и это решение отличается от и(а) на сеточную функцию z(a)-u(a), которая удовлетворяет оценке || z(a) - u(a) ||<С||е(а)||, где константа С не зависит от h. Это неравенство означает, что малое возмущение правой части разностной схемы (6.6) приводит к малому возмущению решения
В случае линейной дифференциальной задачи (6.5), следующее определение эквивалентно данному выше определению. Мы будем называть разностную схему (6.61 устойчивой, если для любой правой части f^a) разностная задача DhU(a' = f^a) имеет единственное решение и(а) и выполняется оценка
II ч<а) || < С || f(a) ||,	(6.13)
где константа С не зависит от h.
6.2.4 Сходимость как следствие аппроксимации и устойчивости.
Основной вопрос, который возникает при практических вычислениях -насколько полученное приближённое решение отличается от точного решения и как сделать это отклонение достаточно малым.
Предположим что разностная схема (6.6) аппроксимирует задачу (6.5) на решении и(х) с порядком hk и устойчива. Тогда приближённое решение и(а) сходится к точному решению и(е), то есть ||u(e) - и(а)||->0 когда h->0. В дополнение выполняется неравенство
II u(e) - u(a) II < Chk
6.2 Определения аппроксимации и устойчивости
159
где константа С не зависит от h. В этом случае мы будем говорить, что имеет место сходимость порядка hk или, что разностная схема (6.6) имеет точность k-го порядка. Понятно, что чем больше значение к (выше порядок аппроксимации), тем быстрее приближённое решение стремится к точному решению по мере уменьшения шага сетки. Наличие сходимости является основным требованием, предъявляемым к разностным схемам, так как только в этом случае мы можем аппроксимировать точное решение U(e) с любой точностью,, в пределах машинной арифметики, выбирая шаг h достаточно малым.
Пример 6.2 (сходимость разностной схемы первого порядка)
Рассмотрим разностную схему (6.2). Как уже было показано выше, эта схема аппроксимирует дифференциальную задачу (6.1) с порядком h и устойчива, по крайней мере, при h<0>2. Продемонстрируем сходимость этой схемы, так как точное решение дифферен-циальной задачи (6.1) известно. Для вычисления ||u<e) - и(а)|| мы будем использовать норму Ц-Цоо, то есть
|| u(e)-u(a) || w=max | uj,e> “U(na) |.
Результаты вычислений показаны в Таблице 6.1.
Таблица 6.1
h	|| u<‘> - u(a> || J || u(e> ||.
0.2	0.0342 '
0.1	0.0161
0.05	0.0078
0:025	0.0038
0.0125	0.0019
Эти результаты показывают, что схема первого порядка имеет довольно медленную сходимость. Например, если мы хотим вычислить приближённое решение с относительной точностью меньше чем 0.001, то мы должны выбрать шаг меньше чем 0.01. Конечно, в реальной ситуации точное решение задачи нам не известно. Тем не менее, можно оценить сходимость через приближённые решения. Более подробно мы обсудим этот вопрос в параграфе 6.5.
160
Гл. 6 Введение в конечно-разностные схемы
63 Численное решение задачи Коши.
(6.14)
Вначале этого параграфа мы рассмотрим численные методы решения дифференциальных задач вида du ,,	.
— = f(x , и), а < х < dx
с начальным условием и(а)=а.
Далее мы обсудим обобщение этих методов на случай систем дифференциальных уравнений первого порядка
= f(x , и), а < х <Ь	(6.15)
dx
или в развёрнутом виде dui	..	.. X
dx
d U jq	- .	%
= ^n(x »	, ..., UN ) ,
dx
с начальными условиями и,(а) = а,
Мы предполагаем, что задача Коши (6.15) (или (6.14)) имеет единственное и устойчивое решение. Решение и(х) задачи (6.15) называется
•	устойчивым, если для любого е>0 существует 8>0 такое, что из выполнения условия
|lu(a)-u*(a)||<8,
где и*(х) есть другое решение уравнения (6.15), следует выполнение
условия
|| и(х)- и*(х)||< 8
для всех х<а.
•	асимптотически устойчивым, если, будучи устойчивым,
|| u(x) — и*(х) || —> 0
когда х—>оо.
6.3 Численное решение задачи Коши
161
Решение ц(х) называется невозмущенным< а и (х) возмущённым. Другими словами, устойчивость означает, что малые возмущения в начальных условиях приводят к малым возмущениям решения. В случае линейной задачи вида
du Л / ч
— = Au + g(x),
где A 7 постоянная матрица размером N на N, устойчивость можно определить через свойства этой матрицы. Решение приведённой выше задачи является
•	устойчивым тогда и только тогда, когда все собственные значения матрицы А имеют неположительные вещественные части,
•	асимптотически устойчивым тогда и только тогда, когда все собственные значения матрицы А имеют отрицательные вещественные части.
Для нелинейной задачи (6.15) можно провести локальный линейный анализ для того, чтобы проследить развитие малых возмущений. Если представить возмущённое решение в виде u (x)=u(x)+v(x), где и (а) близко к и(а), то можно пренебречь слагаемым более высокой степени малости g(x, u, v) в разложении
f (х, u*) = f (х, u + v) = f (x, u) + F(x, u)v + g(x, u, v),
й рассматривать линейное уравнение
dv du	du	.. ..	.	.
- =	= f(x,u )-f(x,u) = F(x,u)v
dx dx dx
относительно v с матрицей Якоби
F(x,u) = J^-(x,u)L l5Xm J
Мы рассмотрели лишь основные определения помогающие понять суть явления. Более полное освещение вопросов устойчивости нелинейных задач можно найти в учебниках по дифференциальным уравнениям.
Прежде чем описывать численные методы решения задачи (6.14) мы рассмотрим один из методов анализа устойчивости разностных схем для задачи Коши.
162
Гл. 6 Введение в конечно-разностные схемы
6.3.1 Необходимое условие устойчивости разностных схем для линейных задач.
При решении задачи Коши, компоненты сеточной функции и<а) вычисляются последовательно в узлах сетки. Если оценивать рост решения после каждого такого перехода, то мы получим некоторую процедуру исследования устойчивости. Вначале мы рассмотрим метод исследования устойчивости разностных схем для модельного уравнения
— = -уи , у > 0 , х > О dx
(6.16)
и(0) = а
Любая разностная схема для этого уравнения может быть записана в следующей канонической форме:
Уп+1 =Ryn ,п = о......N-1
Уо задано,
(6.17)
где уп (в общем виде это вектор) зависит от и'а), и R=R(h) называется оператором перехода (в общем виде это матрица). В этом случае
|| и(а) || = max || уп ||,
Hf(a) 11=11 Уо II-
Легко получить, что yn = Rn Уо и тогда мы можем записать
|| и(а> || = max || уп || = max || R"y01| < п	п
max || R" || • || у01| < max || R" || • || f(a> || ’ п	п
Согласно определению устойчивости (6.13) мы приходим к следующему условию
max || Rn || < const . п
или
II Rn ||<|| R ||n < const, n = 0,...,N-1,
которое означает ограниченность нормы степеней оператора перехода. Определённо это условие будет выполнено для любого значения N, если ||R||<1. Из линейной алгебры известно, что спектральный радиус матрицы меньше (или равен) любой нормы матрицы. Принимая это во внимание, мы получим необходимое условие устойчивости разностной схемы для задачи (6.16):
6.3 Численное решение задачи Коши	163
•	1
s(R) = maxXm(R) ^1, гл
(6.18)
где Xm (R) - собственные значения оператора перехода R.
Пример 6.3 (анализ устойчивости)
В этом примере мы обратимся к анализу некоторых разностных схем для задачи (6.16). Вначале мы построим разностную схему аналогичную схеме (6.2):
----2- + уи<а) = 0, n = 0,...,N -1 h
u<oa) = а
Если мы перепишем эту схему в виде
(6.19)
= (1-yh)u<a) ,n = 0,...,N-1
u«a) = а
то получим каноническую форму (6.17), где yn=un, R=1-yh. Тогда кратерий устойчивости (6.18) превращается в условие |1-yh|<1. Разрешая это неравнство относительно h, мы получим следующее ограничение: h<2/y . Разностная схема (6.19) является примером условно устойчивой схемы. Такие схемы устойчивы только при выполнении определённых условий на шаг разностной сетки.
Теперь рассмотрим разностную схему аналогичную схеме (6.3):
n+1—0-: + уи‘а+’ = 0 , п = 0,... .N -1
(6.20)
и<а) = а
Выражая из этого уравнения , мы приходим к следующей канонической форме
=77^ = Ru"a,’n = 0’"-’N-1 (1 + Yh)
Ug3’ = а
Критерий устойчивости (6.18) теперь принимает вид
164
Гл. 6 Введение в конечно-разностные схемы
1
(1 + yh)
и он выполняется для любого h>0. Разностная схема (6.20) является примером безусловно устойчивой схемы.
В заключение мы рассмотрим разностную схему
у(э) __ij(a)
ип±£,^п-Л + уи(а) =0,n=1,...,N-1
2h
u«,a) = a ,
u‘a> = (1 - yh)a
(6.21)
которая аппроксимирует задачу (6.16) co вторым порядком по h. Мы не можем сразу записать эту схему в форме (6.17), так как она связывает не два, а три последовательных значения:
и(а)' , и(а) , и(э)..
Для того чтобы преодолеть это затруднение запишем (6.21) в следующем виде:
,и'а’ =и‘а> -2yhu<a>, и<а) = и<а)
Если мы введём вектор
тогда предыдущее выражение можно представить как
Теперь разностная схема (6.21) записана в форме (6.17). Собственные значения полученного оператора перехода есть корни полинома
6.3 Численное решение задачи Коши
165
= det(R - A.I) = 0,
и они имеют значения
= -yh ± 71 + (yh)2 .
Это выражение показывает, что
X2| = Yh + 7l + (Yh)2 >1
для любого h>0, поэтому разностная схема (6.21) неустойчива. Неустойчивые разностные схемы обычно дают осциллирующие решения возрастающей амплитуды, подобные тому, показанному на рисунке 6.1, и, естественно, такие решения не сходятся к точному решению когда h->0.
6.3.2 Методы Рунге-Кутта.
С простейшей схемой Рунге-Кутта (РК) для задачи (6.14), по сути дела, мы уже встречались (смотри схему (6.2)). Это схема Эйлера
— 11<а>
^.u-g =f(Xn,U<a)), h
= a,
(6.22)
xn = a + nh,n = 0 N-1,h = ^—-N
которая имеет первый порядок аппроксимации. Как мы видели в примере 6.2, схемы первого порядка сходятся довольно медленно к точному решению. В результате требуется значительный объём вычислений, чтобы достичь требуемой точности. В общем виде, явные РК схемы строятся следующим образом:
166
Гл. 6 Введение в конечно-разностные схемы
U(а) _ и<а)
- = ЬЛ + - + bskB , п = 0.......N -1
= а,
=f(xn ,u<a>)
к2 = f(xn + c2h, u<a) + a2,hk,)
k3 =f(xn +c3h,u<a) +h(a31k, +a32k2j)
6.23)
s-1
ks =f(xn + c,h, u<a> +h^asrokm)
m=1
где s есть число стадий и b| , Q , некоторые вещественные параметры. Задавая число стадий, можно определить эти параметры таким образом, чтобы достичь наивысшего возможного порядка аппроксимации. Схемы Рунге-Кутта (6.23) часто представляются символически в виде таблицы Бучера (Butcher):
О
С2
С3
О
^2,1 ^3,1
3,2
В качестве примера рассмотрим двухстадийную схему (6.23)
1/а> __ ij(a)
n+1 n- =b1k1+b2k2,n = 0,...,N-1
u^a) = а,
ki=f(xn.u'a))
k2 =f(xn+c2h,ujla)+a21hk,)
(6.24)
Для того чтобы определить параметры bi , Ьг , С2, и аг,1, мы должны провести анализ аппроксимации. Если заменить и(а) в (6.24) на точное решение и(х), то мы можем записать в точке хп
6.3 Численное решение задачи Коши
167
u(xnJ-u(xn) h
d2 u dx2
(x„) + O(h2)
(t^+bJKx,, , u(xn)) + b2c2h—(x„ , u(x )) +
OX
b2a2 ,hf(xn ,u(x„))-^—(xn,u(xn)) + O(h2) OU
Учитывая, что
d2u	d f di/l	df	8f du	af	x af
dx	dx^dxj	ax	au dx	ax au	’
предыдущее выражение переписывается в виде
^•(хл)-(Ь, +b2)f(xn ,u(xn)) =
Г й af.	, .
h	'u<xn» +
2 J dx
hfb2a2.1 -4VXn ’ и(Хп))т“(Хп . u(xn))+O(h2)
2)	о U
Для того чтобы получить второй порядок аппроксимации, следует положить
^2^2,1	9
2
Теперь мы имеем четыре неизвестных, но три уравнения, поэтому один параметр можно выбрать произвольно. В результате мы получим семейство разностных схем второго порядка аппроксимации, например:
О
1
(6.25)
1/2 1/2
ИЛИ
168
Гл. 6 Введение в конечно-разностные схемы
О
2/3
2/3
1/4 3/4
Такая ситуация характерна для РК схем: существует семейство разностных схем для каждого порядка аппроксимации. Схемы более высокого порядка могут быть построены аналогичным образом, но процедура такого построения довольно громоздка и, поэтому рассматриваться не будет. Приведём только несколько примеров. Так таблица
О
1/2 1/2
3/4	0	3/4
2/9 1/3 4/9
(6.26)
задаёт коэффициенты для схемы третьего порядка и таблицы
О 1/2 1/2
1/2
О 1/2
О 0	1
(6.27)
1/6 2/6 2/6 1/6
О 1/3 2/3 1
1/3
-1/3	1
1	-1	1
3/8
1/8
и
задают коэффициенты для схем четвёртого порядка. Явные схемы Рунге-Кутта условно устойчивы. Области устойчивости для некоторых схем, в случае модельного уравнения (6.16), представлены в Прило
6.3 Численное решение задачи Коши
169
жении С. Эти результаты применимы не только для схем (6.25), (6.26) и (6.27), так как все явные РК схемы с р стадиями порядка р имеют одинаковую область устойчивости.
Чем выше порядок разностной схемы, тем больше вычислений требуется на один шаг. С другой стороны, чем выше порядок разностной схемы, тем быстрее сходимость к точному решению. Поэтому, общее количество операций для схемы более высокого порядка может быть меньше по сравнению со схемой более низкого порядка, как демонстрируется в следующем примере.
Пример 6.4 (сходимость некоторых схем Рунге-Кутта) Рассмотрим следующую дифференциальную задачу
d u _ и2
d х 1 + х ’
О < х < 10
и(0) = 1
Точное решение этой задачи имеет вид и(х)=(1+ 1п(1+х))'1. Вычислим относительную ошибку приближённого решения
||ц<е> -u<a> IL
* l|u(e)IL
для схем (6.22), (6.25), (6.26) и (6.27) при разных шагах h. Результаты
вычислений показаны в ТаблиЦе 6.2.
Таблица 6.2
h	егдля схемы (6.22)	ег для схемы (6.25)	ег для схемы (6.26)	ег для схемы (6.27)
1	5.9е-01	9.1е-02	6.3е-02	1,6е-02
0.5	2.1е-01	3.2е-03	9.3е-ОЗ	9.3е-04
0.25	7.4е-02	1,2е-03	1.0е-03	3.8е-05
•  • •	• •••• • •			
0.03125	7.4е-03	2.9е-05		
Предположим, что нам нужно приближённое решение с точностью ег<1 О*4. Схема четвёртого порядка (6.27) даёт такое решение при h=0.25 (что требует 160 вычислений функции правой части), в то время как
170
Гл. 6 Введение в конечно-разностные схемы
схема второго порядка (6.25) даёт похожий результат только при h=0.03125 (640 вычислений функции правой части).
6.3.3 Методы Адамса.
Для того чтобы получить un+i при заданном un используя схему Рунге-Кутта, необходимо вычислить функцию f(x,u) s раз в некоторых промежуточных точках. Эти вычисленные значения далее больше не
используются. В схемах Адамса, для вычисления следующего значения un+1 используется не только значение un, но и несколько предыдущих значений. В дополнение, вычисление значения Uq+i требует только одного вычисления функции f(x,u) не зависимо от порядка разностной схемы. Схемы Адамса могут быть построены следующим образом. Пусть и(х) есть решение задачи (6.14). Введём обозначение f(x,ti(x))= F(x), тогда
xn+1 -J | j '	хп+1
u(xn+1)-u(xn)= J—dx = JFWdx xn	xn
Известно, что существует единственный полином Рч(х) степени не выше чем к, принимающий в точках хп, xn-i, ...» xn-k заданные значения F(xn), F(Xn-i),..., F(Xn-k), соответственно (смотри Главу 7). Для достаточно гладкой функции F(x), такой полином отклоняется от F(x) на интервале [xn, xn+i] на величину порядка hk+1, то есть
max|Pk(x)-F(x)| = O(hk+1).
Тогда явные схемы Адамса имеют следующий вид xr>+t
u‘na+’i - U?’ •= jpk(x)dx
xn
Для k=0 полином
(6.28)
P0(x) = f(xn, u'a)) = const
и выражение (6.28) превращается в (6.22) (схема Эйлера). Для к=1
Р,(х) = г[(х - х,,., )Г(хп, uj?) - (х - х„ )f(хп_,, и<Г_*)], п
6.3 Численное решение задачи Коши
171
и
1 р	1г	1
- JPi(x)dx = f(xn ,u<na)) + -[f(xn,	,□<-,)]•
Аналогичным способом можно получить разностные схемы для к = 2, 3......
В общем, явные схемы Адамса могут быть представлены в следующем виде:
.(а)	..(а)	р-1
h
п = р-1,
(6.29)
где параметры ак приведены в Таблице 6.3.
Таблица 6.3. Коэффициенты для явных схем Адамса.
Порядок аппроксимации, р	ak,k = O	р-1
1 2 3 4	1 3/2	-1/2 23/12 -16/12 5/12 55/24 -59/24 37/24 -9/24
Для того чтобы начать вычисления по схеме (6.29), когда р>2, необходимо знать р значений
u£’,	р-1,
но только
и*,” = а
задано. Эти недостающие значения могут быть вычислены либо по схеме Рунге-Кутта соответствующего порядка, либо разложением реще-ния в ряд Тейлора в точке х=а. Рассмотрим эту возможность более детально. Значение u(xm)=u(a+rnh) вычисляется на основе следующего разложения
172
Гл. 6 Введение в конечно-разностные схемы
и(а + mh) = u(a) + mh—(а) + dx
^(mh)= i^(a) +... + l(mh)’ ^(a) + 0(h-) VI A	p:	и A
Используя уравнение (6.14), выразим производные функции u(x) через функцию f(x,u):
v /у ,л_ dku _ dy«-i _	9Ук-1 du
ы ’ '"dxk " dx ’ ах Su dx
dyk-i |fdyk-i ах au
у,(х , u) = f(x , u), к = 2 ,..., р
Тогда начальные значения и^’ определяются по формуле
и»	(mh)k .	.	.	.
< = а + X ^-ТГ-УкСа, ос), m = 1...., р-1 к=1
Пример 6.5 (вычисление начальных значений в схеме Адамса) Рассмотрим дифференциальную задачу
du	2 п
— = —Хи , х > О dx
и(0) = 1
Предположим мы хотим использовать схему Адамса четвёртого порядка, поэтому нам нужно знать
и<а), и2а> и и<а>,
чтобы начать процесс вычислений. Производные dku/dxk выражаются следующим образом:
у,(х, и) = -хи2
у2(х, и) = -и2 + 2х2и3
у3(х, и) = бхи3 - бх3и4
у4(х, и) = би3 - 36х2и4 + 24x4us
Тогда начальные значения вычисляются по формулам
6.3 Численное решение задачи Коши
173
и!” = 1 h2 + —h“
1	2	4
Uj3* * = 1 - 2h2 + 4h4
(a) a l_2	81 u4
и!3 = 1—h2 + — h4
3	2	4
Одной из особенностей методов Адамса является то, что для определе-ния ип+ъ необходимо вычислить только значение f(xn,un), так как значения f(xn,i» un-i). f(xn-2> Un-2)» ••• уже были вычислены в процессе определения un, и'ги» •••• Таким образом, преимущество схем Адамса над схемами Рунге-Кутта состоит в том, что они требуют меньшего количества операций на один шаг вычислительного процесса. Основные недостатки схем Адамса: требуется специальная процедура для вычисления дополнительных начальных значений, вычислительная схема усложняется при неравномерном шаге разностной сетки* Использование переменного шага необходимо в областях резкого изменения решения. Условия устойчивости явных схем Адамса, для модельного уравнения (6.16), приведены в Приложении С. Эти условия показывают что схемы Адамса имеют более строгие ограничения на шаг разност1яЛ^етки по сравнению со схемами Рунге-Кутта.
Если мы будем использовать точку Хк+1 для построения полинома Рк(х) в формуле (6.28), то получим неявные схемы Адамса. Они могут быть представлены в следующей форме:
• Л3) _iHa)’ Р~1
-Z2+]__= у h ffx U(a)
.	;	к 1V л n+1-k ’ un+1-k
П k=o
n [0.....N-1 , p = 1,2
П [p-2,..., N-1 , p = 3,4,... «
где параметры b|< приведены в Таблице 6.4.
Неявные схемы Адамса дают более точные результаты, чем явные схемы того же порядка. В дополнение, неявные схемы имеют менее строгие ограничения на шаг разностной сетки по сравнению с явными схемами (схемы первого и второго порядка, и вовсе, безусловно устойчивы, смотри Приложение С).
174
Гл. 6 Введение в конечно-разностные схемы
Таблица 6.4. Коэффициенты для неявных схем Адамса.
Порядок аппроксимации, р	bk ,k = 0,...,p-1
1	1
2	1/2	1/2
3	5/12	8/12 -1/12
4	9/24 19/24 -5/24 1/24
Однако, неявные схемы не эффективны с точки зрения вычислительных затрат. В общем случае, невозможно выразить un+i из разностного уравнения (6.30). Вместо этого, мы должны решить нелинейное уравнение
С - bohf (хп+,, u<a>) + const = 0
относительно un+i, используя тот или иной итерационный метод (смотри Главу 1), а это значительно увеличивает объём вычислений. Тем не менее, неявные схемы могут быть очень полезны в некоторых ситуациях, которые мы рассмотрим позднее.
Неявные схемы можно использовать для повышения точности приближённого решения полученного явным методом. Комбинация явной и неявной схемы называется методом предиктор-корректор. Общая процедура вычислений может быть организована следующим образом:
1) вначале, вычислим приближённое решение и^, используя явную
схему Адамса порядка р в качестве предиктора:
р-1
и*!’, =u'a) + h£akf(xn_k .u'-k)
k=0
2) затем, это приближение уточняется неявной схемой Адамса порядка р (корректор):
р-1
<+> = u(na) + bohf(xn+1 , G<a+>) + h]Tbkf(xn+1.k , u‘a+’_k)
k=1
Из построения видно, что схемы предиктор-корректор являются явными схемами и, следовательно, они условно устойчивы, но эти схемы имеют менее строгие ограничения на шаг разностной сетки по сравнению с явными схемами Адамса (смотри Приложение С).
6.3 Численное решение задачи Коши
175
6.3.4 Исследование устойчивости разностных схем в случае нелинейных задач
В параграфе 6.3.1 мы рассмотрели метод исследования устойчивости для модельного уравнения (6.16). Можно расширить возможности этого метода и применить его для анализа устойчивости разностных схем для уравнения (6.14). Предположим, что интегральная кривая уравнения (6.14) проходит через точку с координатами х=х , й =и(х ). Вблизи этой точки можно записать
f(x,u)«f(x” ,u’) + -|i(x* ,u”)(x —х”) +
5х
af. . .v ..
—(x , u )(u —u ) 5u
и, следовательно, уравнение (6.14) можно приближённо заменить уравнением
du .	, ч
— = -у и + ф(х), dx
где
у’(х‘ ,и”)= |1(х” ,u”) = const, 5u
<p(x) = f(x” ,и”)Л(х” , u”)(x —x”) —
Sx
. af. . ..
U — (X , u ) 9u
Здесь мы предполагаем, что дифференциальное уравнение (6.14) устойчиво, поэтому производная 3f/3u неположительная. Это уравнение выглядит как модельное уравнение (6.16) (функцией <р(х) можно пренебречь, так как она не влияет на устойчивость), поэтому условия устойчивости разностных схем для модельного уравнения можно применить и для случая уравнения (6.14). Любая условно устойчивая схема для уравнения (6.16) имеет ограничение на выбор шага h: h<p/y, P=const>0 (смотри Приложение С). Естественно, что теперь значение коэффициента у=у может меняться от точки к точке, поэтому необходимо модифицировать приведённое выше условие. Это значит, что
176
Гл. 6 Введение в конечно-разностные схемы
мы должны учитывать, что у принимает не одно, а некоторое множество значений, которое описывает изменение 5f/3u вдоль интегральной кривой. По сути дела, существует два способа добиться устойчивости разностной схемы, а именно:
1) производить вычисления с переменным шагом hn, который удовлетворяет условию
hn *₽/у„ Лп =Y*(xn ,u'a))
2) если мы можем оценить величину и (х) на интервале интегрирования то шаг разностной сетки выбирается из условия
h < p/max у*(х . и(х)),
а^х<Ь
и такое значение шага h обеспечивает устойчивость разностной схемы в любой точке интервала интегрирования.
В большинстве случаев встречающихся на практике, такой подход позволяет добиться устойчивых расчётов.
Пример 6.6 (анализ устойчивости разностной схемы для нелинейного уравнения)
Рассмотрим дифференциальную задачу
и(0.1) = 1
Решение этого уравнения ограничено: и(х) < 1. Тогда параметр у можно оценить следующим образом:
у (x,u)= —-Su
20u x
Если мы будем использовать, например схему Рунге-Кутта второго порядка, то выбор
h<-------?----- = 0.01
max y*(x,u)
обеспечивает устойчивость этой схемы в любой точке заданного интервала. Если мы нарушим это условие и выберем например h=0.0159, то полученное решение не является приближённым решением исходной задачи как показано на рисунке 6.3.
6.3 Численное решение задачи Коши
177
Рисунок 6.3. Пример неустойчивого решения;
---точное решение; —----приближённое решение.
6.3.5 Системы дифференциальных уравнений
На практике мы часто сталкиваемся с задачами Коши не для одного уравнения, а для системы из N дифференциальных уравнений первого порядка. Все рассмотренные выше схемы для численного решения уравнения (6.14) непосредственно обобщаются на случай системы уравнений (6.15). Следует только заменить
u(na) на u(na)
и
f(x,u‘a)) на f(x,uj,a>)
в схемах Рунге-Кутта и Адамса. Например, система уравнений
178
Гл. 6 Введение в конечно-разностные схемы
dui /И	X
—L = (1-cu2Xj, , х >0 dx
u,(0) = a,
u2(0) = a2
может быть записана в форме
(6.31)
du
dx
= f(x, u), х > 0
u(0) = uln
если ввести обозначения
'(1-CU2)Ur
J-1 + du, )u2 J
f(x, u) =
Схема Рунге-Кутта (6.25) для системы уравнений имеет вид
С =u<a)+^h(k1+k2)
k, =f(xn ,uir>)
к2 = f(xn+1, u<” +hkj
и в случае системы (6.31) записывается как
( и

(а) 1,п+1
(а) 2,п+1
и‘*2
и.
1,п
6.3 Численное решение задачи Коши
179
'(l-CU^X1
J-1 + du‘sB’)u£,
4l-c(u^ + hkt2))(u‘en4hkJ Л ^-l + d^’’+hkv))(u2’’+hku)?
Задача Коши для дифференциального уравнения вида
dmu	du
= f(x,u,— dx	dx
dm"1u
' dxm'1
dku . . i Л .
—-(a) = aR,k = O m-1 dx
может быть также представлена в виде системы уравнений (6,15) путём замены переменных. Следующий пример демонстрирует эту процедуру. Уравнение
du . , du 2, Л
—— + sin(x— + u2) = О.х > О, dx du
и(0) = а,,
du /л\ . (0) -‘ >
dx
можно представить в виде системы уравнений, если сделать замену
u,(x) = u(x),
u2(x)
du dx ‘
В результате мы получим
du.
T± = u2’ dx
180
Гл. 6 Введение в конечно-разностные схемы
du, dx
= -sin(xu2 + u*),
u1(0) = a1, ^2 (0) = ^2 ’
В параграфе 6.3.1 мы рассмотрели критерий устойчивости разностных схем для модельного уравнения (6.16). Теперь, в качестве модельной системы, выбирается следующая система уравнений:
du
— = Au,x>0, dx
где А - некоторая матрица с постоянными коэффициентами. Критерий устойчивости разностной схемы для этой модельной системы представляет собой некоторое ограничение на величину w=h?cm(A), где Хт(А) есть собственные значения матрицы А. Только, теперь появляется новая особенность. В общем случае, матрица А несимметричная, тогда её собствейные значения не обязательно вещественные и, следовательно, параметр w может принимать комплексные значения. Поэтому разностная схема будет устойчивой, если параметр w (для всех значений т) принадлежит определённой области на комплексной плоскости. Такие области для схем Рунге-Кутта и Адамса показаны на рисунках 6.4-6.6.
В параграфе 6.3.4 мы рассмотрели, как можно обобщить критерий устойчивости, полученный для линейного модельного уравнения, на случай нелинейного уравнения. Этот критерий устанавливает некоторые ограничения на величину hy, где у оценивает скалярную величину Sf/Эи. В случае системы уравнений (6.15), естественным аналогом производной 3f/Su является матрица Якоби F(x,u). Тогда параметр w определяемый теперь как w=h?cm(F) будет переменным. Разностная схема будет устойчивой, если шаг h выбирается таким образом, чтобы параметр w (для всех значений гп) принадлежал определённой области на комплексной плоскости.
6.3 Численное решение задачи Коши
181
Рисунок 6.4. Области устойчивости на комплексной плоскости для р-стадийных явных схем Рунге-Кутта порядка р=1,2, 3, 4. Область устойчивости лежит внутри контура.
182
Гл. 6 Введение в конечно-разностные схемы
Рисунок 6.5. Области устойчивости на комплексной плоскости для явных схем Адамса порядка р=1,2, 3, 4. Область устойчивости лежит внутри контура.
6.3 Численное решение задачи Коши
183
Re(w)
Рисунок 6*6. Области устойчивости на комплексной плоскости для неявных схем Адамса порядка р=3, 4 (схемы первого и второго порядка безусловно устойчивы). Область устойчивости лежит внутри контура.
184
Гл. 6 Введение в конечно-разностные схемы
6.3.6 Методы решения жёстких систем дифференциальных уравнений.
Во многих областях исследований возникают системы дифференциальных уравнений имеющие одно очень интересное свойство называемое «жёсткостью». Применение рассмотренных выше методов для численного решения таких систем, с вычислительной точки зрения, будет крайне неэффективным. Рассмотрим, например, следующую задачу Коши
— = Аи,х>0,	(6.32)
dx
где
40
19
-21
-40
-20 А
20
-40j
(6.33)
с начальными условиями
и(0)= 0
Решение этой задачи имеет вид
и,(х) = — е’2х +—e'4Ox[cos(40x) + sin(40x)] u2(x) = -1 e’2x - e'40x[cos(40x) + sin(40x)] u3(x) = -e-40x[cos(40x) - sin(40x)]
(6.34)
Графики Ut(x), u2(x), и u3(x) представлены на рисунке 6.7.
На интервале 0<х<0.1, все три компоненты изменяются очень быстро и при численном решении этой задачи, шаг разностной сетки должен быть очень мал. Для х>0.1, однако, две компоненты решения, и^х) и ' и2(х), практически совпадают и изменяются довольно медленно, а третья компонента, и3(х), близка к нулю. Поэтому на этом интервале
6.3 Численное решение задачи Коши
185
Рисунок 6.7. Точное решение задачи (6.32)
можно было бы задать и более крупный шаг разностной сетки. Матрицей Якоби F(x,u) для уравнения (6.32) является матрица А определённая в (6.33) и её собственные значения Хт равны -2, -40+40L Если для решения системы (6.32) использовать какую-нибудь явную схему, то мы столкнёмся с довольно сильным ограничением на шаг h, так как последние два собственных значения имеют относительно большое по модулю значение. В тоже время, эти собственные значения определяют ту часть точного решения (6.34), которая пренебрежимо мала при х>0.1. В результате, мы вынуждены задать очень маленький шаг разностной сетки на всём интервале интегрирования, что потребует большого объёма вычислений. Такая ситуация характерна для жёстких систем уравнений.
В случае нелинейной системы (6.15), жёсткость определяется собственными значениями матрицы Якоби F(x,u), которые зависят от х. Система уравнений называется жёсткой на некотором интервале I, если
1) ReXm(x)<0, m = 1,...,N,
186
Гл. 6 Введение в конечно-разностные схемы
2) max| Re Xm(x)|» min| ReXm(x)|, x e I,
где Xm(x) - собственные значения матрицы F(x,u). Отношение
max|ReX_(x) min| ReAm(x)|
называется коэффициентом жёсткости. Система уравнений (6.32) имеет коэффициент жёсткости равный 20, что вполне приемлемо, так как во многих практических задачах коэффициенты жёсткости зачастую достигают величины 106.
Применение явных (условно устойчивых) схем для решения жёстких систем уравнений вызывает затруднение, так как это приводит к сильным ограничениям на величину шага разностной сетки. Единственный способ преодолеть это затруднение - применять неявные схемы, которые либо безусловно устойчивы когда Re2im<0, либо имеют большую область устойчивости. Со схемами первого рода мы уже встречались: это неявные схемы Адамса первого и второго порядка.
Другим популярным методом решения жёстких задач являются формулы дифференцирования назад (BDF, Backward Differentiation Formulae). Построение схем Адамса основано на интегрировании полинома, который интерполирует предыдущие значения f(x,u). Построение схем BDF основано на дифференцировании полинома, который интерполирует предыдущие значения и . Полученная таким образом производная в точке хп приравнивается затем значению f(xnt un). Схемы BDF порядка р для системы уравнений можно записать в следующем виде:
1 р
т;	= dof<xn+i -UntO.
п k=o
где соответствующие коэффициенты представлены в Таблице 6.5. Из этой формулы видно, что схемы BDF являются неявными схемами.
Области устойчивости для схем BDF показаны на рисунке 6.8. Схемы первого и второго порядка безусловно устойчивы когда ReXm<0, а схемы третьего и четвёртого порядка имеют небольшие области неустойчивости для малых значений ReXm , вблизи мнимой оси.
6.3 Численное решение задачи Коши
187
Таблица 6.5. Коэффициенты для схем BDF.
Порядок аппроксимации, р	do	ck,k = 0	р	
1	1	1	-1
2	2/3	1	-4/3	1/3
3	6/11	1	-1311 9/11 -2/11
4	1225	1	-4325 3325 -1325 3/25
Все разностные схемы пригодные для численного решения жёстких задач являются неявными схемами, поэтому на каждом шаге вычислений мы должны решить систему нелинейных уравнений вида
C = h constЛ(хпИ,и'а;,) + г,
где г - некоторый известный вектор. Такая форма уравнений непосредственно подходит для применения метода простой итерации (4.3). Как было рассмотрено в параграфе 4.1, для сходимости метода простой итерации требуется выполнение условия
h • const • || F(x,u || < 1.
(6.35)
Поэтому, имеет смысл применять метод простой итерации только для умеренно жёстких задач, когда ||F(x,u)|| не очень велика. Для очень жёстких задач ||F(x1u)|| велика и, согласно условию (6.35), мы сталкиваемся с сильным ограничением на величину шага разностной сетки. В этом случае, предпочтительнее использовать метод Ньютона и его модификации (смотри Главу 4), так как он обеспечивает сходимость итераций при более слабом ограничении на h чем условие (6.35).
188
Гл. 6 Введение в конечно-разностные схемы
Рисунок 6.8. Области устойчивости на комплексной плоскости для схем BDF порядка р=1, 2, 3, 4. Область неустойчивости лежит внутри контура.
6.4. Численное решение краевых задач
189
6.4. Численное решение краевых задач
В этом параграфе мы рассмотрим методы приближённого решения краевых задач, которые представляют собой дифференциальные уравнения с некоторыми условиями на решение, заданными в разных точках области определения этих задач. Мы познакомимся с основными методами численного решения краевых задач на примере дифференциального уравнения второго порядка вида
d2 и dx2
= f(x,u
du.
—), a<x<b, dx
с условиями заданными в точках х=а и х=Ь (граничные условия). Мы будем предполагать, что это уравнение имеет следующие свойства:
1) функция f(...) и её частные производные по и и du/dx непрерывны и,
2) частная производная функции f(...) по и положительна, а частная производная по du/dx ограничена.
6.4.1.	Метод стрельбы.
Рассмотрим следующую краевую задачу:
d2u	,. du.
—T = f(x,u,—-),a<x^b, dx	dx
u(a) - а
u(b) = р
(6.36)
В параграфе 6.3 мы рассмотрели различные методы решения задачи Коши. Можно применить эти методы для решения краевой задачи (6.36), но для этого нам надо изменить постановку задачи. Вместо краевой задачи (6.36) мы запишем следующую задачу Коши:
190
Гл. 6 Введение в конечно-разностные схемы
d2 U dx2
du.
= f(x,u,——),a<x<b, dx
u(a) = a
(637)

где (p обозначает угол между касательной к интегральной кривой в точке (а , а) и осью х (рисунок 6.9).
Рисунок 6.9. Графическое представление метода стрельбы.
Для заданного значения а, решение задачи (637) зависит от двух переменных, то есть и=и(х,ф), и в точке х=Ь это решение зависит только от <р. Тогда мы может переформулировать задачу (637) следующим образом: найти такой угол ф=ф, чтобы кривая выходящая из точки (а,а) приходила в точку (Ь,р), то есть,
6.4. Численное решение краевых задач
191
и(Ь,ф’) = Р	(6.38)
При этом решение задачи (6.37) для такого угла ф=ф будет совпадать с решением задачи (6.36) и всё сводится к решению уравнения (6.38). Это уравнение имеет стандартный вид Т(ф)=О, где f(<p)=u(b,<p)-₽. Правда, оно отличается от стандартных уравнений тем, что функция f((p) не описывается аналитическим выражением, а определяется через приближённое решение задачи (6.37). Замена краевой задачи на сформулированную специальным образом задачу Коши является основной особенностью метода стрельбы.
Для решения уравнения (6.38) можно использовать различные методы (смотри Главу 1). Например, если мы найдём такие значения углов ф0 и Фъ что разности и(Ь,ф0)-₽ и и(Ь,ф1)-р имеют противоположные знаки, то далее мы можем применить метод деления отрезка пополам. При использовании метода секущих, мы сначала должны задать некоторые
значения ф0 и фь и последующие значения фи затем вычис-ляются по формуле
Фк+1
КфкХфк - (ft.,) ЦфЭ-Кф».,)
к = 1,2,...

Эти вычисления продолжаются до тех пор, пока не выполнится условие |и(Ь,фк)-₽|<£р,
где ер - требуемая точность приближённого решения.
Метод стрельбы хорошо работает в тех случаях, когда решение и(х, ф) не очень «сильно» зависит от ф. В противном случае он становится неустойчивым. Следующий пример поясняет что значит «сильная» зависимость от ф.
Пример 6.7 (неустойчивость метода стрельбы) Рассмотрим следующую краевую задачу:
и(0) = а, и(1) = ₽,
(6.39)
где у - некоторая константа. Решение этой задачи имеет вид
192
Гл. 6 Введение в конечно-разностные схемы
и(х) = ехр(~ух) - ехР(-т(2 - X)) 1-ехр(-2у)
ехр(-у(1 - х)) - ехр(-у(1 + х)) 1-ехр(-2у)
Коэффициенты при а и Р ограничены на отрезке 0^х<1: для всех значений у>0 они не превышают единицу. Следовательно, небольшая ошибка в задании аир приводит к небольшой ошибке в решении. Рассмотрим теперь задачу Коши
d2u
dx2
= у2u, 0 < х < 1,
u(0) = а,
du dx
(O) = tan(cp).
Решение этой задачи имеет вид
1
U(x) = —(ay + tan(<p))exp(yx)+
2у
1
—(ау - tan(<p))exp(-yx) 2у
Предположим мы задали величину tan(cp) с точностью с, тогда решение в точке х=1 будет отличаться от точного значения на величину
ди(1) = ехр(у) - ехр(-у). 2у	2у
Хорошо видно, что для больших значений у это отличие становится недопустимо большим, даже если е достаточно мало. Поэтому, не имеет смысла применять метод стрельбы для решения задачи (6.39) при больших значениях у.
6.4. Численное решение краевых задач
193
6.4.2 Сведение разностной схемы к системе уравнений.
В предыдущем параграфе мы обсудили применение численных методов для задачи Коши к решению некоторых краевых задач. Далее мы рассмотрим построение разностных схем с использованием разностных отношений, полученных в параграфе 6.2.2. Начнём с линейной краевой задачи второго порядка, имеющей следующий вид
з-г = р(х)з~	+г<х) -а - х - ь
dx dx
u(a) =. а u(b) = Р
(6.40)
Введём разностную сетку с узлами Xn=a+nh, п=0 N, где h=(b-a)/N - шаг сетки. Теперь мы заменим производные в (6.40) приближёнными разностными отношениями
d2u u(xn +h)-2u(xn) + u(x„ -h)
dx2 n’№	h2
du . u(xn +h)-u(xn -h)
-r- (x n)———
dx	2n
(6.41)
В результате мы получим следующую разностную схему:
Аое -2u<a)+□<*>)= h
- u'a>) + qnu'a> + r„ , n = 1,..., N -1 2h
uj>a> = a
u‘a> = ₽
Эта схема аппроксимирует задачу (6.40) с порядком h , так как разностные выражения (6.41) аппроксимируют производные с порядком h2, а граничные условия выполняются точно. После приведения подобных слагаемых, схему можно записать в виде
194
Гл. 6 Введение в конечно-разностные схемы
U
(а) О
(1 + l^Bs-)u<na2. - (2 + h2qn )u<a> + (1 - ^)и‘а> = h2rn, n = 1,...,N-1
(642)
= P
Легко заметить, что эти выражения определяют систему линейных уравнений с трёхдиагональной матрицей (смотри (2.9)). Если h|pn|/2<1 и qn>0, тогда условия (2.11) выполняются и можно использовать метод прогонки для решения системы (6.42). Решая эту систему, мы получим {и(а\ приближённое решение во всех узлах разностной сетки.
Построение разностной схемы для нелинейной краевой задачи вида
d2u х/ du<	,
= f(x,u,—),а<х<Ь dx2 dx
u(a) = a u(b) = p
(6.43)
производится аналогичным образом. Однако, система уравнений в этом случае будет нелинейной, что потребует применения какого-нибудь итерационного метода для её решения. Если заменить производные в (6.43) приближёнными разностными отношениями (6.41), то разностная схема будет иметь вид
(||ta) _ 2u(a) 4- u(a) 1 =
|^2 Vun+1 z-un ^un-1/
— iJa)
f XnXa>. 1 “ .n = 1,-.N-1
< Zn >
u£> = a
Un’ = ₽
(6.44)
Эту схему можно представить в виде системы нелинейных уравнений
6.4. Численное решение краевых задач
195
v0 =а
Vo -2vn +V2 -h2f X,,VOI
2h
(6.45)
vN-2 -2vn_; + vn -h2f x^.v^
Vn-2
2h >
vN =₽
Решение этой системы v=(v0 , ... , vN) даёт приближённое значение u<a). Для решения системы (6.45) можно использовать различные итерационные методы, рассмотренные в Главе 4. Если применить, например, метод Ньютона, то на каждой итерации необходимо решать систему линейных уравнений с матрицей Якоби. В данном случае, матрица Якоби является трехдиагональной, поэтому можно применить либо метод прогонки, либо соответствующую процедуру из библиотеки программ. Начальное приближение v(0) можно выбрать в виде линейной функции проходящей через точки (а , а) и (b , Р):
p-а	ab-pa	_ К|
v" =ГТХ" +Т а ’п = 0..........N
b-a Ь-а
Пример 6.8 (нелинейная краевая задача)
Рассмотрим следующую краевую задачу:
d2u z \du~ .
= -exp(-u)— ,0 < х < 1
dx2	dx
u(0) = 0	(6:46)
u(1) = ln(2)
Разностная схема (6.44) для этой задачи записывается как
_L(U»j, - 2u?'+- иг, >=о.
h	2n
n = 1,..., N-1
u'” = 0
uLa) =ln(2)
196
Гл. 6 Введение в конечно-разностные схемы
Тогда соответствующая система нелинейных уравнений имеет вид
v0 = а
vn-ifl“h-exp(-vn)l-2vn +
( 1	А
vn+1|1 + -h• exp(-v„) I = 0,n = 1.N-1
vN =0
Если выбрать начальное приближение
v<0) =xn ln(2), n = 0 ,, N
и относительную точность 10’5, то потребуется всего три итерации по методу Ньютона, для того чтобы решить эту систему. Относительная ошибка полученного приближённого решения для h=0.1 равна
l|u(e)-v|L
II life) II
6.4.3 Метод последовательных приближений.
Идея метода последовательных приближений состоит в том, что решение нелинейной задачи сводится к решению набора линейных задач. Предположим, мы знаем некоторую функцию v0(x), которая удовлетворяет граничным условиям и является грубым приближением к точному решению и(х). Пусть
u(x)« v0(x) + w0(x),
(6.47)
где Wq(x) малая поправка к функции Vo(x). Подставим выражение (6.47) в уравнение (6.43) и проведём линеаризацию: ,
d2 u _ d2 v0 d2 w0 dx2 dx2 + dx2
6.4. Численное решение краевых задач
197
dv0 dw0 dx dx
dv0: О » I dx
x v ____2
vo » .
dx
Wo
д — 4
Idx
dvo 0 ’ .
dx
dw0
о ,dwn
°(wo +H-2 dx
Пренебрегая слагаемым O(...), мы получим линейную задачу для поправки Wq(x):
d2 w d w
= p(x)^ dx	dx
a < x < b f
w0(a) = wo(b) = 0
q(x)w0 +r(x),
(6.48)
где
p(x) =
r(x) = f x,v0,
d2 v0 dx2
Решая линейную задачу (6.48) мы найдём поправку w0(x), тогда v1(x)=v0(x)+w0(x) будет следующим приближением к решению и(х). Таким образом, рассмотренная процедура определяет последовательность линейных краевых задач, решения которых сходятся к решению исходной нелинейной краевой задачи. Хотя в общем случае доказать наличие сходимости довольно затруднительно тем не менее этот метод может использоваться для получения хороших начальных приближений при решении нелинейных систем типа (6.45).
198
Гл. 6 Введение в конечно-разностные схемы
Пример 6.49 (метод последовательных приближений)
Рассмотрим задачу (6.46). Если мы возьмём начальное решение v0(x) =х 1п(2), тогда уравнение (6.48) примет вид (у=1п(2))
d2 w0 dx2
-ехр(-ух)
dw„ dx
+ yexp(-yx)w0 - y exp(-yx),
0<x<1
wo(O) = w0(1) = 0
Численно решая это уравнение для h=0.1, мы получим сеточную функцию
w(a) = !w 1 ” О (VV 0,П ) ’  показанную на рисуноке 6.10.
Рисунок 6.10. Приближённое решение задачи (6.46);-точное
решение;----— - v0(x); • - w0(x).
6.4. Численное решение краевых задач
199
Следующее приближение определяется как
v‘a) = v<a) + w<oa) = {xn ln(2) + w£’n} и ошибка этого приближения равна
*2.3 10Л
Эти результаты показывают, что в данном случае, решение линеаризованной задачи даёт довольно хорошее приближение к решению , исходной нелинейной задачи.
6.4.4. Метод установления
Решение краевой задачи можно трактовать как равновесное состояние, к которому приближается решение некоторой нестационарной задачи. Иногда возникает ситуация когда удобнее и эффективнее, с вычислительной точки зрения, решать такую нестационарную задачу, чем непосредственно искать решение исходной краевой задачи. Такой подход называется методом установления. Мы обсудим основные особенности этого метода в процессе построения численного алгоритма для решения следующей краевой задачи:
d u , vdu . v .
—-г = сДх.и)— + с2(х)и,а < х < b dx2	dx
( . . du . ?| _
g, и(а),—(а) =0
g2fu(b),^(b)| = 0
Л dx )
(6.49)
где Ci(x,u), С2(х), д1(...), д2(...) некоторые заданные функции. Вначале мы должны сформулировать некоторую нестационарную задачу. В нашем случае она может быть записана в следующей форме:
200
Гл. 6 Введение в конечно-разностные схемы
Sv S2v	. .Sv	. .
47 = T77~Ci(X-vh-----c2 X V.
St Эх	3x
a<x<b,t>0
9i| v(a),-|^-(a)l = 0 Sx )
g2|v(b), ^(b)Lo
v(O,x) = go(x)
(6.50)
где функция g0(x) задаёт произвольные начальные условия. Так как граничные условия не зависят от времени, то естественно ожидать, что решение v(x,t) с течением времени будет меняться всё медленнее и медленнее. Поэтому в пределе t->oo, это решение будет стремиться к решению задачи (6.49), то есть
lim v(x,t) = u(x).
t->OO
Следовательно, вместо стационарной задачи (6.49) можно решать нестационарную задачу (6.50) до некоторого момента времени t, когда решение v(x,t) перестанет изменяться в пределах заданной точности. Это и есть основная идея метода установления.
В соответствии с нашим рассмотрением нам теперь нужно построить разностную схему для задачи (6.50). Вначале мы должны задать разностную сетку. Для одномерных нестационарных уравнений она определяется узлами (xn,tk) как показано на рисунке 6.11. Параметры h=xn+rXn и Tk=tk+1-tk называются соответственно шагами по пространству и времени.
Как и прежде заменим производные по про-странству и времени в уравнении (6.50) разностными отношениями. В результате мы получим следующую схему:
vk+1 — vk vk — 2vk+vk	. vk —vk
vn Vn _ vn+1 ^vn vn-1 _ r (y vk \ v n+1 v n-1 _ “V- "	<MXn.VJ 2h (651)
c2(xn)v‘, n = 1,...,N-1;k = 0,1,...
6.4. Численное решение краевых задач
201
дМ1лГ) = о 9М+Д ,vkN+1) = 0, Vn=g0(xn)
здесь верхний индекс к обозначает момент времени tk.
Для вычисления приближённого решения, перепишем разностную схему (6.51) в виде
(6.52)
п = 1,, N-1; к = 0,1,
202
Гл. 6 Введение в конечно-разностные схемы
g;«1 ,v?+1) = 0
ЖХ+1) = о v° = g0(xn)
Из начального условия у(х, 0) = д0(х) следует, что значения v°={ д0(хп)} известны. Поэтому, из формулы (6.52) можно вычислить значения V ={v(xn>ti}- Повторяя эту процедуру, после того как значения V1 2	3
определены, можно последовательно вычислить значения v , v , ....
Очевидно, что построенная нами схема является явной схемой и значит она условно устойчивая. Методы анализа устойчивости такого рода схем требуют специального рассмотрения, что выходит за рамки этой книги, поэтому далее приводится окончательный результат. Разностная схема (6.51) будет устойчива если шаг по времени выбирается исходя из условия
тк < min(t(1> ,<>)>
где
4 + h2 max с,(х)’
X
2h2(2 + h2 max c2(x))
_(2) _ _____________’_______x	__________
k h2 max(c.(xn ,vk))2+ (2 + h2 max c2(x))2
n	X
Метод установления является простым и надёжным методом, так как он даёт приближённое решение, которое сходится к точному решению стационарной задачи при любом начальном условии. Когда приближённое решение vk уже не изменяется в пределах заданной точности, то есть
<8
р’
процесс установления завершён.
Пример 6.10 (метод установления)
Как и прежде, мы рассмотрим задачу (6.46). Тогда соответствующая нестационарная задача имеет вид
6.4. Численное решение краевых задач
203
dv д v . .dv Л . . .
— = -г-? - exp(-v)—,0 < х < 1, t > 0 di dx	Эх
V(0) = О
v(1) = ln(2)
Для примера, выберем начальную функцию до(х)=О, которая не удовлетворяет второму граничному условию и довольно далека от точного решения. Процесс установления показан на рисунке 6.12. Если задать £р=10'4, то потребуется 134 шагов по времени для завершения этого процесса и относительная ошибка полученного решения равна
II и(®’ -V13’ II
1LH—-—IL^.w4.
II u,e) ||.
Если выбрать лучшее начальное условие (например, v0(x)=xln(2)), то потребуется гораздо меньше шагов по времени чтобы получить требуемое приближённое решение.
Рисунок 6.12. Последовательные приближения, полученные методом установления (задача (6.46), h = 0.1,т = h2 /2); -точное решение;
— -— приближённые решения.
204
Гл. 6 Введение в конечно-разностные схемы
6.4.5 Аппроксимация граничных условий в случае, когда на границе задано значение производной.
До сих пор мы рассматривали краевые задачи с граничными условиями первого рода, когда решение принимает некоторые заданные значения в граничных точках. Моделирование различных физических процессов часто приводит к краевым задачам, где в граничных точках задаются значения произ;водных решения (например, граничные условия второго й третьего рода для дифференциальных уравнений второго порядка). В качестве примера рассмотрим построение разностной схемы для следующей краевой задачи:
d2 u /
—г = f х dx
du, .
—(a) = a dx
u(b) = p
du
dx Г
(6.53)
Разностная аппроксимация дифференциального оператора аналогична выражению (6.44):
1	( и(а) — и(а)
___— 2u(a) + и<а) ) = f х
h2 kun+i zun +un-i7 I^n«un • 2h Jr	(6.54)
h=1,...,N-1
uLa) = ₽
Очевидный способ аппроксимировать du/dx в точке а - использовать разность вперёд u<a>-u<a) —•-----------— = а
(6.55)
Однако это выражение аппроксимирует производную в точке а с порядком h, в то время как выражение (6.54) аппроксимирует дифференциальное уравнение с порядком h2. Это значит что разностная схема (6.54) и (6.55) имеет аппроксимацию только первого порядка. Таким образом, менее точная аппроксимация лищь в одной точке снижает точность всего решения. Поэтому необходимо построить более
6.4. Численное решение краевых задач
205
точное приближение для производной в граничной точке. Для этого введём фиктивный узел x.i=a-h, что даёт нам возможность использовать
центральную разность для аппроксимации граничного условия du/dx=a с порядком h : ------------—— = a 2h
(6.56)
Для того чтобы исключить неизвестную величину , запишем выражение (6.54) для п=0:
1	( п(а) —
A(U<” - 2Uo” + ) = f х0 ,и‘а) п	2п
После подстановки (6.56) в предыдущее выражение мы окончательно получим
и‘а> - и(оа) -^h2f(a,u^ ,a) = ah	(6.57)
Для вычисления приближённого решения задачи (6.53), необходимо решить систему (6.45), предварительно заменив первое уравнение в этой системе на уравнение
1 v1-v0--h2f(a,v0.a) = ah.
Рассмотренный нами пример является простейшей реализацией более общего подхода, который называется методом фиктивных областей. Этот метод успешно используется в различных задачах для аппроксимации производных в граничных точках.
Пример 6.11 (аппроксимация граничных условий второго рода) Рассмотрим следующую простую задачу:
7Р<0) = -1 dx
u(1) = 1
(6.58)
206
Гл. 6 Введение в конечно-разностные схемы
Если мы используем выражение (6.55) для аппроксимации граничного условия в точке х=0, то приближённое решение будет заметно отличаться от точного решения, как показано на рисунке 6.13, с относительной ошибкой
= 2.7 Ю’2
Более точная аппроксимация (6.57) позволяет значительно уменьшить эту ошибку: в этом случае ег=4.1 -10"4.
Рисунок 6.13. Приближённое решение задачи (6.58);-точное
решение;------приближённое решение. Для аппроксимации
граничного условия использовалось выражение (6.55).
6.5 Оценка ошибки приближённого решения
207
6.5 Оценка ошибки приближённого решения.
В этом параграфе мы рассмотрим несколько методов оценки и контроля ошибки приближённого решения. Имея возможность оценить локальную или глобальную ошибку приближённого решения, можно подобрать шаг сетки таким образом, чтобы эта ошибка была меньше заданной величины, которую мы будем обозначать ер. Основная идея рассматриваемых ниже методов состоит в том, что для оценки ошибки используются два различных приближённых решения.
Мы начнём наше обсуждение с оценки ошибки в случае численного решения задачи Коши. Вычислим два решения
U<a> и и<а> п мп
в точке хп, где ц<а) обозначает более точное решение. Тогда разница
ц(а) -ц<а> '•'п	'"’п
даёт оценку локальной ошибки
о — । Л®) _ ।
для менее точного решения. Пара схем Рунге-Кутта с порядками аппроксимации р и р+1 (так называемая вложенная пара) может быть использована для вычисления двух приближённых решений. Вложенные пары строятся таким образом, чтобы вычисление функции производилось в одних и тех же точках для обеих схем, что значительно уменьшает число вычислений. Так s-этапная вложенная пара может быть представлена в следующем виде
ь<1)	ь<1)
ь<2>	ь<2)
Наборы параметров
Ь<1) и b(n2> (n=1,...,s)
208
Гл. 6 Введение в конечно-разностные схемы
определяют методы порядка р и р+1, соответственно. Несколько примеров вложенных схем приведены ниже.
Пара Фельберга порядка 3(4)
6.5 Оценка ошибки приближённого решения
209
о
2
4
3
8
I
12
13
1
2
2
0
2
4
3 32	9 32
1932 2197	7200	7296 2197	2197
439 216	-8	3680	845 513	4104
__8_ 27	3544	1859	21 2565	4104	40
25 216 16 135	1408	2197	_2 0	2565	4104	5 0	6656	28561	9	-=- 	_			ЕС 12825 56430	50 Пара Фельберга порядка 4(5)
210
Гл. 6 Введение в конечно-разностные схемы
После того как приближённые решения ц<а) и й<а)
вычислены с некоторым шагом hn,i, проверяется условие
Если это условие не выполняется, то выбранный шаг hn,i не достаточно мал и следует повторить вычисления с другим шагом hn,2- Если для вычисления используется метод с порядком аппроксимации р, тогда lu<a)-u<a) l«ch₽+1
и шаг hn,2 выбирается из условия
1
п,2 — 1 'п,1
£р
а‘а) - и:
Этот процесс повторяется до тех пор, пока приемлемое значение шага разностной сетки не будет найдено. Это значение, затем, может быть использовано в качестве начального шага для вычисления решения в следующей точке: hn+i,i=hn,2- При использовании схем предиктор-корректор (параграф 6.3.3), ошибка может быть оценена через разность двух решений полученных на этапах предиктор и корректор. Получим оценку ошибки в случае, когда предиктор (явная схема Адамса) и корректор (неявная схема Адамса) имеют одинаковый порядок аппроксимации. Тогда для метода порядка р, локальная ошибка записывается как
ёп+1 = < - ц!а! = apch₽ + O(h₽+1) (предиктор),
en+i = С, - uj,a), = acch₽ + O(h₽+1) (корректор),
где параметры (Хс и ар не зависят от h (значения этих параметров приведены в Таблице 6.6).
Таблица 6.6
Порядок аппроксимации, р	aD	ОСс
1	1/2	-1/2
2	5/12	— 1/12
3	3/8	-1/24
4	251/720	-19/720
6.5 Оценка ошибки приближённого решения
211
Теперь, мы можем выразить из этих двух формул chp (основную часть ошибки):
|Уа) — п(а)
ch₽ = 4j±i—Чм + O(h₽+1).
«р - “с
Пренебрегая слагаемым порядка р+1, мы получим оценку локальной ошибки приближённого решения на этапе корректор:
..(e) _..(а) ~ ас	л .(а) 77(a)\
Un+1 Un+1 ~	lUn+1 “ Un+J
ар“ас
Более того, выполняя локальную экстраполяцию, можно получить более
точное решение чем . Если мы запишем
С - (u<a> + acch°) = u‘e+> - G<na+> = O(h₽+1), то приближённое решение
А(а) _ apU^ -acu$
Un+1 ~
aP~«c
будет иметь ошибку порядка hp+1.
В случае краевой задачи, мы можем оценить глобальную ошибку e=u(e)-u<a). Как и прежде, для оценки ошибки нам нужно два приближённых решения. В части 6.4 мы познакомились с разностными схемами для дифференциальных уравнений второго порядка. Эти схемы имели второй порядок аппроксимации, то есть основная часть ошибки была порядка h2. Пусть приближённое решение и(а) получено при вычислении с шагом h, а решение v(a) с шагом h/2. Тогда векторы ошибки этих решений записываются как
1
-u(a) =ch2
2 = u(e) - v(a) = с — h + O(h4)
Пренебрегая слагаемым порядка h , можно выразить эти векторы через приближённые решения:
е, « — (v(a) -ula>),
е2«—(v(a) -u(a)).
212
Гл. 6 Введение в конечно-разностные схемы
Если
то v(a) есть требуемое решение и вычисления заканчиваются. В
противном случае, вычисляется решение с вдвое меньшим шагом разностной сетки и процесс оценки повторяется. Используя экстраполяцию можно построить решение
U(a) = — (4v(a) - u(a)),
которое имеет четвёртый порядок точности.
ГЛАВА 7
Интерполяция и приближение функций
Список обозначений
Pn(x)	интерполяционный полином
Qn(x)	тригонометрический интерполяционный полином
s(x)	интерполяционная сплайн функция
<Рт(х)	базисная функция
Тп(х)	полином Чебышева степени п
х* k	k-ый корень полинома Чебышева степени п
Тп(х)	нормированье полином Чебышева степени П
7.1.	Интерполяция
Результаты экспериментов часто доступны в виде некоторого набора дискретных данных. С другой стороны, зависимость между различными параметрами какого-нибудь явления удобнее всего представлять в аналитической форме. Такая форма позволяет определить значения в промежуточных точках, вычислить интеграл или производную, или просто представить данные в виде гладкой функции.
Интерполяцией называется процедура определения функции, которая точно описывает заданный набор данных. Наиболее простой тип интерполяции состоит в построении полинома, проходящего через заданные точки. С вычислительной точки зрения полиномы имеют полезные свойства: производные и интегралы от них также являются полиномами и вычисление значения полинома в некоторой точке требует только умножений и сложений. Поэтому вначале, в параграфе 7.1.1, мы рассмотрим классические интерполяционные полиномы. В следующем параграфе мы обсудим применение тригонометрических полиномов для интерполяции периодических функций. В последних
214
Гл. 7 Интерполяция и приближение функций
двух параграфах рассматривается интерполяция кубическими сплайнами и кратко обсуждается один из методов двумерной интерполяции.
7.1.1. Интерполяционные полиномы Лагранжа и Ньютона.
Вначале, определим полином первой степени, проходящий через точки (Хо, Уо) и (х-|, уД Линейный полином
ч х — Х1	х-х0
РДх) =-----“Уо+-------Yi
Хо — X,	х1 - х0
имеет требуемое свойство, так как Pi(xo)=yo и Pi(x1)=y1. Построим теперь полином степени не выше чем N, удовлетворяющий условиям
PN(xn) = yn ,n = 0,...,N ,	(7.1)
где значения хп и уп заданы. Такой полином определяется единственным образом и может быть представлен в следующем виде:
N
PN(X) = ЁУ„1п(х),	(7.2)
п=0
где сомножители 1п(х) задаются как
N X — X их)-Пт-^Г'п=°...........N
m=0 лп лт т*п
Полином (7.2) называется интерполяционным полиномом Лагранжа степени N. Для вычисления значения интерполяционного полинома в некорой точке х, не прибегая к явному вычислению коэффициентов полинома, применяется схема Невилла (Neville). На первом этапе, зададим значения
Р‘о>(хп) = у11,п = О.N.
Далее, значения вспомогательных полиномов в точке х определяются согласно рекурентному соотношению
7.1. Интерполяция
215
р(к)(Х) = (X - ХП)Р^1>(Х) - (х - xntk)P<k-1)(x)
Xn+k-xn	,	(7.3)
k = 1,...,N;n = 0,...,N-k
и, окончательно, мы получаем
РГ(х) = Ры(х).
Пример 7.1 (интерполяционный полином Лагранжа)
В Таблице 7.1 представлены значения уп в соответствующих точках хп и требуется провести гладкую кривую через эти точки.
Таблица 7.1
п	Хп	Уп
0 1 2 3	1 2 4 5	1 2 3 2
Определим сомножители 1п(х), которые для данного набора данных записываются как
I (X) = PJ—-2- = --Ux- 2)(х - 4)(х - 5) т=1 хо — Xm 12
I (х) =	= 1(х_ 1)(х-4)(х-5)
Ux,-xm 6
I (X) =	= -1(х - 1)(х - 2)(х - 5)
К1х2-Хт 6
т#2
I (X) = ГТ	= -1 (х - 1)(х - 2)(х - 4)
К1х3-хго 12
Тогда интерполяционный полином Лагранжа имеет вид
216
Гл. 7 Интерполяция и приближение функций
Р3 (х) = А (Зх - 2)(х - 4)(х - 5)+1(11 - 2х)(х - 1)(х - 2).
12	6
На рисунке 7.1 показан интерполяционный полином Лагранжа, вместе с исходными данными из Таблицы 7.1. Предположим, что нам нужно вычислить значение Р3(х) в промежуточной точке х=3, тогда схема Невилла (7.3) представляется в виде следующей таблицы:
к	Рп(к)(х),п = 0,...,3-к
0	12 3 2
1	3 5/2 4
2	8/3 3
5	17/6
Легко проверить, что Pq3)(3) = PN(3).
Рисунок 7.1. Гладкая кривая описывающая данные из Таблицы 7.1; о данные;------------интерполяционный полином Лагранжа.
7.1. Интерполяция
217
Представление интерполяционного полинома в форме (7.2) имеет простой вид и, поэтому, оно часто используется для теоретического анализа. Однако, с точки зрения практических вычислений, такое представление применимо только для небольших значений N. С увеличением N, сомножители |п(х) возрастают и начинают сильно осциллировать. Существует другое представление интерполяционного полинома, которое лучше подходит для вычислений, и оно основано на разделённых разностях. Пусть заданы различные точки x0,...,Xn и значения в этих точках Ур,-..,Ум- Разделённые разности нулевого порядка есть просто значения уп:
D<°> = yn,n = 0,...,N
Разделённые разности порядка к в точке хп вычисляются по следующим рекурентным формулам:
Г) (к-1) _Г)(к-1)
D(«) =_nil---n_ ,k = 1,...,N;n = O.N-k
W-Xn
Тогда, используя введённые обозначения, интерполяционный полином, удовлетворяющий условию (7.1) записывается в виде
N	т-1
PN(x) = D<°> + £оГП<х - xn)	С7-4)
т=1	п=0
Полином (7.4) называется интерполяционным полиномом Ньютона. Его можно представить и в другой форме:
PN(x) 4|f(x-x	- xN-2) + ••• + b'1’}
(x-X0)+Do0)
Используя это представление, значение интерполяционного полинома Ньютона в некоторой точке х может быть вычислено простым и эффективным способом. Этот алгоритм называется схемой Горнера (Homer) и задаётся следующими рекурентными формулами:
218
Гл. 7 Интерполяция и приближение функций
aN=D^
ak = ak+1(x - xk) + Dg°, k = N -1,..., 0 ’
Тогда требуемое значение полинома равно последнему элементу этой последовательности, то есть Ры(х)=Эо.
Пример 7.2 (интерполяционный полином Ньютона)
Рассмотрим данные, представленные в Таблице 7.1. Разделённые разности, вычисленные на основе этих данных, показаны в следующей таблице:
к	D'k)(x),n = 0,К ,3-к
0 1 2 3	1	2	4	5 1	1/2	-1 -1/6 -1/2 -1/12
Коэффициенты интерполяционного полинома Ньютона расположены в первом столбце этой таблицы. Тогда этот полином записывается в виде
Р3(х) = 1 + (х-1)-—(x-1)(x-2)--j-(x-1)(x-2)(x-4) 6	12
7.1.2 Тригонометрические интерполяционные полиномы.
На практике мы часто сталкиваемся с периодическими функциями, которые имеют следующее свойство: f(x+T)=f(x), где Т>0 называется периодом функции. Например, функции, определённые на замкнутых плоских или пространственных кривых, могут рассматриваться как периодические функции. Полиномиальная интерполяция не подходит для таких зависимостей, так как алгебраические полиномы не являются периодическими функциями. Поэтому, мы обратимся к интерполяции с использованием тригонометрических полиномов. Пусть, для простоты, период Т равен 2тг. Предположим, что заданы значения у0 , ... , Угы в
7.1. Интерполяция
219
различных точках х0, ... , X2n^[0, 2тс). Тогда существует единственный тригонометрический полином Pn(x) удовлетворяющий условию
QN(xn) = yn,n = 0..2N .
/
В представлении Лагранжа этот полином имеет вид
2N
QN(x)^ynln(x), п=0
(7.5)
где сомножители 1п(х) задаются как
2N
|nW=n m=0
m*n
n = О
2N.
Когда точки интерполяции расположены равномерно, представление (7.5) можно упростить. Для нечётного числа точек
2лп л .
х. =------,n = 0,...,2N,
" 2N + 1
существует единственный тригонометрический полином
я N
QM(x) = V + 2А cos(nx>+bn sin(nx))	(7.6)
к=1
удовлетворяющий условию
Qw(xn) ~ Уп — 0,...,2N.
Коэффициенты этого полинома вычисляются следующим образом:
2 Д ( а =-----У v cos ——
п 2М + 1^Ут l,2N + lJ
,n = 0....N
220
Гл. 7 Интерполяция и приближение функций
к 2	. (2лтп')	.	..
ь" = ^£у"8“Ьгй}п=1............N
Для чётного числа точек
ТСП _	__ 	.
хл=—,n = 0,...,2N-1,
существует единственный тригонометрический полином
1
QN(x) = —(а0 +aNcos(Nx)) +
N-i	(7-7)
^(a„ cos(nx) + bn sin(nx)) n=1
удовлетворяющий условию
QN(xn) = y„,n = 0.2N-1.
Коэффициенты этого полинома вычисляются следующим образом:
wnn
,п = 0....N
1 2^1 а" = м2ХСО8 т=0
и 2N-1	/
bn=M&™Sin
н т=0	\
nmn।	,	. - .
--- ,n = 1.N-1 N
Тригонометрические интерполяционные полиномы (7.6) и (7.7) можно рассматривать как приближённый ряд Фурье, где интегралы, определяющие коэффициенты этого ряда, вычисляются по методу прямоугольников для равномерной сетки.
Для вычисления значения тригонометрического интерполяционного полинома в некоторой точке х следует использовать процедуру, аналогичную схеме Горнера для алгебраических полиномов. Только теперь рекурентные формулы имеют следующий вид:
ак_, = ак cos(x) - Рк sin(x) + а,.,,
рк_, = рк cos(x) + ак sin(x),
(7.8)
k = N,...,1,
7.1. Интерполяция
221
с начальными условиями ccn = aN и ры = 0. В итоге мы получим
N
“о =2XC0S(nx). п=о
Если вместо подставить Ьм, и задать начальное условие аы=Ьм и Pn=O, то рекурентные формулы (7.8) дают
N
₽0 =^bnsin(nx).
П=1
Следовательно, вычисление значения тригонометрического полинома в точке х требует только вычисления функций sin(x) и cos(x), 8N умножений и 6N сложений.
Пример 7.3 (тригонометрическая интерполяция)
Рассмотрим некоторые значения уп, заданные в точках хп, как показано в Таблице 7.2.
Таблица 7.2
п	0	1	2	3	4
Хп	0	л/4	л/2	л	Зл/2
Уп	0	1	2	1	0.5
Предположим, что эти данные описываются некоторой периодической функцией. На рисунке 7.2 показаны тригонометрический полином Q4(x), определённый в (7.5), и интерполяционный полином Ньютона Р4(х), построенный на основе данных из Таблицы 7.2.
Хорошо видно, что тригонометрический полином лучше представляет исходные данные, чем полином Ньютона. Более того, Q4(2tc)=0, а Р4(2л)«19.2, что демонстрирует непригодность полиномов для интерполяции периодических функций.
222
Гл. 7 Интерполяция и приближение функций
Рисунок 7.2. Гладкие кривые описывающие данные из Таблицы 7.2; о -данные;--------тригонометрический интерполяционный полином;
------интерполяционный полином Ньютона.
7.1.3 Сплайн интерполяция.
В предыдущих параграфах, мы использовали полиномы степени N-1 для того, чтобы представить набор данных из N значений. Однако, при больших значениях N, применение интерполяционных полиномов нецелесообразно. Поведение полиномов высоких степеней имеет осциллирующий характер, что может привести к неадекватному представлению данных.
Альтернативный подход состоит в использовании кусочно-полиномиальной интерполяции. Простейшим методом этого типа является кусочно-линейная интерполяция. Пусть значения Уо,...,уи заданы в различных точках х0х^. Тогда эти данные могут быть представлены в виде непрерывной кусочно-линейной функции, которая принимает на каждом интервале [xn, xn+i] следующую форму:
7.1. Интерполяция
223
Sn(x) = —7—к(хп+1 - X) + УП+1(Х - xn)], x e [xn, xn J.
Xn+1
Такой подход имеет свой недостаток: интерполяционная функция, в общем, недифференцируема на концах интервалов, так как она имеет изгиб в этих точках. Однако, физические данные обычно представляются в виде гладких функций, поэтому интерполяционная функция должна быть непрерывно-дифференцируемой.
Наиболее популярный метод кусочно-полиномиальной интерполяции использует кубические полиномы на каждом интервале [хп ,хп+1] и носит название интерполяции кубическими сплайнами (или просто, сплайн интерполяции). Термин сплайн происходит от названия тонкой деревянной или металической полоски, которая использовалась чертёжниками для того, чтобы провести гладкую кривую через заданные точки. Так как малое смещение w тонкой упругой полоски определяется уравнением четвёртого порядка d4w/dx4=0, то кубический полином действительно моделирует сплайн чертёжника.
Интерполяционная сплайн функция s(x) есть объединение кубических полиномов sn(x): s(x)=Usn(x), определённых на каждом интервале [хп ,xn+i], и имеющих следующий вид:
sn(x) = a„ +bn(x-xn)+cn(x-x„)2 +dn(x-xn)3 (7.9) Для того чтобы определить коэффициенты полиномов sn(x), задаются следующие условия:
1)	sn(xn) = уп, п = 0.N-1	и sN.i(xN) = yN
2)	непрерывность функции s(x): Sn-i(xn) = sn(xn), n - 0 , ..., N-1
3)	непрерывность первых производных функции s(x):
^(xn) = -^(xn),n = 1,...,N-1 dx dx
4)	непрерывность вторых производных функции s(x):
d2 s	d2s
^>{хп) = У1(хо).П = 1.-.М-1 их	ил
5)	некоторые граничные условия, например:
224
Гл. 7 Интерполяция и приближение функций
Эти условия приводят к системе линейных уравнений для коэффициентов сп кубического полинома (7.9):
с0 = О
Дхп_$сп-1 + 2(Дхп + хп_,)сп + Дхпсп =
3	3
— (Уп+1 - Уп ) -	(Уп - Уп-1).
Л*п	Дхп_1
cN =0
п = 1.....N-1
где Ахп=хп+1-хп. Матрица коэффициентов этой системы является трёхдиагональной и обладает свойством диагонального преобладания. Поэтому для решения этой системы можно использовать, например, метод прогонки (смотри параграф 2.6). После того как значения сп вычислены, другие коэффициенты кубического полинома sn(x) определяются из следующих соотношений:
ап =Уп.п = 0.....N
Ьп = 7~(Уп+1 -Уп)-^-(сп+1 +2сп)
Дхп	3
Ь„ ~ П д (ап+1 ~ ап )’
ЗДхп
n = 0,...,N-1
Пример 7.4 (интерполяция кубическими сплайнами)
В Таблице 7.3 представлены значения некоторой величины в 18-ти точках.
Таблица 7.3
п	Хп	Уп	п	Хп	Уп
0	0	1.3	9	5	2.2
1	0.4	1.5	10	6.1	2.3
2	1	1.8	11	7.1	2.2
3	1.2	2.1	12	8.3	1.9
4	1.7	2.6	13	9.6	1.4
5	2.1	2.7	14	10.4	0.9
6	3	2.4	15	10.7	0.7
7	3.5	2.1	16	11.1	0.6
8	3.8	2	17	11.7	0.3
7.1. Интерполяция
225
Построим гладкую кривую проходящую через эти точки. Кубическая сплайн функция описывает эти данные достаточно хорошо, как показано на рисунке 7.3. Для сравнения, на этом рисунке также приведена кривая полученная с использованием интерполяционного полинома Лагранжа. В данном случае этот полином представляет собой полином 17-ой степени и он сильно осциллирует на конце интервала интерполяции.
Рисунок 7.3. Гладкие кривые описывающие данные из Таблицы 7.3; о -данные;--------------интерполяционная сплайн функция;
------интерполяционный полином Лагранжа.
7.1.4 Двумерная интерполяция.
Часто на практике возникает ситуация, когда необходимо построить функцию, представляющую данные, заданные в некоторых точках на плоскости. Предположим, что значения zn , п=1,	, N заданы в неко-
торых произвольно расположенных точках (хп , уп)> п=1, ... ,N (N>3).
226
Гл. 7 Интерполяция и приближение функций
Мы будем также предполагать, что эти точки попарно различны и не лежат на одной прямой. Интерполяционную функцию можно задать в виде
Кх,у) = ^атЬп,(х,у))	(7.10)
т=1
где Ьт(х,у) представляют собой некоторые базисные функции, а коэффициенты ат определяются из условия интерполяции
f(Xn.yn) = 2ambm(xn,yn) = zn , n=1,...,N	(7.11)
m=1
которое задаёт систему линейных уравнений для неизвестных ат. Такой подход называется методом Харди (Hardy). Базисные функции в этом методе выбираются таким образом, чтобы фукция f(x,y) была достаточно гладкой и система уравнений (7.11) была бы как можно лучше обусловленной. Этим требованиям удовлетворяют, например, так называемые радиальные базисные функции
ЬДх.у) = bm(rj = (г2 +а2Г	(7.12)
(на практике часто используется Р = 0.5) и также
bm(x,y) = bm(rm) = ln(a2 +г2),
bm(x,y) = bm(rm) = (a2 +rm)k ln(a2 +r2),k>0
здесь rm = 7(Х-Хт)2+(У-Уп,)2 •
Параметр а следует выбирать не слишком большим, так как число обусловленности матрицы С={сПт}={Ьт(Хп>Уп)} увеличивается с увеличением числа а. Величина этого параметра подбирается в каждом конкретном случае. В качестве ориентира, рекомендуется задавать
что часто даёт хорошие результаты.
Пример 7.5 (двумерная интерполяция)
В Таблице 7.4 представлены значения некоторой величины в 5-ти точках на плоскости. Построим гладкую функцию проходящую через эти точки.
7.1. Интерполяция
227
Таблица 7.4
п	Хп	Уп	Zn
1 2 3 4 5	0 0 1 1 0.5	0 1 1 0 0.5	0.6065 0.6065 0.6065 0.6065 1
На рисунке 7.4 показана интерполяционная функция (7.10) с базисными функциями, определёнными в (7.12).
Рисунок 7.4. Двумерная интерполяционная функция, построенная методом Харди (а=0.8 , [3=0.5).
На самом деле, значения хп, приве-дённые в Таблице 7.4, вычислялись как zn=g(xn,yn)=exp(-(0.5-xn)2 -(0.5-Уп)2). Таким образом, мы пытаемся восстановить функцию, пока-занную на рисунке 7.5.
228
Гл. 7 Интерполяция и приближение функций
х	У
Рисунок 7.5. Функция д(х,у)=ехр(-(0.5-х)2-(0.5-у)2).
Видно, что интерполяционная функция f(x,y), показанная на рисунке 7.4, достаточно хорошо приближает «точную функцию» и глобальная относительная разница между f(x,y) и д(х,у) равна
f J|f(x,y)-g(x,y)|dxdy
00 15» 0.01
_[ fg(x,y)dxdy о о
7.2 Приближение функций и представление данных.
Теория приближения функций включает в себя два типа проблем. Первая проблема возникает, когда функция задана явно, но требуется найти другую функцию с которой, в данной ситуации, удобнее работать. Вторая проблема касается задачи определения функции,
12 Приближение функций и представление данных
229
принадлежащей некоторому классу, которая описывает заданный набор данных «наилучшим», в некором смысле, образом. Мы начнём с рассмотрения этой проблемы.
7.2.1 Метод наименьших квадратов.
Пусть имеется некоторый набор экспериментальных данных, например, приведённый в Таблице 7.5, и мы хотим построить функцию, описавающую эти данные. На рисунке 7.6 преведено графическое представление данных из Таблицы 7.5.
Таблица 7.5
Хп	0	0.5	1	2	3	4	6	8
Уп	0.08	0.39	0.55	1.02	1.61	2.15	3,0	4.05
4.
3.
У 2.
1.
0.
Рисунок 7.6. Графическое представление данных из Таблицы 7.5
Интерполяция требует чтобы интерполяционная функция принимала значения уп в точках хп для каждого п=1,...,8. В данном случае,
230
Гл. 7 Интерполяция и приближение функций
требовать выполнения этого условия не имеет смысла, так как исходные данные не являются точными, а включают в себя погрешность измерений. Из графика видно, что, на самом деле, у зависит линейно от х. Поэтому, вместо интерполяции лучше использовать другой подход, а именно: построить линейную функцию, которая будет иметь «наименьшее» (в некотором смысле) отклонение от заданных значений, но, возможно, не проходить ни через одну точку.
Пусть fn=axn+b обозначает значение линейной функции в точке хп и уп есть данное значение в этой точке. Задачу определения линейной функции, которая описывает заданный набор данных, можно сформулировать следующим образом: найти такие значения коэффициентов а и Ь, чтобы ошибка
N	N
е(а,Ь) = £(Уп -fh)2 =£(У„ ~(ах„ +Ь))2
П=1	П=1
была минимальной. Условие минимума ошибки записывается в виде двух уравнений:
О N	N
^£(У„ "(ах„ +b))2 =2£- хп(уп -ах„ -Ь) = 0
с/а П=1	л=1
и
Л N	N
^-Ё<Уп-ахп-Ь)2 =-2£(уп-ах„-Ь) = 0.
д b TZf	П=1
Преобразование этих выражений приводит к системе уравнений для коэффициентов а и Ь, имеющей вид
N	N	N
alX+bSx" =Zxny"
n-1	"=1	(7.13)
NN
a£xn+bN = £y„ n=1	n=1
Решая эту систему, получим явные выражения для коэффициентов а и Ь:
Ng,-c2g2	= с^.-с.д,
Nc,-c2 ’	Nc,-с2 ’
где
7.2 Приближение функций и представление данных
231
N	N
с1 =Ех" ’ сг П=1	п=1
N	N
д,=Ех"Уп-92 = ХУ" п=1	п=1
<
Рассмотренный нами подход называется методом наименьших квадратов.
Пример 7.6 (построение линейной зависимости методом наименьших квадратов)
Рассмотрим данные приведённые в Таблице 7.5. В этом случае, решение системы уравнений (7.13) даёт а^0.4937 и Ь«0.0943. График линейной функции f=ax+b и исходные данные показаны на рисунке 7.7. При этом ошибка полученного приближения е~1.9-10’2.
Рисунок 7.7. Линейная функция, приближающая данные из Таблицы 7.5; о - данные; — - приближение по методу наименьших квадратов.
232
Гл. 7 Интерполяция и приближение функций
Аналогичным образом можно построить полином
м
Рм(х) = £атхт
т=0
степени M<N-1, который приближает некоторый набор данных (хп,уп), n=1,...,N. В этом случае коэффициенты а0,...,ам выбираются таким образом, чтобы ошибка
N е(а0,...,ам) = £(уп -Рм(хп))2 П=1
была минимальной. Тогда условия Зе/Эат=0 для каждого значения т=1,...,М приводят к следующей системе линейных, уравнений для М+1 неизвестных ат:
N	N	N	N
а0М + а,^хп + а2]Гх2 +... + ам^х“ =£уп
П=1	П=1	П=1	П=1
N	N	N	N
a0£xn +а1£х2 +... + aM£x^+1 =£упхп
П=1	П=1	П=1	П=1
(7-14)
N	N	N	N
а0£хп + а12Х+1+- + ам]Гхп2М =£упх“
П=1	П=1	П=1	Л=1
Эта система уравнений имеет единственное решение при условии, что все хп различны.
В общем случае, метод наименьших квадратов можно применить для приближения набора данных (xn,yn), n=1,...,N некоторой произвольной функцией Т(х,ао,...,8м). Однако в этом случае, задача становится значительно сложнее, так как минимизация ошибки приводит к системе нелинейных уравнений для коэффициентов а0,...,ам. Иногда можно обойти это затруднение, преобразуя исходные данные и аппроксимирующую функцию. Например, предположим, что функция f(x,a,b)= aexp(-bx) приближает некоторый набор данных. Стандартная процедура предполагает выбирать параметры а и b из условия минимума ошибки
7.2 Приближение функций и представление данных	233
N
e = £(y„-f(xn,a,b))2,
П=1
но в данном случае, лучше записать ошибку в следующей форме:
N
е(0 =£(ln(y„)-ln(a) + bxn)2.
п=1
Теперь мы можем минимизировать ошибку e(t) относительно параметров ln(a) и Ь, что даёт линейную систему уравнений для этих параметров, аналогичную системе (7.13).
Пример 7.7 (построение полинома методом наименьших квадратов) Рассмотрим данные приведённые в Таблице 7.6.
Таблица 7.6
п	Хп	Уп	п	Хп .	. Уп
1	0	0	7	1.2	0.9
2	0.2	0.32	8	1.4	0.92
3	0.4	0.58	9	1.6	0.96
4	0.6	0.68	10	1.8	0.99
5	0.8	0.8	11	2.0	1.03
6	1.0	0.88		V -	
Предположим, что эти данные можно приближённо описать полиномом третьей степени. Тогда решение системы (7.14) при М=3, N=11 даёт следующие значения коэффициентов этого полинома:
ао«О,ОО9 , ai«1.7738 , аг~-1.1926 , аз«0.2817
На рисунке 7.8 показан график полинома Р3(х)=0.009+1.7738х-1.1926x^+0.2817х3 вместе с исходными данными из Таблицы 7.6.
Ошибка полученного приближения равна
11
£(У„-Рз(хп))2 «2.5-10-3.
1
234	Гл. 7 Интерполяция и приближение функций
Рисунок 7.8. Кубический полином, полученный методом наименьших квадратов, для данных из Таблицы 7.6; о - данные; •— - приближение по методу наименьших квадратов.
7.2.2 Приближение функции набором ортогональных функций
Теперь мы обратим наше внимание на задачу приближения (аппроксимации) функций. В предыдущем параграфе мы рассмотрели метод наименьших квадратов для приближения дискретных данных. Применим этот подход для построения полинома, который аппроксимирует непрерывную функцию f(x), определённую на интервале [а,Ь]. Только в этом случае, суммирование следует заменить на определённый интегррал. Следуя процедуре метода наименьших квадратов, коэффициенты полинома
м
PM(x) = £amxm
т=0
степени М выбираются таким образом, чтобы ошибка
7.2 Приближение функций и представление данных
235
е(а0 ,...(ам) = J(f(x) - Рм(х))2 dx а
была минимальной. Как и прежде, условия минимума ошибки имеют вид
^- = 0,т = 01...,М,
дат
то есть
J(f(x)-PM(x))dx = O а
jx(f(x)-PM(x))dx = О
ь
|xM(...)dx = 0 а
Дальнейшее преобразование этих выражений даёт систему линейных уравнений для коэффициентов ат:
м ь	ь
^am Jxn+m dx - Jxnf(x)dx
т=0 а	а
(7.15)
п = 0,...,М
Эта система уравнений всегда имеет единственное решение. Элемент с номером (n,m) матрицы коэффициентов системы (7.15) определяется как
Ь	un+m+1 _дП+т+1
| xn+m dx =	-—
?	пч-гп + 1
Матрицы такого типа называются матрицами Гильберта и они очень плохо обусловлены, что приводит к значительному искажению результатов решения (смотри параграф 2.5). В дополнение, рассмотренный нами подход не эффективен с вычислительной точки зрения, так как
236
Гл. 7 Интерполяция и приближение функций
информация полученная при построении полинома степени N не может быть использована при построении полинома более высокой степени.
Эти затруднения можно преодолеть, если выбрать аппроксимирующую функцию специальным образом, а именно:
м
д(х) = атфго(х), т=0
(7.16)
где фт(х) (т=0,...,М) представляет собой набор базисных функций или полиномов. Далее мы покажем, что при определённом выборе этих базисных функций, можно избежать решения системы уравнений. Коэффициенты ат (т=0,...,М) выбираются из условия минимума ошибки
ь
е(а0.....ам) = Jp(x)(f(x) - g(x))2 dx,
а
где р(х) называется весовой функцией. Эта функция должна быть неотрицательной интегрируемой на [а,Ь] функцией, и она также не должна обращаться в ноль на любом интервале из отрезка [а.Ь]. Условия минимума ошибки записываются в виде
Яр ь	( м Л
-— =-2Jp(x)<pm(x1 f(x)-£am<pm dx = O
а	\	т=0	7
т = 0,...,М
Преобразование этих выражений даёт систему линейных уравнений для коэффициентов ат:
м	br	Ьг
£am jp(x)<pm(x)(pn(x)dx = Jp(x)f(x)<pn(x)dx
m=0	a	a
n = 0....M
(7-17)
Пусть функции фт(х) удовлетворяют следующему условию:
7.2 Приближение функций и представление данных
237
ь
fp(x)q>n(x)<pm(x)dx а
JO, if n * m
]an >0,ifn = m’
(7.18)
Тогда, только один интеграл в левой части уравнений (7.17) будет отличен от нуля и решение этой системы имеет простой вид:
1 ь
ап = — Jp(x)f(x)<pn(x)dx.
an а
Функции удовлетворяющие условию (7.18) называются ортогональными на отрезке [а.Ь] с весом р(х) функциями. Они имеют очень полезное свойство: улучшение аппроксимации, посредством включения дополнительного слагаемого ам+1<рм+1(х), не влияет на уже вычисленные коэффициенты Эо,...,ам. Замена переменных
b-a_ cb-ad . b-a
—=—х-------,dx = 
d-c d-c d-c
(7.19)
где xe[a,b] и xe[c,d], позволяет использовать формулы (7.16)-(7.18) для произвольного конечного интервала аппроксимации.
Ортогональные функции (полиномы) играют важную роль в математической физике и механике, поэтому приближение (7.16) может быть полезным в различных ситуациях. Далее мы рассмотрим некоторые примеры применения ортогональных функций и полиномов к задаче аппроксимации функций. Вначале мы обсудим разложение по полиномам Чебышева Тп(х), которое имеет вид
м
g(x) = £amTm(x)	(7.20)
m=o
Полином (7.20) замечателен тем, что он близок к идеальному полиному Popt(x) степени М, который имеет наименьшее отклонение от заданной функции на отрезке [а,Ь], то есть
m(a>j|f(x)-Poet(x)|<rga^|f(x)-P(x)|,
238
Гл. 7 Интерполяция и приближение функций
где Р(х) - любой полином степени М. Полиномы Чебышева Тп(х) ортогональны на отрезке [1,-1] с весом р(х)=(1-х2)'1/2 и константа ортогональности из выражения (7.18) равна ап=л/2. Для хе[-1,1], они определяются как Tn(x)=cos(n arccos(x)) для каждого значения п>0 или
Т0(х) = 1,Т1(х) = х
и
Т„+,(х) = 2хТп(х)-Тп.,(х) для п>1.
Несколько первых полиномов Тп(х) имеют следующий вид:
Т0(х) = 1
Т,(х) = х
Т2(х) = 2х2 -1
Т3(х) = 4х3-Зх
Т4(х) = 8х4-8х2+1
T5(x) = 16xs -20х3 +5х
Тв(х) = 32хе -48х4 + 18х2-1
Т7 (х) = 64х7 -112х= + 56х3 - 7х
Тв (х) = 128х8 - 256х® +160х4 - 32х2 +1
Полином Чебышева Тц(х) степени Nil имеет N простых нулей на отрезке [1 ,-1] в точках
( 2п — 1 А
xN,n =cosj-^7ij, n = 1,...,N	(7.21)
Ошибка приближения (7.20) равна, в основном, отброшенному слагаемому ам-цТм-и(х). Так как полином Тм+1(х) осциллирует на отрезке [1,-1] с амплитудой не превышающей единицу, то максимальная ошибка приближения может быть оценена величиной | Эм+i |.
Пример 7.8 (аппроксимация функции с использованием полиномов Чебышева)
Пусть нам необходимо аппроксимировать функцию f(x)=ln(1+x) на отрезке [0,1]. Полиномы Чебышева были определены на отрезке [1,-1],
12 Приближение функций и представление данных	239
поэтому применяя замену переменных (7.19) с а=-1, Ь=1, с=0, и d=1 мы получим смещённые полиномы Чебышева, определённые на отрезке [0,1]. Тогда аппроксимирующий полином (7.20) принимает следующий вид (для демонстрации мы выбирем бесконечный предел интегрирования):
1п(1 + х)« g(x) = JamTra(2x - 1),х е [о,1] m=0
Первые несколько коэффициентов этого ряда, с точностью до шести знаков, равны
а0 « 0.376452
а, « 0.343145
а2 « -0.029437
а. * 0.003367
О
ад « -0.000433
а5 « 0.000059
а6 « 0.000008
Например, если нам достаточно аппроксимации с ошибкой max | ln(1 + x)-g(x)|< Ю’3, Xe[0,1J
тогда достаточно оставить четыре слагаемых в приведённом выше разложении.
Тригонометрические функции используются для аппроксимации периодических функций, которые имеют следующее свойство: f(x+T)=f(x), где Т>0 называется периодом функции. Пусть, для простоты, период Т равен 2 л и интервал аппроксимации [-я,к]. Рассмотрим следующий набор функций:
<РО(Х) =
1
72л
1
q>iti(x) = -?=cos(mx),m = 1,...,M
• у/п
1
Фм+т(х) = ~Т= sin(mx),m * 1,... ,М -1
240
Гл; 7 Интерполяция и приближение функций
Эти функции ортогональны на отрезке [-л,л] с весом р(х)=1, и константа ап из (7.18) равна единице. Для непрерывной на отрезке [-л,л] функции f(x), аппроксимирующая функция (7.16) задаётся в виде
q	4 М	4 М-1
д(х) =	+ - £ am cos(mx) + - £bm sin(mx)
^Л Л т=1	Л т=1
где
я
ат = jf(x)cos(mx)dx,m =0,...,М
-ж
п
bm = jf(x)sin(mx)dx,m =
-7Г
Так как амплитуда колебаний функций cos(mx) и sin(mx) не превышает единицу, то максимальную абсолютную ошибку аппроксимации max|f(x)-g(x)| можно оценить величиной
Пример 7.9 (аппроксимация периодической функции)
Построим аппроксимицию для функции f (х) = f0(l-1 х / d |), х g [-d, d]
Используя замену переменных, можно легко найти, что
ao = \rlf1~^dx = 7lfo’ d Д d )
m =
Так как исходная функция чётная, то
Окончательно, аппроксимирующая функция имеет вид
7.2 Приближение функций и представление данных
241
В дополнение, мы можем оценить число членов ряда N, необходимое для получения аппроксимации с заданной точностью ер. В нашем случае
и, следовательно,
Графики аппроксимирующей функции с М=3 и функции f(x)=1-|x/d| показаны на рисунке 7.9.
Рисунок 7.9. Тригонометрическая аппроксимация для функций f(x)=1-|x/d| (М=3, f0=1 , d=1); —----------f(x);-----g(x).
242
Гл. 7 Интерполяция и приближение функций
7.2.3 Использование интерполяционных полиномов для приближения функций.
Интерполяционные полиномы, рассмотренные в параграфе 7.1.1, также можно применить для приближения непрерывной функции f(x) на некотором интервале [а,Ь]. В этом случае точки Xo,...,xNe[a,b] задаются произвольно, a yn=f(xn). Предположим, что функция f(x) определена на интервале [-1,1]. Если мы построим интерполяционный полином, который приближает функцию f(x), то ошибку этого приближения можно представить в следующем виде:
1 HN+1 f	N
xg[-1,1],z(x)g[-1,1],
где Pn(x) обозначает интерполяционный полином Лагранжа. Минимизация оШибки сводится к минимизации величины (x-XoXx-Xi).. .(x-Xn). Это можно осуществить, распологая узлы x0,...,xN специальным образом. Прежде чем обратиться к этому вопросу, нам необходимо рассмотреть некоторые дополнительные свойства полиномов Чебышева.
Нормированный полином Чебышева Тп (х) образуется из полинома Чебышева Тп(х) делением на 2П‘1, где п>1 (коэффициент при старшей степени полинома Тп (х) равен единице). Тогда
Т0*(х)=1,
Тп*(х)=21'пТп(х), при п>1.
При этом нули полинома Тп (х) совпадают с нулями полинома Тп(х), и они задаются выражением (7.21). Полиномы Тп(х), п>1, обладают уникальным свойством: они имеют наименьшее отклонение от нуля на отрезке [-1,1] среди всех полиномов степени п. Так как (х-хо)(х-х1)...(х-Xn) представляет собой нормированный полином степени N+1, то минимальное отклонение этой велечины от нуля достигается тогда, когда
П(Х_Х") = Т^(Х)-п=0
1.2 Приближение функций и представление данных
243
Следовательно, узлы xn, n=0,...,N, должны совпадать с нулями полинома Т n+i(x), то есть xn=x N+i,n+i- Этот метод выбора узлов интерполяционного полинома можно применять и в случае произвольного конечного интервала [а,Ь], используя замену переменных
xn=^[(b-a)x^„+1+(a + b)], xn e[a,b]
(7.22)
Пример 7.10 (приближение функции полиномом Лагранжа) Рассмотрим специальную функцию
Si(x)=	дляхе[0,10].
О t
Вычисление значений этой функции требует значительных вычислительных затрат. Для того чтобы уменьшить эти затраты, можно построить интерполяционный полином, аппроксимирующий данную функцию. Зададим, например, семь узлов интерполирования, определяемых по формуле (7.22) (N=6, а=0, Ь=10):
х0 « 0.096074 5ц « 0.842652 х2 «2.222149 х3 « 4.024548 х4 « 5.975452 х5 « 7.777851 х6 «9.157348
Теперь мы можем построить интерполяционный ^полином Лагранжа (7.2), принимающий в этих точках значения yn=Si( хп). На рисунке 7.10 показаны графики полученного интерполяционного полинома и функции Si(x). Легко видеть, что этот полином даёт хорошее приближение функции Si(x) на отрезке хе[0,9].
244
Гл. 7 Интерполяция и приближение функций
Рисунок 7.10. Аппроксимация функции Si(x) интерполяционным полиномом Лагранжа с оптимальными узлами интерполяции; — - Si(x); • - интерполяционный полином.
ПРИЛОЖЕНИЕ А
Узлы и веса некоторых квадратурных формул Г аусса-Кристоффеля
Это приложение содержит узлы и веса квадратурных формул Гаусса-Кристоффеля (5.14) для интегралов вида (5.13) с весовыми функциями приведёнными в (5.17).7
1)р(х) = 1 , с = -1 , d = 1
Соответствующие ортогональные полиномы:
полиномы Лежандра Рм(х), Рм(1) = 1
Таблица А1.
м	УЗЛЫ 7 т = 1,...,М	Веса w т ’ т = 1	М	С(М)
2	-0.577350 0.577350	1.000000 1.000000	7.4е-03
3	-0.774597 0.000000 0.774597	0.555556 0.888889 0.555556	6.3е-05
4	-0.861136 -0.339981 0.339981 0.861136	0.347855 0.652145 0.652145 0.347855	2.9е-07
5	-0.906180 -0.538469 0.000000 0.538469 0.906180	0.236927 0.478629 0.568889 0.478629 0.236927	8.1е-10
246
Приложение А
2)	р(х) = хк, С = 0 , d = 1
Соответствующие ортогональные полиномы: qM(x) = Vk + 2M + 1 Р^°>(1-2х), где Рм ’0)(х) - полиномы Якоби.
Таблица А2.
к=1
м	УЗЛЫ 7 т = 1,...,М	Веса w ГЛ ’ т = 1,...,М	С(М)
1	0.666667	0.500000	1,4е-02
2	0.355051 0.844949	0.181959 0.318041	6.9е-05
3	0.212334 0.590533 0.911412	0.069827 0.229241 0.200932	1,4е-07
4	0.139760 0.416410 0.723157 0.942896	0.031181 0.129848 0.203465 0.135507	1.6е-10
5	0.098535 0.304536 0.562025 0.801987 0.960190	0.015748 0.073909 0.146387 0.167175 0.096782	1.1е-13
Узлы и веса формул Гаусса-Кристоффеля
247
Таблица АЗ.
к=2
м	Узлы у т = 1,...,М	Веса w ГП ’ т = 1,...,М	С(М)
1	0.750000	0.333333	6.3е-03
2	0.455848 0.877485	0.101786 0.232547	2.6е-05
3	0.294998 0.652996 0.927006	0.029951 0.146246 0.157136	4.9е-08
4	0.204149 0.482953 0.761399 0.951499	0.010352 0.068634 0.143459 0.110888	5.1е-11
5	0.148946 0.365667 0.610114 0.826520 0.965421	0.004114 0.032056 0.089200 0.126199 0.081765	3.4е-14
248
Приложение А
Таблица А4.
м	Узлы z m ’	Веса w m ’ m = 1,...,M	G(M)
1	0.800000	0.250000	3.3e-03
2	0.529858 0.898713	0.066905 0.183095	1 2e-05
3	0.363265 0.698811 0.937924	0.016479 0.104600 0.128921	2.0e-08
4	0.261478 0.535846 0.790283 0.957847	0.004658 0.042542 0.109004 0.093796	1.9e-11
5	0.196212 0.417100 0.648570 0.845605 0.969436	0.001521 0.016957 0.060445 0.100317 0.070761	1.2e-14
Узлы и веса формул Гаусса-Кристоффеля
249
Таблица А5.
к=4
м	Узлы z т = 1	М	Веса w т * т = 1,...,М	С(М)
1	0.833333	0.200000	2.0е-03
2	0.586337 0.913663	0.049082 0.150918	5.9е-06
3	0.420113 0.733889 0.945998	0.010469 0.080277 0.109254	8.8е-09
4	0.312135 0.578916 0.812892 0.962724	0.002516 0.029169 0.087068 0.081247	7.8е-12
5	0.239792 0.460937 0.680059 0.860886 0.972614	0.000697 0.010211 0.044024 0.082713 0.062355	4.6е-15
250
Приложение А
Таблица А6.
к=5
м	Узлы 7 m » m = 1,...,M	Веса w ГП ’ т = 1,...,М	С(М)
1	0.857143	0.166667	1 .Зе-ОЗ
2	0.630792 0.924764	0.038338 0.128329	3.2е-06
3	0.467983 0.761624 0.952211	0.007297 0.064597 0.094773	4.3е-09
4	0.356894 0.614669' 0.831079 0.966589	0.001534 0.021428 0.072056 0.071647	3.5е-12
5	0.279693 0.498710 0.706334 0.873403 0.975194	0.000370 0.006730 0.033768 0.070071 0.055728	4.6е-15
Узлы и веса формул Гаусса-Кристоффеля
251
3)	р(х) = V1-X , с = 0, d = 1
Соответствующие ортогональные полиномы:
Таблица А7.
м	Узлы 7 » т = 1,...,М	Веса w ГЛ ’ т = 1	М	С(М)
1	0.400001	0.666664	2.3е-02
2	0.710051 0.178839	0.277555 0.389108	1.2е-04
3	0.835289 0.450131 0.099195	0.125782 0.307601 0.233279	2.6е-07
4	0.894859 0.623776 0.301052 0.062666	0.065680 0.196095 0.252527 0.152361	2.9е-10
5	0.927347 0.730539 0.466878 0.213121 0.043069	0.038186 0.125672 0.198630 0.197632 0.106540	2.0е-13
252
Приложение А
4)	р(х) = -7===, С = 0, d = 1 д/1-Х
Соответствующие ортогональные полиномы:
p2m(V^).p2M(1) = i
Таблица А8.
м'	Узлы z m ’ m = 1	М	Веса w ГП ’ т = 1,...,М	С(М)
1	0.666667	2.000000	8.9е-02
2	0.884412 0.223599	1.304290 0.695708	4.8е-04
3	0.943061 0.562802 0.130501	0.935828 0.721524 0.342648	1.0е-06
4	0.966352 0.723816 0.355323 0,077843	0.725368 0.627414 0.444762 0.202458	1.1е-09
5	0.977837 0.812169 0.538402 0.251666 0.051505	0.591048 0.538534 0.438172 0.298902 0.133342	8.1е-13
Узлы и веса формул Гаусса-Кристоффеля
253
5)	p(x) = -TJ==, с = —1, d = 1
Vl-x
Соответствующие ортогональные полиномы: полиномы Чебышева первого рода
Тм(х), Тм (1) =
М х / ’ М X /	2^-1
Узлы:
( л(2т - 1Й
= cos —------
I 2М J
,т = 1,...,М
Веса:
Wm = £,ГП = 1,...,М т
м	С(М)
1	7.9е-01
2	1.6е-02
3	1,4е-04
4	6.1е-07
5	1.7е-09
254
Приложение А
6) р(х) = Vl-X2 , С = -1, d = 1
Соответствующие ортогональные, полиномы: полиномы Чебышева второго рода
тч х _ sin((M + 1)arccos(x))
’ М \	—	Г~7	~ “V
sm(arccos(x)j
Узлы:
Гл(т + 1)\	.	..
< М + 1 )
Веса:
м	С(М)
1	2.0е-01
2	4.1е-03
3	3.4е-05
4	1,5е-07
5	4.2е-10
Узлы и веса формул Гаусса-Кристоффеля
255
7)	Р(х) =	, с = 0, d = 1
V1-X
Соответствующие ортогональные полиномы:
r~ ТлыС'/х)"
Vx
Узлы:
zm = cos2
тг(2т -1)

Веса:
2л и a »
М
w
-ГЛ
M	C(M)
1	4.9e-02
2	2.6e-04
3	5.3e-07
4	5.9e-10
5	4.1e-13
256
Приложение А
8)	р(х) = -1п(х), с = 0 , d = 1
Соответствующие ортогональные полиномы: полиномы ортогональные с весовой функцией -ln(x).
Таблица А9.
м	УЗЛЫ 7 т = 1,...,М	Веса w т ’ т = 1,...,М	С(М)
2	0.112009 0.602277	0.718539 0.281461	1.2е-04
3	0.063891 0.368997 0.766880	0.513405 0.391980 0.094615	2.4е-07
4	0.041448 0.245275 0.556165 0.848982	0.383464 0.386875 0.190435 0.039225	2.5е-10
Узлы и веса формул Гаусса-Кристоффеля
257
9)	р(х) = ехр( -х), с = 0 , d = оо
Соответствующие ортогональные полиномы: полиномы Лагерра Lm(x).
Таблица А10.
м	УЗЛЫ 7 m ’ m = 1,...,M	Веса w m = i,...,M	wmexp(zm), m = 1,...,M	С(М)
2	0.585786 3.414214	8.535533е-01 1,464466е-01	1.533326 4.450957	1.6е-01
3	0.415775 2.294280 6.289945	7.110930е-01 2.785177е-01 1.038926е-02	1.077693 2.762143 5.601095	5.0е-02
4	0.322548 1.745761 4.536620 9.395071	6 031541 е-01 3.574187е-01 3.888790е-02 5.392947е-04	0.832739 2.048102 3.631146 6.487145	1.4е-02
5	0.263560 1.413403 3.596426 7.085810 12.640801	5.217556е-01 3.986668е.-01 7.594245е-02 3.611759е-03 2.336997е-05	0.679094 1.638488 2.769443 4.315657 7.219186	4.0е-03
6	0.222847 1.188932 2.992736 5.775144 9.837467 15.982874	4.589647е-01 4.170008е-01 1.133734е-01 1.039920е-02 2.610172е-04 8.985479е-07	0.573536 1.369253 2.260685 - 3.350525 4.886827 7.849016	1.1е-03
258
Приложение А
Таблица А10 (продолжение).
м	Узлы 7 ^т ’ т = 1,...,М	Веса w т ’ т = 1	М	wmexp(zm), т = 1,...,М	С(М)
7	0.193044 1.026665 2.567877 4.900353 8.182153 12.734180 19.395728	4.093190е-01 4.21831 Зе-01 1.471263е-01 2.063351 е-02 1.074010е-03 1.586546е-05 3.170315е-08	0.496478 1.177643 1.918250 2.771849 3.841249 5.380678 8.405432	2.9е-04
8	0.170280 0.903702 2.251087 4.266700 7.045905 10.-758516 15.740679 22.863132	3.691886е-01 4.187868е-01 1.757950е-01 3.334349е-02 2.794536е-03 9.076509е-05 8.485747е-07 1.048001е-09	0.437723 1.033869 1.669710 2.376925 3.208541 4.268576 5.818083 8.906226	7.7е-05
9	0.152322 0.807220 2.005135 3.783474 6.204957 9.372985 13.466237 18.833598 26.374072	3.361264е-01 4.112140е-01 1.992875е-01 4746056е-02 5.599627е-03 3.052498е-04 6.592123е-06 4.110769е-08 3.290874е-11	0.391431 0.921805 1,480128 2.086771 2.772921 3.591626 4.648766 6.212275 9.363218	2.1е-05
10	0.137793 0.729455 1.808343 3.401433 5.552496 8.330153 11.843786 16.279258 21.996586 29.920697	3.084411е-01 4.011110е-01 2.180683е-01 6.208746е-02 9.501517е-03 7.530084е-04 2.825923е-05 4.249314е-07 1.839565е-09 9.911827е-13	0.354010 0.831902 1.330289 1.863064 2.450256 3.122764 3.934153 4.992415 6.572202 9.784696	5.4е-06
Узлы и веса формул Гаусса-Кристоффеля
259
10)	р(х) = ехр( -х2), с = -оо , d = оо
Соответствующие ортогональные полиномы: полиномы Эрмита Нм(х).
Таблица All.
м	Узлы 7 т = 1	М	Веса w т ’ т = 1,...,М	wfflexp(z*) т = 1 М	С(М)
2 - . .	-0.707107 0.707107	8.862269е-01 8.862269е-01	1.461141 1.461141	3.7е-02
3	-1.224745 о.Оооооо 1.224745	2.954090е-01 1.181636е+00 2.954090е-01	1.323931 1.181636 1.323931	1.8е-03
4	-1.650680 -0.524648 0.524648 1.650680	8.131284е-02 8.049141е-01 8.049141 е-01 8.131284е-02	1.240226 1.059964 1.059964 1.240226	6.6е-05
5	-2.020183 -0.958572 0.000000 0.958572 2.020183	1.995324е-02 3.936193е-01 9.453087е-01 3.936193е-01 1,995324е-02	1.181489 0.986581 0.945309 0.986581 1.181489	1,8е-06
6	-2.350605 -1.335849 -0.436077 0.436077 1.335849 2.350605	4.53001 Ое-ОЗ 1,570673е-01 7.246296е-01 7.246296е-01 1,570673е-01 4.53001 Ое-ОЗ	1.136908 0.935581 0.876401 0.876401 0.935581 1.136908	4.2е-08
ПРИЛОЖЕНИЕ В
Преобразование некоторых регулярных областей интегрирования в прямоугольные области
l.Kpyr S:x2 + y2 <R2
2 л R
j]f(x,y)dxdy = j jrf(rcos<p,rsin<p)drdcp s	0 0
2	2
2. Эллипс S	1
a2 b2
2я 1
[jf(x,y)dxdy = ab f frf(arcos<p,brsin<p)drd<p s	oo
262
Приложение В
3. Сфера S :х2 + у2 +z2 < R2
jjjf(x,y,z)dxdydz =
S
я 2я R
f jjr2sine-f
ООО
У sin 9 • cos ф, г sin 9-sin ф, чгcos9
х2 у2 z2
4. Эллипсоид S:— + у— + — < 1 а Ь2 с2
d^d9
JJjf(x,y,z)dxdydz = s
я 2n 1
abcJJJr2 sinG'f Ьг8Ю0-8Пф, ИгЬфЬ9 ООО
'аг sin 9-cos ф,
crcos9
5. Круговой цилиндр S :х2 + у2 < R2 , 0 < z < d d 2л R
JJjf(x, у, z) dx dy dz =
S	ООО
x2 у2
6. Эллиптический цилиндр S	< 1,0 < z < d
a b
j j jrf(r cos ф, r sin q>, z) dr dф dz
jjjf(x,y,z)dxdydz = s
d 2n 1
ab Г [ frf(arcosф,Ьгз!пф,г)ЬгЬфЬг
ООО
ПРИЛОЖЕНИЕ С
Условия устойчивости для некоторых разностных схем Рунге-Кутта, Адамса и предиктор-корректор
Это приложение содержит информацию об областях устойчивости различных разностных схем для модельного уравнения
— = -уи , у > 0, х > О dx
и(0) = а
Условие устойчивости имеет вид yh<P, и следующая таблица представляет значения параметра р. Знак оо означает безусловную устойчивость.
Порядок аппроксимации, р	1	2	3	4
р-стадийная явная схема Рунге-Кутта	2	2	«2.512	«2.785
Явная схема Адамса	2	1	«0.54	«0.3
Неявная схема Адамса	оо	00	«6	~3
Схема предиктор-корректор		2	«1.72	«1.41
ПРИЛОЖЕНИЕ D
Краткий обзор программного обеспечения
В этом приложении приводится некоторая информация о библиотеках программ, широко используемых на практике. Здесь приводится только краткое описание вычислительных процедур, имеющих отношение к темам рассмотренным в этой книге. Более подробную информацию можно найти в соответствующей документации.
Библиотека подпрограмм LAP АСК для задач линейной алгебры
LAP АСК (Linear Algebra PACKage) представляет собой библиотеку подпрограмм для решения наиболее часто встречающихся задач линейной алгебры. Имеются две версии этой библиотеки: на языках Fortran 77(90) и С. Библиотека LAP АСК не является коммерческим продуктом и может быть загружена из архива Netlib (www. netlib. org/ lapack). Она включает в себя подпрограммы для
•	решения систем линейных уравнений
•	нахождения решения переопределённых систем линейных уравнений в смысле наименьших квадратов
•	решения задач на собственное значение
Подпрограммы в библиотеке LAP АСК подразделяются на три типа: Подпрограммы верхнего уровня
•	решают некоторую задачу, как, например, нахождение решения системы линейных уравнений или собственных значений матрицы
Подпрограммы верхнего уровня с дополнительными возможностями
•	обеспечивают больше возможностей/информации по сравнению с подпрограммами верхнего уровняю Например, они позволяют
266
Приложение D
оценить точность полученного решения или сбалансировать матрицу для повышения точности
Подпрограммы нижнего уровня
• вызываются подпрограммами верхнего уровня и выполняют определённые вычислительные процедуры, как, например, LU разложение или приведение вещественной симметричной матрицы к трёхдиагональной матрице
Ниже приведены основные имена подпрограмм. Реальные имена образуются следующим образом: (приставка)(основное имя), где приставка принимает одно из следующих значений:
s - вещественные значения, одинарная точность
d - вещественные значения, двойная точность
с -комплексные значения, одинарная точность
z - комплексные значения, двойнаяная точность
Подпрограммы верхнего уровня для решения систем линейных уравнений
gesv - решение систем линейных уравнений с матрицей общего вида gbsv - решение систем линейных уравнений с ленточной матрицей общего вида
gtsv - решение систем линейных .уравнений с трёхдиагональной матрицей общего вида
posv - решение систем линейных уравнений с симметричной/Эрмитовой положительно определённой матрицей
ppsv - решение систем линейных уравнений с симметричной/Эрмитовой положительно определённой матрицей (хранение в упакованном виде)
pbsv - решение систем линейных уравнений с симметричной/Эрмитовой положительно определённой ленточной матрицей
ptsv - решение систем линейных уравнений с симметричной/Эрмитовой положительно определённой трёхдиагональной матрицей
sysv/hesv - решение систем линейных уравнений с симметричной/ Эрмитовой/ комплексной неопределённой матрицей
spsv/hpsv - решение систем линейных уравнений с симметричной/ Эрмитовой/ комплексной неопределённой матрицей (хранение в упакованном виде)
Краткий обзор программного обеспечения
267
Подпрограммы верхнего уровня с дополнительными возможностями для решения систем линейных уравнений
gesvx - решение систем линейных уравнений с матрицей общего вида. Обеспечиваются оценки числа обусловленности и ошибки полученного решения
gbsvx - решение систем линейных уравнений с ленточной матрицей общего вида. Обеспечиваются оценки числа обусловленности и ошибки полученного решения
gtsvx - решение систем линейных уравнений с трёхдиагональной матрицей общего вида. Обеспечиваются оценки числа обусловленности и ошибки полученного решения
posvx - решение систем линейных уравнений с симметричной/ Эрмитовой положительно определённой матрицей. Обеспечиваются оценки числа обусловленности и ошибки полученного решения
ppsvx - решение систем линейных уравнений с симметричной/ Эрмитовой' положительно определённой матрицей (хранение в упакованном виде). Обеспечиваются оценки числа обусловленности и ошибки полученного решения
pbsvx - решение систем линейных уравнений с симметричной/ Эрмитовой положительно определённой ленточной матрицей. Обеспечиваются оценки числа обусловленности и ошибки полученного решения
ptsvx - решение систем линейных уравнений с симметричной/ Эрмитовой положительно определённой трёхдиагональной матрицей. Обеспечиваются оценки числа обусловленности и ошибки полученного решения
sysvx/hesvx - решение систем линейных уравнений с симметричной/ Эрмитовой/комплексной неопределённой матрицей. Обеспечиваются оценки числа обусловленности и ошибки полученного решения spsvx/hpsvx - решение систем линейных уравнений с симметричной/ Эрмитовой/комплексной неопределённой матрицей (хранение в упакованном виде). Обеспечиваются оценки числа обусловленности и ошибки полученного решения
268
Приложение D
Подпрограммы верхнего уровня для стандартной задачи на собственное значение
syev/heev - вычисление всех собственных значений и (если требуется) собственных векторов вещественной симметричной/Эрмитовой матрицы
spev/hpev - вычисление всех собственных значений и (если требуется) собственных векторов вещественной симметричной/Эрмитовой матрицы (хранение в упакованном виде)
sbev/hbev - вычисление всех собственных значений и (если требуется) собственных векторов вещественной симметричной/Эрмитовой ленточной матрицы
stev - вычисление всех собственных значений и (если требуется) собственных векторов вещественной симметричной трёхдиагональной матрицы
gees - вычисление собственных значений, формы Шура и (если требуется) матрицы векторов Шура несимметричной матрицы
geev - вычисление собственных значений и (если требуется) левых и/или правых собственных векторов несимметричной матрицы syevd/heevd - вычисление всех собственных значений и (если требуется) собственных векторов вещественной симметричной/Эрмитовой матрицы. Для вычисления собственных векторов используется алгоритм «разделяй и властвуй»
spevd/bpevd - вычисление всех собственных значений и (если требуется) собственных векторов вещественной симметричной/ Эрмитовой матрицы (хранение в упакованном виде). Для вычисления собственных векторов используется алгоритм «разделяй и властвуй», sbevd/hbevd - вычисление всех собственных значений и (если требуется) собственных векторов вещественной симметричной/ Эрмитовой ленточной матрицы. Для вычисления собственных векторов используется алгоритм «разделяй и властвуй».
stevd - вычисление всех собственных значений и (если требуется) собственных векторов вещественной симметричной трёхдиагональной матрицы. Для вычисления собственных векторов используется алгоритм «разделяй и властвуй»
Краткий обзор программного обеспечения
269
Подпрограммы верхнего уровня с дополнительными возможностями для стандартной задачи на собственное значение
syevx/heevx - вычисление всех собственных значений и (если требуется) собственных векторов вещественной симметричной/Эрмитовой матрицы. Требуемые собственные значения и вектора могут быть выбраны по заданному итервалу величин или интервалу номеров spevx/hpevx - вычисление всех собственных значений и (если требуется) собственных векторов вещественной симметричной/ Эрмитовой матрицы (хранение в упакованном виде). Требуемые собственные значения и вектора могут быть выбраны по заданному итервалу величин или интервалу номеров
sbevx/hbevx - вычисление всех собственных значений и (если требуется) собственных векторов вещественной симметричной/ Эрмитовой ленточной матрицы. Требуемые собственные значения и вектора могут быть выбраны по заданному итервалу величин или интервалу номеров
stevx вычисление всех собственных значений и (если требуется) собственных векторов вещественной симметричной трёхдиагональной матрицы. Требуемые собственные значения и вектора могут быть выбраны по заданному итервалу величин или интервалу номеров geesx - вычисление собственных значений, формы Шура и (если требуется) матрицы векторов Шура несимметричной матрицы. Дополнительно, можно * расположить собственные значения на диагонали формы Шура таким образом, что требуемые собственные значения расположены в левом верхнем углу
geevx - вычисление собственных значений и (если требуется) левых и/или правых собственных векторов несимметричной матрицы. Дополнительно, можно осуществить балансировку матрицы для улучшения обусловленности и вычислить обратное число обусловленности для собственных значений и векторов
Подпрограммы верхнего уровня для обобщённой задачи на собственное значение
sygv/hegv - вычисление всех собственных значений и (если требуется) собственных векторов для обощённой проблемы на собственное
270
Приложение D
значение вида Ах=^Мх, где А и М вещественные симметричные/ Эрмитовые матрицы и матрица М также положительно определённая spgv/hpgv - вычисление всех собственных значений и (если требуется) собственных векторов для обощённой проблемы на собственное значение вида Ах=?Х,Мх, где А и М вещественные симметричные/ Эрмитовые матрицы и матрица М также положительно определённая (хранение в упакованном виде)
sbgv/hbgv - вычисление всех собственных значений и (если требуется) собственных векторов для обощённой проблемы на собственное значение вида Ах=ХМх, где А и М ленточные вещественные симметричные/Эрмитовые матрицы и матрица М также положительно определённая
Краткий обзор программного обеспечения
271
Библиотека подпрограмм IMSL®
Библиотека IMSL (International Mathematics and Statistics Libraries) широко используется на практике и включает в себя библиотеки численных алгоритмов для языков С, Fortran 90, Fortran 77 и Java.
Библиотека IMSL С (CNL)
Библиотека CNL написана на языке С на основе подпрограмм из библиотеки IMSL Fortran. Весия 4.0 этой библиотеки содержит более 300 математических и статистических алгоритмов.
Библиотека IMSL Fortran 90 MP (F90 MP)
Эта библиотека основана на алгоритмах оптимизированных для использования в многопроцессорных системах. Библиотека F90 МР включает в себя:
•	функцианальные модули для объектно-ориентированного программирования
•	подпрограммы, написанные на языке Fortran 90 для более эффективного выполнения программ
•	библиотеку IMSL Fortran 77
Библиотека IMSL for Java (JNL)
Библиотека JNL включает в себя функции отсутствующие в языке Java: класс численного типа, комплексный класс и три класса численных фикций (класс специальных функций, класс линейной алгебры и класс статистики).
Библиотека IMSL Fortran 77 (FNL)
Библиотека FNL состоит из более чем 900 подпрограмм написанных на языке Fortran 77, предназначенных для решения широкого класса задач прикладной математики и статистического анализа. Все ведущие производители компиляторов языка Fortran включают эту библиотеку в состав своих программных продуктов. Далее приводится краткое
272
Приложение D
описание подпрограмм библиотеки FNL, имеющих отношение к темам рассмотренным в этой книге.
Решение систем линейных уравнений
Isacb - решение систем линейных уравнений с комплексной ленточной матрицей матрицей (применяется итерационное уточнение решения) Isacg - решение систем линейных уравнений с комплексной матрицей общего вида (применяется итерационное уточнение решения)
Isadh - решение систем линейных уравнений с Эримитовой положительно определённой матрицей (применяется итерационное уточнение решения)
Isads - решение систем линейных уравнений с вещественной симметричной положительно определённой матрицей (применяется итерационное уточнение решения)
Isahf - решение систем линейных уравнений с Эримитовой матрицей (применяется итерационное уточнение решения)
Isaqh - решение систем линейных уравнений с Эримитовой ленточной положительно определённой матрицей
Isaqs - решение систем линейных уравнений с ленточной вещественной симметричной положительно определённой матрицей
Isarb - решение систем линейных уравнений с ленточной вещественной матрицей (применяется итерационное уточнение решения)
Isarg - решение систем линейных уравнений с вещественной матрицей общего вида (применяется итерационное уточнение решения)
Isasf - решение систем линейных уравнений с вещественной симметричной матрицей (применяется итерационное уточнение решения) Islcb - решение систем линейных уравнений с комплексной ленточной матрицей
Islcg - решение систем линейных уравнений с комплексной матрицей общего вида
Iskq - вычисление LDU разложения комплексной трёхдиагональной матрицы
Isler - вычисление LDU разложения вещественной трёхдиагональной матрицы
Islet - решение систем линейных уравнений с комплексной треугольной матрицей
Isldh - решение систем линейных уравнений с Эримитовой положительно определённой матрицей
Краткий обзор программного обеспечения
273
Islds - решение систем линейных уравнений с вещественной симметричной положительно определённой матрицей
Islhf - решение систем линейных уравнений с Эримитовой матрицей
Islpb - вычисление разложения Холеского вещественной симметричной положительно определённой матрицы
Islqb - вычисление разложения Холеского Эрмитовой положительно определённой матрицы
Islqh - решение систем линейных уравнений с Эримитовой ленточной положительно определённой матрицей
Islqs - решение систем линейных уравнений с вещественной симметричной ленточной положительно определённой матрицей
Isirb - решение систем линейных уравнений с вещественной ленточной матрицей
Islrg - решение систем линейных уравнений с вещественной матрицей общего вида
Islrt - решение систем линейных уравнений с вещественной треугольной матрицей
Islsf - решение систем линейных уравнений с вещественной симметричной матрицей
Isltc - решение систем линейных уравнений с комплексной Тёплицевой матрицей
Islto - решение систем линейных уравнений с вещественной Тёплицевой матрицей
Isltq - решение систем линейных уравнений с комплексной трёхдиагональной матрицей
Isltr - решение систем линейных уравнений с вещественной трёхдиагональной матрицей
Islxd - решение систем линейных уравнений с разреженной вещественной симметричной положительно определённой матрицей
Islxg - решение систем линейных уравнений с разреженной вещественной матрицей методом исключения Гаусса
Islzd - решение систем линейных уравнений с разреженной Эрмитовой положительно определённой матрицей методом исключения Гаусса Islzg - решение систем линейных уравнений с разреженной комплексной матрицей методом исключения Гаусса
274
Приложение D
Задача на собственное значение
evahf - вычисление ниболыпего или наименьшего по модулю собственного значения Эрмитовой матрицы
evasb - вычисление ниболыпего или наименьшего по модулю собственного значения вещественной ленточной симметричной матрицы
evasf - вычисление ниболыпего или наименьшего по модулю собственного значения вещественной симметричной матрицы
evbhf - вычисление собственных значений Эрмитовой матрицы, лежащих в заданном интервале
evbsb - вычисление собственных значений вещественной ленточной симметричной матрицы, лежащих в заданном интервале
evbsf - вычисление собственных значений вещественной симметричной матрицы, лежащих в заданном интервале
evccg - вычисление всех собственных значений и векторов комплексной
матрицы
evcch - вычисление всех собственных значений и векторов комплексной
верхней матрицы Хессенберга
evchf - вычисление всех собственных значений и векторов комплексной
Эрмитовой матрицы
evcrg - вычисление всех собственных значений и векторов вещественной матрицы
evcrh	-	вычисление	всех	собственных	значений	и	векторов
вещественной верхней матрицы Хессенберга
evcsb	-	вычисление	всех	собственных	значений	и	векторов
вещественной ленточной симметричной матрицы
evcsf - вычисление всех собственных значений и векторов вещественной симметричной матрицы
evehf - вычисление ниболыпего илй наименьшего по модулю собственного значения и соответствующих собственных векторов Эрмитовой
матрицы
evesb - вычисление ниболыпего или наименьшего по модулю собственного значения и соответствующих собственных векторов вещественной ленточной симметричной матрицы
evesf - вычисление ниболыпего или наименьшего по модулю собственного значения и соответствующих собственных векторов вещественной симметричной матрицы
Краткий обзор программного обеспечения
275
evfhf - вычисление собственных значений Эрмитовой матрицы, лежащих в заданном интервале и соответствующих собственных векторов
evfsb - вычисление собственных значений вещественной ленточной симметричной матрицы, лежащих в заданном интервале и соответствующих собственных векторов
evfsf - вычисление собственных значений вещественной симметричной матрицы, лежащих в заданном интервале и соответствующих собственных векторов
evlcg - вычисление всех собственных значений комплексной матрицы evkh - вычисление всех собственных значений комплексной верхней матрицы Хессенберга
evlhf - вычисление всех собственных значений комплексной Эрмитовой матрицы
evlrg - вычисление всех собственных значений вещественной матрицы evlrh - вычисление всех собственных значений вещественной верхней матрицы Хессенберга
evlsb - вычйсление всех собственных значений вещественной ленточной симметричной матрицы
evlsf - вычисление всех собственных значений вещественной симметричной матрицы
gvccg - вычисление всех собственных значений и собственных векторов для обощённой проблемы на собственное значение вида Ах=Шх, где А и М комплексные матрицы
gvcrg - вычисление всех собственных значений и собственных векторов для обощённой проблемы на собственное значение вида Ах=ХМх, где А и М вещественные матрицы
gvcsp - вычисление всех собственных значений и собственных векторов для обощённой проблемы на собственное значение вида Ах=%Мх, где А и М вещественные симметричные матрицы и матрица АЛ также положительно определённая
gvlcg - вычисление всех собственных значений для обощённой проблемы на собственное значение вида Ах=ХМх, где А и М комплексные матрицы
gvlrg - вычисление всех собственных значений для обощённой проблемы на собственное значение вида Ах=ХМх, где А и М вещественные матрицы
gvlsp* - вычисление всех собственных значений для обощённой проблемы на собственное значение вида Ах=ХМх, где А и М
276
Приложение D
вещественные симметричные матрицы и матрица М также положи-? тельно определённая
Решение нелинейных уравнений
zanly - вычисление нуля комплексной аналитической функции
zbren - вычисление нуля функции, которая меняет знак на заданном интервале
zplrc - вычисление нулей полинома с вещественными коэффициентами (метод Лагерра)
zpocc - вычисление нулей полинома с комплексными коэффициентами zporc - вычисление нулей полинома с вещественными коэффициентами (метод Дженкинса-Трауба)
zreal - вычисление нуля вещественной функции
neqbf - решение систем нелинейных уравнений (метод Бройдена, начальная матрица Якоби задаётся приближённо)
neqbj - решение систем нелинейных уравнений (метод Бройдена, начальная матрица Якоби задаётся точно)
neqnf - решение систем нелинейных уравнений с использованием алгоритма Пауэлла (модификация метода Ньютона), матрица Якоби задаётся приближённо
neqnj - решение систем нелинейных уравнений с использованием алгоритма Пауэлла (модификация метода Ньютона), матрица Якоби задаётся точно
Численное интегрирование
qand - вычисление интеграла от N-мерной функции по гиперпараллелепипеду (N < 20)
twodq - вычисление двумерного интеграла
qdag - вычисление интеграла методом Гаусса-Кронрода
qdagi - вычисление интеграла по бесконечному или полубесконечному интервалу
qdagp - вычисление интеграла от функции, имеющей особенности в заданных точках отрезка интегрирования
qdags - вычисление интеграла от функции, имеющей особенности на концах отрезка интегрирования
qdawc - вычисление главного значения интеграла в смысле Коши от функции f(x)/(x - с)
Краткий обзор программного обеспечения
277
qdawf - вычисление интеграла Фурье
qdawo - вычисление интеграла от функции содержащей sin(x) или cos(x)
qdaws - вычисление интеграла от функции имеющей особенность вида (х-а)а1п(х-а) или (b-x)^ln(b-x), где а и b пределы интегрирования
qdng - вычисление интеграла от гладкой функции
gorcf - вычисление узлов и весов формул Гаусса, Гаусса-Радау или Гаусса-Лобатто, когда соответствующие ортогональные полиномы заданы в форме трёхчленных рекурентных соотношений
gorul - вычисление узлов и весов формул Гаусса, Гаусса-Радау или Гаусса-Лобатто для некоторых классических весовых функций
Решение обыкновенных дифференциальных уравнений
ivpag - решение задачи Коши (неявные схемы Адамса или схемы BDF) ivprk - решение задачи Коши (схемы Рунге-Кутта пятого и шестого порядка)
ivmrk - решение задачи Коши (встроенные Рунге-Кутта пары различных порядков)
bvpfd - решение системы дифференциальных уравнений с граничными условиями в двух точках методом конечных разностей
bvpms - решение системы дифференциальных уравнений с граничными условиями в двух точках методом стрельбы
Интерполяция и аппроксимация функций
csakm - построение кубического сплайна Акима
csdec - построение кубического сплайна с заданными условиями на концах отрезка
csder - вычисление производных кубического сплайна в заданных точках
csher- Построение кубического сплайна Эрмита
csiez - построение кубического сплайна
csint - построение кубического сплайна, условия на концах отрезка определяются программой
csitg- вычисление интеграла от кубического сплайна
csper - построение кубического сплайна с периодическими условиями на концах отрезка
278
Приложение D
surf - построение двумерного итерполяционного полинома csval - вычисление значения кубического сплайна в заданной точке fnlsq - приближение набора данных заданной функцией (метод наименьших квадратов)
rcurv - приближение набора данных полиномом (метод наименьших квадратов)
rline - линейное приближение набора данных (метод наименьших квадратов)
Библиотеки подпрограмм Группы по численным алгоритмам (NAG®, The Numerical Algorithms Group)
Библиотека NAG fI90
Библиотека NAG fl90 состоит из более чем 200 основных подпрограмм, реализующих различные алгоритмы. Все подпрограммы написаны на языке Fortran 90/95, что даёт простой и эффективный инструмент для научных й инженерных расчётов.
Решение систем линейных уравнений
naggenlinsol - решение систем линейных уравнений с вещественной или комплексной матрицей общего вида
naggenlinfac - вычисление LU разложения вещественной или комплексной матрицы общего вида
naggen__lin_sol_fac - решение систем линейных уравнений с вещественной или комплексной матрицей общего вида, которая предварительно была разложена с использованием процедуры nag_gen_lin_fac	'
nag sym lin sol - решение систем линейных уравнеЙжт ё веществёнЖй симметричной или комплексной Эрмитовой матрицей
nagsymlinfac - вычисление разложения Холеского или Банча-Кауфмана (Bunch -Kaufman) вещественной симметричной или комплексной Эрмитовой матрицы
nag_symjin_soljac - решение систем линейных уравнений с вещественной симметричной или комплексной Эрмитовой матрицей,
Краткий обзор программного обеспечения
279
которая предварительно была разложена с использованием процедуры nag_sym__lin_fac
nag__trijin__sol - решение систем л инейных уравнений с вещественной или комплексной треугольной матрицей
nagtrilincond - оценка числа ообусловленности вещественной или комплексной треугольной матрицы
nagtrimatdet - вычисление определителя вещественной или комплексной треугольной матрицы
naggenjbndJinsol - решение систем линейных уравнений с вещественной или комплексной ленточной матрицей
nag gen bnd lin fac - вычисление LU разложения вещественной или комплексной ленточной матрицы
naggenbndlinsolfac - решение систем линейных уравнений с вещественной или комплексной ленточной матрицей, которая предварительно была разложена с использованием процедуры naggenbndlinfac
nag_sym bnd lin sol - решение систем линейных уравнений с вещественной симметричной или комплексной Эрмитовой положительно определённой ленточной матрицей
nag sym bnd lin fac - вычисление разложения Холеского вещественной симметричной или комплексной Эрмитовой положительно определённой ленточной матрицы
nag_sym_bnd_lin_sol_fac - решение систем линейных уравнений с вещественной симметричной или комплексной Эрмитовой положительно определённой ленточной матрицей, которая предварительно была разложена с использованием процедуры nag_sym_ bnd_lin_fac
Задача на собственное значение
nagsymeigall - вычисление всех собственных значений и (если требуется) собственных векторов вещественной симметричной или комплексной Эрмитовой матрицы
na<>sym eig sei - вычисление отдельных собственных значений и (если трей^ется) соответствующих собственных векторов вещественной симметричной или комплексной Эрмитовой матрицы
nag sym tridiag reduc - преобразование вещественной симметричной или комплексной Эрмитовой матрицы в вещественную симметричную трёхдиагональную матрицу
280
Приложение D
nagsymtridiagorth - построение матрицы преобразования, заданного процедурой nag_sym_tridiag_reduc
nag_sym_tridiag_eig_all - вычисление всех собственных значений и (если требуется) собственных векторов вещественной симметричной трёхдиагональной матрицы
nagsymtridiageigval - вычисление	отдельных собственных
значений вещественной симметричной трёхдиагональной матрицы
nag sym tridiag eig vec - вычисление отдельных собственных векторов вещественной симметричной трёхдиагональной матрицы
nag nsym eig all - вычисление всех собственных значений и (если требуется) собственных векторов вещественной или комплексной матрицы общего вида
nag schur fac - вычисление разложения Шура вещественной или комплексной матрицы общего вида
nag_sym_gen_eig_a^ - вычисление всех собственных значений и (если требуется) собственных векторов для обощённой проблемы на собственное значение вида Ах=ХМх, где А и М вещественные симметричные или комплексные Эрмитовые матрицы и матрица М также положительно определённая
nag sym gen eig sei - вычисление отдельных собственных значений и (если требуется) соответствующих собственных векторов для обощённой проблемы на собственное значение вида Ах=^Мх, где А и М вещественные симметричные или комплексные Эрмитовые матрицы и матрица М также положительно определённая
nag nsym gen eig all - вычисление всех собственных значений и (если требуется) собственных векторов для обощённой проблемы на собственное значение вида Ах=ХМх, где А и М вещественные или комплексные несимметричные матрицы
naggenschurfac - вычисление обощённого разложения Шура вещественной или комплексной матрицы
Решение нелинейных уравнений
nag_polynom_roots - вычисление нулей полинома nag nlin eqn sol - решение нелинейного уравнения nagnlinsyssol - решение систем нелинейных уравнений
Краткий обзор программного обеспечения	281
Численное интегрирование
nagquadldgen - вычисление интеграла от функции, имеющей особенности в заданных точках отрезка интегрирования
nagquadldwttrig - вычисление интеграла от функции содержащей sin(x) или cos(x)
nagquadldwtendsing - вычисление интеграла от функции имеющей особенность вида (х-а)а1п(х-а) или (b-x)pln(b-x), где а и b пределы интегрирования
nagquadldwthilb - вычисление главного значения интеграла в смысле Коши от функции f(x)/(x - с)
nag quad ld data - вычисление интеграла от функции, определённой набором значений, метод Гилла-Миллера (Gill-Miller)
nagquadldinfgen - вычисление интеграла по бесконечному или полубесконечному интервалу
nagquadldinfwttrig - вычисление интеграла по или полубесконечному интервалу от функции содержащей sin(x) или cos(x) nagquadmdrectqand - вычисление интеграла от N-мерной функции по гиперпараллелепипеду
nag_quad_2d - twodq - вычисление двумерного интеграла
nagquadgswtabsc - gorul - вычисление узлов и весов формул Гаусса-Кристоффеля для некоторых весовых функций
Решение обыкновенных дифференциальных уравнений (методы Рунге-Кутта)
nag rk interval - решение задачи Коши на заданном интервале nag_rk_global_err - оценка глобальной ошибки приближённого решения nag_rk_step - вычисление одного шага разностной схемы nag rk interp - интерполяция приближённого решения
Интерполяция и аппроксимация функций
nag_pch_monot_interp - построение кусочно-кубического интерполяционного полинома Эрмита
nag pch eval - вычисление значения и (если требуется) производной кусочно-кубического интерполяционного полинома Эрмита
282
Приложение D
nagjpch_intg - вычисление интеграла от кусочно-кубического интерполяционного полинома Эрмита
nagsplineldautofit - построение кубической сплайн функции, аппроксимирующей произвольный одномерный набор данных
nag_spline_ldlsq_fit - построение кубической сплайн функции, аппроксимирующей произвольный одномерный набор данных методом наименьших квадратов
nagsplineldinterp - построение интерполяционной кубической сплайн функции для произвольного одномерного набора данных
nagsplineldeval - вычисление значения и (если требуется) первых трёх производных кубической сплайн функции
nagsplineldintg - вычисление интеграла от кубической сплайн функции
nag_spline_2d_auto_flt - построение бикубической сплайн функции , аппроксимирующей произвольный двумерный набор данных
nag_spline_2d_lsq_fit - построение бикубической сплайн функции, аппроксимирующей произвольный двумерный набор данных методом наименьший квадратов
nag_spline_2d_interp - построение интерполяционной бикубической сплайн функции для двумерного набора данных, определённого в узлах прямоугольной сетки на плоскости
nag_spline_2d_eval - вычисление значения интерполяционной бикубической сплайн функции
nag_spline_2d_intg - вычисление интеграла от интерполяционной бикубической сплайн функции
nag_scat_2d_interp - построение двумерной интерполяционной функции модифицированным методом Шепарда (Shepard)
nag_scat_2d_eval - вычисление значения и частных производных двумерной интерполяционной функции
nag scat 3d_interp - построение трёхмерной интерполяционной функции модифицированным методом Шепарда (Shepard) nag_scat_3d_eval - вычисление значения и частных производных трёхмерной интерполяционной функции
Библиотека NAG С (Mark 5)
Библиотека The NAG С содержит около 400 процедур, предназначенных для решения различных вычислительных задач. Краткое
Краткий обзор программного обеспечения
283
описание некоторых процедур приведено ниже. Вычислительные функции библиотеки NAG С имеют два имени: короткое, состоящее из шести знаков, и более длинное описательное, например, f02awc или nag_hermitian_eigenvalues. Все прцедуры этой библиотеки используют вычисления с двойной точностью.
Решение систем линейных уравнений
fOlbnc (nag_complex_cholesky) - вычисление UUH разложения комплексной Эрмитовой положительно определённой матрицы
fOlmcc (nag real cholesky skyline) - вычисление LDLJ разложения вещественной симметричной положительно определённой ленточной матрицы с переменной шириной ленты
ГОЗаес (nagrealcholesky) - вычисление разложения Холеского и определителя вещественной симметричной положительно определённой матрицы
f03afc (nag real lu) - вычисление LU разложения и определителя вещественной матрицы
f03ahc (nag complex lu) - вычисление LU разложения и определителя комплексной матрицы
f04adc (nag cornplex lin eqn rnult rhs) - решение систем линейных уравнений с комплексной матрицей общего вида (несколько векторов правойчасти)
f04agc (nag real cholesky solve mult rhs) - решение систем линейных уравнений с вещественной симметричной положительно определённой матрицей, которая предварительно была разложена с использованием процедуры nag real cholesky (ЮЗаес) (несколько векторов правой части)
f04ajc (nagreallusolvemultrhs) - решение систем линейных уравнений с вещественной матрицей, которая предварительно была разложена с использованием процедуры nag_real_lu (fD3afc) (несколько векторов правой части)
f04akc (nag complex lu solve mult rhs) - решение систем линейных уравнений с комплексной матрицей, которая предварительно была разложена с использованием процедуры nag_complex_lu (fD3ahc) (несколько векторов правой части)
f04arc (nag_real_lin_eqn) - решение систем линейных уравнений с вещественной матрицей (один вектор правой части)
284
Приложение D
f04awc (nag hermitian lin eqn mult rhs) - решение систем линейных уравнений с комплексной Эрмитовой положительно определённой матрицей, которая предварительно была разложена с использованием процедуры nag_complex_cholesky (fOlbnc) (несколько векторов правой части)
f04mcc (nagrealcholeskyskylinesolve) - решение систем линейных уравнений с вещественной симметричной положительно определённой ленточной матрицей с переменной шириной ленты (матрица предварительно была разложена с использованием процедуры nagreal_cholesky_skyline (fD Imcc))
flljac (nagsparsesymcholfac) - вычисление неполного разложения Холеского
flljcc (nagsparsesymcholsol) - решение систем линейных уравнений с вещественной симметричной разреженной матрицей методом сопряжённых градиентов с предобусловливанием, основанном на неполном разложении Холеского
flljec (nag_sparse_sym_sol) - решение систем линейных уравнений с вещественней симметричной разреженной матрицей методом сопряжённых градиентов с предобусловливанием Якоби, SSOR, или без предобусловливания
flldac (nag sparse nsym fac) - вычисление неполного LU разложения fl 1 dec (nag_sparse_nsym_fac_sol) - решение систем линейных уравнений с вещественной несимметричной разреженной матрицей методом сопряжённых градиентов с предобусловливанием, основанном на неполном LU разложении
fl Idee (nag sparse nsym sol) - решение систем линейных уравнений с вещественной несимметричной разреженной матрицей методом сопряжённых градиентов с предобусловливанием Якоби, SSOR, или без предобусловливания
Задача на собственное значение
fOlqec (nag real qr) - вычисление QR разложения вещественной матрицы размером М на N
fOlrcc (nag complex qr) - вычисление QR разложения комплексной матрицы размером М на N
f02aac (nag real symm eigenvalues) - вычисление всех собственных значений вещественной симметричной матрицы
Краткий обзор программного обеспечения
285
f02abc (nagrealsymmeigensystem) - вычисление всех собственных значений и собственных векторов вещественной симметричной матрицы
fO2adc (nagrealsymmgeneraleigenvalues) - вычисление всех собственных значений для обощённой проблемы на собственное значение вида Ах-ХМх, где А и М вещественные симметричные матрицы и матрица М также положительно определённая
f02aec (nagrealsymmgeneraleigensystem) - вычисление всех собственных значений и собственных векторов для обощённой проблемы на собственное значение вида Ах=ХМх, где А и М вещественные симметричные матрицы и матрица М также положительно определённая
f02afc (nag real eigenvalues) - вычисление всех собственных значений вещественной матрицы
f02agc (nag_real_eigensystem) - вычисление всех собственных значений и собственных векторов вещественной матрицы
f02awc (nag hermitian eigenvalues) - вычисление всех собственных значений комплексной Эрмитовой матрицы
f02axc (nag hermitian eigensystem) - вычисление всех собственных значений и собственных векторов комплексной Эрмитовой матрицы f02bjc (nag real general eigensystem) - вычисление всех собственных значений и (если требуется) собственных векторов для обощённой проблемы на собственное значение вида Ах=^Мх, где А и М вещественные матрицы (QZ разложение)
f02ecc (nag_real_eigensystem_sel) - вычисление отдельных собственных значений и соответствующих собственных векторов вещественной матрицы
f02gcc (nagcomplexeigensystemsel) - вычисление отдельных собственных значений и соответствующих собственных векторов комплексной матрицы
Решение нелинейных уравнений
c02afc (nag^zeros_complex_poly) - вычисление нулей полинома с комплексными коэффициентами
c02agc (nag_zeros_real_poly) - вычисление нулей полинома с вещественными коэффициентами
c05adc (nag zero cont func bd) - вычисление нуля вещественной непрерывной функции
286
Приложение D
c05nbc (nagzerononlineqns) - решение систем нелинейных уравнений (метод Бройдена, начальная матрица Якоби задаётся приближённо)
c05pbc (nagzerononlineqnsderiv) - решение систем нелинейных уравнений (метод Бройдена, начальная матрица Якоби задаётся точно)
Численное интегрирование
dOlajc (nagldquadgen) - вычисление одномерного интеграла
dOlakc (nagldquadosc) - вычисление интеграла от осциллирующей функции
dOlalc (nagldquadbrkpts) - вычисление интеграла от функции, имеющей особенности в заданных точках отрезка интегрирования
dOlamc (nagldquadinf) - вычисление интеграла по бесконечному или полубесконечному интервалу
dOlanc (nag ld quad vvt trig) - вычисление интеграла от функции содержащей sin(x) или cos(x)
dOlapc (nag_ld_quad_wt_alglog) - вычисление интеграла от функции имеющей особенность вида (х-а)а1п(х-а) или (b-x)pln(b-x), где а и b пределы интегрирования
dOlaqc (nag_l d quad wt cauchy) - вычисление главного значения интеграла в смысле Коши от функции f(x)/(x - с)
dOlasc (nag_ld_quad_inf_wt_trig) - вычисление интеграла по полубесконечному интервалу от функции содержащей sin(x) или cos(x) dOlbac (nag_ld_quad gauss) - вычисление интеграла по формулам Гаусса-Кристоффеля (формулы Гаусса, Гаусса-Лагерра и Гаусса-Эрмита)
dOlfcc (nag_multid_quad_adapt) - вычисление интеграла от N-мерной функции (N < 15)
dOlgac (nagldquadvals) - вычисление интеграла от функции, определённой набором значений
dOlgbc (nag_multid_quad_monte_carlo) - вычисление многомерного интеграла методом Монте Карло
Решение обыкновенных дифференциальных уравнений
dOZcjc (nag_ode_ivp_adams_gen) - решение задачи Коши (схемы Адамса переменного порядка, использующие переменный шаг)
Краткий обзор программного обеспечения
287
dO2ejc (nag_odeivp_bdf_gen) - решение задачи Коши для жёсткой истемы уравнений (схемы BDF)
d02gac (nag_ode_bvp_fd_nonlin_fixedbc) - решение нелинейной системы дифференциальных уравнений с заданными значениями в двух точках методом конечных разностей
d02gbc (nagodebvpfd—lingen) - решение линейной системы дифференциальных уравнений с заданными значениями в двух точках методом конечных разностей
d02pcc (nag ode ivp rk range) - решение задачи Коши (схемы Рунге-Кутта)
d02pzc (nagodeivprkerrass) - оценка глобальной ошибки приближённого решения, вычисленного по схеме Рунге-Кутта
d02rac (nag ode bvp fd nonlin gen) - решение нелинейной системы дифференциальных уравнений с граничными условиями общего вида, заданными в двух точках, методом конечных разностей
Интерполяция и аппроксимация функций t
eOlbac (nag ld spline interpolant) - построение интерполяционной кубической сплайн функции для одномерного набора данных
eOlbec (nag monotonic interpolant) - построение кусочно-кубического интерполяционного полинома Эрмита
eOlbfc (nag monotonic evaluate) - вычисление значения кусочнокубического интерполяционного полинома Эрмита
eOlbgc (nag monotonic deriv) - вычисление значения и производной кусочно-кубического интерполяционного полинома Эрмита
eOlbhc (nag monotonic intg) - вычисление интеграла от кусочнокубического интерполяционного полинома Эрмита
eOldac (nag_2d_spline_interpolant) - построение интерполяционной бикубической сплайн функции для двумерного набора данных
eOlsac (nag_2d_scat_interpolant) - построение двумерной интерполяционной функции для двумерного набора данных модифицированным методом Шепарда
e02adc (nag ld cheb fit) - построение ряда по полиномам Чебышева, аппроксимирующего произвольный одномерный набор данных методом наименьших квадратов
e02bac (nag ld spline fit knots) - построение кубической сплайн функции, аппроксимирующей произвольный одномерный набор данных методом наименьших квадратов
288
Приложение D
e02bbc (nagldsplineevaluate) - вычисление значения кубической сплайн функции
e02bcc (nagldsplinederiv) - вычисление значения и производной кубической сплайн функции
e02bdc (nag ld spline intg) - вычисление интеграла от кубической сплайн функции
e02dcc (nag_2d_splme_fit_grid) - построение бикубической сплайн функции, аппроксимирующей двумерный набор данных, определённый в узлах прямоугольной сетки на плоскости (метод наименьших квадратов)
e02ddc (nag_2d_spline_fit_scat) - построение бикубической сплайн функции, аппроксимирующей произвольный двумерный набор данных методом наименьших квадратов
Вычислительные функции среды MATLAB®
MATLAB - это высокопроизводительный язык для научных расчётов. Он включает в себя вычисления, визуализацию и программирование в удобной среде, где задачи и решения выражаются в форме, близкой к математической. Типичное использование языка MATLAB - это:
•	математические вычисления
•	создание алгоритмов
•	моделирование
•	анализ данных и визуализация
•	научная и инженерная графика
•	разработка приложений, включая создание графического интерфейса
В дополнение, MATLAB позволяет использовать программы написанные на языках С, C++ и Fortran.
Решение систем линейных уравнений
cond - вычисление числа обусловленности
chol - вычисление разложения Холеского симметричной положительно определённой матрицы
lu - вычисление LU разложения
minres - решение систем линейных уравнений с разреженной симметричной матрицей итерационным методом минимальных невязок
Краткий обзор программного обеспечения
289
bicg, bicgstab, cgs - решение систем линейных уравнений с разреженной матрицей итерационным методом сопряжённых градиентов choline - вычисление неполного разложения Холеского
gmres -решение систем линейных уравнений с разреженной матрицей обобщённым методом минимальных невязок
luinc - вычисление неполного LU разложения
peg - решение систем линейных уравнений с разреженной матрицей методом сопряжённых градиентов с предобусловлйванием
Задача на собственное значение
qr - вычисление QR разложения
balance - балансировка матрицы для повышения точности вычисления собственных значений
eig - вычисление собственных значений и собственных векторов матрицы
hess - вычисление формы Хессенберга
• I
Решение нелинейных уравнений
fzero - вычисление корня одномерного уравнения (комбинация метода деления отрезка пополам и метода секущих)
roots - вычисление корней полинома
Численное интегрирование
quad - вычисление одномерного интеграла методом Симпсона quad! - вычисление одномерного интеграла методом Лобатто dblquyad - вычисление двумерного интеграла
Решение обыкновенных дифференциальных уравнений
bvp4c - решение нелинейной системы дифференциальных уравнений с заданными значениями в двух точках методом конечных разностей bvpinit - вычисление начального приближения для функции bvp4c ode45 - решение задачи Коши для системы уравнений (явные схемы Рунге-Кутта порядка 4(5))
ode23 - решение задачи Коши для системы уравнений (явные схемы Рунге-Кутта порядка 2(3))
290
Приложение D
odell3 - решение задачи Коши для системы уравнений (схемы предиктор-корректор переменного порядка)
odel5s - решение задачи Коши для жёсткой системы уравнений (схемы BDF)
ode23s - решение задачи Коши для жёсткой системы уравнений (схема Розенброка второго порядка)
ode23t - решение задачи Коши для жёсткой системы уравнений (неявные схема Рунге-Кутта второго порядка)
ode23tb - решение задачи Коши для жёсткой системы уравнений (комбинация неявной схемы Рунге-Кутта второго порядка и схемы BDF второго порядка)
Интерполяция и аппроксимация функций
interpl - интерполяция одномерного набора данных
interp2 - интерполяция двумерного набора данных
interp3 - интерполяция трёхмерного набора данных
interpft - интерполяция одномерного набора данных с использованием быстрого преобразования Фурье
interpn - интерполяция многомерного набора данных
Литература
Абаффи Дж., Сиендикато Э. Математические методы для решения линейных и нелинейных уравнений: Проекционные ABS-алгоритмы -М.: Мир, 1996
Абрамович М. Справочник по специальным функциям с формулами, графиками и математическими таблицами - М.: Наука, 1979
Батчер Дж. К., Лэмберт Дж. Л. и Протеро А. Современные численные методы решения обыкновенных дифференциальных уравнений - М.: Мир, 1979
Воеводин В. В. и Кузнецов Ю. А. Матрицы и вычисления - М.: Наука, 1984
Годунов С. К. и Рябенький В. С. Разностные схемы - М.: Наука, 1976
Годунов С. К. Современные аспекты линейной алгебры - Новосибирск: Научная книга, 1997
Голуб Дж. и Ван Лоун Ч. Матричные вычисления - М.: Мир, 1999
Икрамов X. Д. Численное решение матричных уравнений: Ортогональные методы - М.: Наука, 1984
Калиткин Н. Н. Численные методы - М.: Наука, 1975
Лившиц К. И. Сглаживание экспериментальных данных сплайнами -
Томск: Издательство Томского университета, 1991
Ортега Дж. и Пул У. Введение в численные методы решения дифференциальных уравнений - М.: Наука, 1986
Парлетт Б. Симметричная проблема собственных значений - М.: Мир, 1983
292
Литература
Писсанецки С. Технология разреженных матриц - М.: Мир, 1988
Райс Дж. Матричные вычисления и математическое обеспечение - М.: Мир, 1984
Самарский А. А. Введение в численные методы - М.: Наука, 1987
Самарский А. А. и Гулин А. В. Численные методы - М.: Наука, 1989
Стечкин С. Б. и Субботин Ю. Н. Сплайны в вычислительной математике - М.: Наука, 1976
Трауб Дж. Ф. Итерационные методы решения уравнений - М.: Мир, 1985
Уилкинсон Дж. Алгебраическая проблема собственных значений - М.: Наука, 1970
I
Фадеев Д. К. и Фадеева Н. Н. Вычислительные методы линейной алгебры - М.: Физмагиз, 1960
Хайрер Э., Нёрсетт С. и Ваннер Т. Решение обыкновенных дифференциальных уравнений: Нежёсткие задачи - М.: Мир, 1990
Хейгеман А. и Янг Д. Прикладные итерационные методы - М.: Мир, 1986
Холл Дж. и Уатт Дж. (Ред.) Современные численные методы решения обыкновенных дифференциальных уравнений - М.: Мир, 1979
Предметный указатель
А
Аппроксимация (свойство разностной схемы) 152
Адамса схема
-явная 172
- неявная 175
Б
Бучера (Butcher) таблица 167
В
Веса квадратурной формулы 127
Весовая функция 126
Вложенная пара 208
Г
Г аусса-Кристоффеля формулы 126
Гершгорина круг 79
Горнера схема 219
д
Демпфирование ПО
Дифференцирования назад формулы 188
Ж
Жёсткая система уравнений 187
Жёсткости коэффициент 187
3
Задача на собственное значение
—	стандартная 78
—	обобщённая 78
И
Интеграл несобственный 132 Интерполяционный полином --Лагранжа 216 --Ньютона 219
-	- тригонометрический 220 Интерполяционная сплайн функция 224
Итерационный процесс 18, 21, 57
Итерационная функция 21, 95 Итерация
-	одноточечная 23, 25
-	многоточечная 24, 33
-	одноточечная с памятью 24, 35
К
Критерий завершения итерационного процесса 25, 57
Круг Гершгорина 79
М
Матрица
-	с диагональным преобладанием 47
-	ленточная 44
-	ортогональная 46
-	разложимая 46
-	разреженная 44
-	симметричная положительно определённая 45
-	треугольная 45
-	Эрмитовая 78
-	Хессенберга 89
294
Предметный указатель
-Якоби 97,101,162
Машинное число 12
Машинная арифметика 14 Метод
-	Гаусса-Зейделя 62
-	деления отрезка пополам 19
-	с кубической сходимостью 31, 32, 33, 105
-	минимальных невязок 70
-	наименьших квадратов 232
-	наискорейшего спуска 72
-	Ньютона 30,101
-	обратной итерации 83
-	последовательных приближений 197
-	прогонки 53
-	простой итерации 26,95
-	последовательной верхней релаксации (SOR) 67
-	прямоугольников 115
-	QR разложения 88
-	релаксации 65
-	секущих 35
-Симпсона 117
-	стрельбы 190
-	сопряжённых градиентов 72
-трапеций 116
-	установления 200
-	фиктивных областей 205
-	Харди 228
-	Якоби 60
Н
Невилла схема 216
Невязки вектор
-	- для системы линейных уравнений 55
-	- для стандартной задачи на собственное значение 79
Невязка разностной схемы 151
Норма
-	вектора 41
-	матрицы 42
О
Обусловленность 48
Оператор перехода 163
Ортогональная функция 238
Отношение Рэлея 79
Ошибка
-	алгоритма 48
-	возмущения 48
-	округления 48
Ошибка квадратурной формулы 120
Ошибка выполнения арифметических операций 15
П
Параметр релаксации 65 - - оптимальный 66, 67 Полином ортогональный 128
Порядок
-	квадратурной формулы 120
-	разностной схемы 152
Правило перемножения 135
Предиктор-корректор схема 176
Предобусловливание 73
Представление числа с плавающей точкой 11
Прямые методы 52
Р
Разложение
-	на треугольные матрицы (LU) 52
-	Холесского 52
- Ортогональное (QR) 52, 88
Разностная схема 147
Разность
-вперёд 157
-назад 157
-центральная 158
Римана интеграл 114
Рунге-Кутта схема 167
Рэлея отношения 79
Предметный указатель
295
С
Сдвиг начала 85
Сетка разностная 146, 150
Сеточная функция 147,150
Симпсона метод 117
Спектральный радиус 59
Сплайн кубический 225
Степенной метод 80
Сходимость
-	итерационного процесса 21, 59
-	метода простой итерации 25, 96
-	метода Ньютона 102
-	метода QR 90
-	разностной схемы 159
Узлы
-	интерполяции оптимальные 244
-	квадратурной формулы 127 Устойчивость
-	метода прогонки 55
-	разностной схемы 159
-	решения задачи Коши 161
Ф
Формулы Гаусса-
Кристоффеля 126
X
Хессенберга форма 89
Холесского разложение 52
Ч
Чебышева полиномы 239
- - нормированные 244
Число обусловленности 49
Э
Эйлера схема 166
Эйткена процесс 28
Экстраполяция по Ричардсону 122