МИНИСТЕРСТВО ОБРАЗОВАНИЯ РФ СТАВРОПОЛЬСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ _________________________________________________...
12 downloads
173 Views
1MB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РФ СТАВРОПОЛЬСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ______________________________________________________
На правах рукописи
Плюта Алексей Иванович Об итерационных методах решения операторных уравнений второго рода Специальность 05.13.18. – «математическое моделирование, численные методы и комплексы программ» Диссертация на соискание ученой степени кандидата физико-математических наук
Научный руководитель – доктор физико-математических наук, профессор, член-корреспондент АН Таджикистана, академик МАИ В.Я. Стеценко
Ставрополь – 2004
2
ОГЛАВЛЕНИЕ ВВЕДЕНИЕ…………………………………………………………………….
4
ГЛАВА 1. Обзор литературы…………………………………………………
8
§1. Метод последовательных приближений...................................................
8
§2. Метод ускорения сходимости монотонных приближений к решению уравнения вида x = Ax + f ……………………………………………………..
15
§3. Метод однопараметрического итеративного агрегирования решения линейных операторных уравнений вида x = Ax + f , где оператор A - матрица n - го порядка…………………………………………………………….
21
§4. Метод однопараметрического итеративного агрегирования решения нелинейных операторных уравнений вида x = F ( x) + f , где F ( x) - нелинейный оператор………………………………………………………………
27
ГЛАВА 2. Построение приближений, сходящихся к спектральному радиусу и собственному вектору линейного оператора………………………
32
§5. Построение приближений, сходящихся к спектральному радиусу линейного оператора……………………………………………………………..
32
§6. Построение приближений, сходящихся к собственному вектору линейного оператора……………………………………………………………..
41
ГЛАВА 3. Развитие методов построения приближений, сходящихся к точному решению операторного уравнения вида x = Ax + f ……………….
56
§7. Об одном итерационном методе решения системы линейных алгебраических уравнений вида x = Ax + f с квадратной матрицей A , в случае, когда спектральный радиус матрицы A , больше чем единица…………….
56
§8. Получение двусторонних оценок точного решения x* операторного уравнения вида x = Ax + f , в случае, когда спектральный радиус оператора A не обязательно меньше единицы…………………………………….
65
§9. О некоторых подходах к уточнению границ решения операторных уравнений вида x = Ax + f в случае, когда спектральный радиус оператора A не обязательно меньше единицы. §10. “Гибрид” методов ускорения сходимости монотонных приближений к решению x* уравнения вида x = Ax + f и однопараметрического итера-
73
3
тивного агрегирования………………………………………………………..
86
§11. Об одном варианте метода ускорения сходимости монотонных приближений к решению уравнения вида x = Ax + f …………………………....
93
§12. Об одном варианте метода Зейделя…………………………………….
100
ЗАКЛЮЧЕНИЕ……………………………………………………………….. 112 ЛИТЕРАТУРА………………………………………………………………… 114 ПРИЛОЖЕНИЕ……………………………………………………………….. 121
4
Введение При решении широкого класса задач математического анализа, алгебры, экономики требуется находить решение операторных уравнений. В тех случаях, когда процесс отыскания точного решения является затруднительным, на помощь приходят итерационные методы, позволяющие найти приближенное решение с определенной степенью точности.
Соответствующий
класс задач можно представить с помощью операторного уравнения вида x = Ax + f
(1)
с линейным или нелинейным оператором А, действующим в банаховом пространстве Е, и свободным членом f из этого пространства. Большое практическое значение приобретает возможность строить приближения un и, соответственно, vn к решению x* операторного уравнения вида (1), та-
кие что un ≤ x* ≤ vn
При этом, оказывается, параллельно решаются две важные задачи теории приближенных методов решения операторных уравнений – задача об оценке погрешности приближенного решения, а также задача об априорной оценке относительной погрешности приближенного решения. Использование современных ЭВМ открывает широкие возможности для решения таких задач. Математическое моделирование стало активно внедряться в практику научных и прикладных разработок при исследовании сложных явлений и процессов, происходящих в экономике. Лишь с помощью современных ЭВМ удается проводить численное моделирование достаточно сложных экономических процессов. Существенные прикладные преимущества, проведенные исследования практической скорости сходимости итерационных процессов к точному решению x* операторного уравнения вида (1), возможность контроля результатов в процессе решения и наличие математических обоснований, дают повод обратить серьезное внимание на итерационные методы не только как на объект интересных тео-
5
ретических исследований, но и как на новые подходы к организации и проведению реальных расчетов плановых задач большой размерности и сложной структуры. Актуальность проблемы. Балансовая модель производства является одной из наиболее простых математических моделей. Она записывается в виде системы уравнений, каждое из которых выражает требование равенства (баланса) между количеством продукции, производимой отдельным экономическим объектом, и совокупной потребности в этом продукте. Отсюда происходит название модели. Впервые балансовые модели начали использоваться в СССР в 20-х годах. В более или менее законченном виде теория балансовых моделей была разработана американским ученым В.В. Леонтьевым в середине 30-х годов. Однако в те годы ни уровень развития математической науки, ни качество вычислительной техники не позволили широко распространить балансовый метод. За разработку и внедрение в практику метода межотраслевого баланса группа советских экономистов под руководством академика А.Н. Ефимова в 1968 году была удостоена Государственной премии СССР. В настоящее время большое количество работ посвящается этой модели и ее применению для решения различных задач. Такой интерес к балансовой модели определяется тем, что, как оказалось, эта модель хорошо отображает многие существенные особенности современного производства и в то же время легко поддается расчету. Во многих странах мира балансовый метод используется для экономического анализа, планирования и прогнозирования. В связи с внедрением ЭВМ в научные разработки, значительно повысился интерес к различным численным методам и алгоритмам, реализация которых граничит с проведением вычислительного эксперимента. Потребность в таком подходе к решению задач математической экономики диктуется все усложняющимися запросами практики, а также связана с попыткой создания более рациональных и более общих теоретических моделей для изучения сложных экономических явлений.
6
Активное использование методов численного моделирования позволяет резко сократить сроки научных и конструкторских разработок. Цели работы - приближенное решение операторных уравнений вида (1) в случаях, когда спектральный радиус ρ ( A) оператора A не обязательно меньше единицы; построение итерационных последовательностей сходящихся к решению уравнения (1), к собственным значениям и собственным векторам оператора A ; разработка новых методов, повышающих скорость сходимости итераций к решению уравнения (1); разработка соответствующего программного обеспечения, позволяющего реализовать предложенные методы. Научная новизна результатов работы. Развитие теории линейных и нелинейных операторов, действующих в полуупорядоченных банаховых пространствах. Так, например, предложены развития методов решения операторных уравнений вида (1) в случаях, когда у оператора A спектральный радиус r ( A) не обязательно меньше единицы. Предложен метод построения двусторонних оценок точного решения x* операторного уравнения вида (1) в случае, когда спектральный радиус оператора A не обязательно меньше единицы. Предложены варианты методов, позволяющие строить приближения к решению уравнений вида (1), обладающие высокой скоростью сходимости. Разработано программное обеспечение на языке программирования TURBO PASCAL, реализующее предложенные итерационные методы. Достоверность результатов работы вытекает из математической строгости постановки и решения исследуемых задач, а также из совпадения ряда полученных результатов в частных случаях с известными в литературе. Практическая значимость работы заключается в возможности применения полученных методов решения уравнения (1) при решении конкретных задач математики и экономики. Отдельные результаты могут быть использованы при чтении специальных курсов и подготовке учебных пособий. На защиту выносятся следующие положения:
7
- итерационный метод решения системы линейных алгебраических уравнений вида (1) с квадратной матрицей A , в случае, когда наибольшее по модулю собственное значение матрицы A , больше чем единица; - методы получения двусторонних оценок точного решения x* операторного уравнения вида (1), в случае, когда спектральный радиус оператора A не обязательно меньше единицы, а также подходы к уточнению полученных оценок; - синтез методов ускорения сходимости монотонных приближений к решению x* уравнения вида (1) и однопараметрического итеративного агрегирования; - метод ускорения сходимости монотонных приближений к решению уравнения вида (1), в случае выбора в качестве начальных приближений векторов, которые ограничивают точное решение x* уравнения вида (1) «сверху« и «снизу»; - вариант метода Зейделя, позволяющий строить приближения, сходящиеся к точному решению x* уравнения (1) с помощью метода ускорения сходимости. Структура и объем диссертации. Диссертация состоит из введения и трех глав, заключения, списка литературы и приложения. В ней принята сквозная нумерация параграфов, для утверждений и формул введена двойная нумерация, включающая номер параграфа и порядковый номер утверждения или формулы в нем. Диссертация изложена на 167 страницах, список использованной литературы содержит 82 наименования.
8
ГЛАВА 1. ОБЗОР ЛИТЕРАТУРЫ §1. Метод последовательных приближений Одним из наиболее известных итерационных методов решения систем линейных уравнений является метод последовательных приближений [4] (метод простой итерации). Система уравнений Ax = b
тем или иным методом преобразуется к виду уравнения “второго рода”: x = Bx + f
(1.1)
после чего его решение находится как предел последовательности xm +1 : xm +1 = Bxm + f ,
(m = 0,1,2,...)
(1.2)
где B - матрица порядка (n × n) , f - свободный вектор, f ∈ R n , x - неизвестный вектор, x ∈ R n , x0 - начальное приближение. Метод (1.2) называется методом простой итерации. Теорема 1.1. (о достаточном условии сходимости метода простой итерации) Если норма матрицы B меньше единицы: B < 1 , то система уравнений (1.1) , при любом свободном члене f ∈ R n , имеет единственное решение и итерационный процесс (1.2)
сходится к решению x* = x* ( f ) со скоростью
геометрической прогрессии: m
x* − xm +1 ≤ c ⋅ x1 − x0 ⋅ B ,
m = 0,1,2,... , c − const.
Качество итерационного процесса удобно характеризовать скоростью убывания отношения погрешности после m итераций к начальной погрешности: || xm || || B m x0 || = sup =|| B m || . x 0 ≠ 0 || x0 || x 0 ≠ 0 || x0 ||
S m = sup
m
Можно гарантировать, что величина S m ≤ ε , если B ≤ ε , т.е. при m ≥ mε =
ln(ε −1 ) . ln(|| B ||−1 )
Если существуют постоянные γαβ, γβα такие, что при x ≠ 0
9 || x||β
≤γαβ,
|| x||α
|| x||α ≤ γ βα , || x||β
то нормы x α и x β в R n называются эквивалентными. Имеем || r m ||β ≤ γ αβ || r m ||α ≤ γ αβ || B||αm || r 0 ||α ≤ γ αβ γ βα || B||αm || r 0 ||β .
Таким образом, если условие изложенной выше теоремы выполнено для нормы . α , то утверждение справедливо относительно любой эквивалентной ей норме. Любые две нормы в конечномерном пространстве являются эквивалентными. В частности, нормы x 1 , x 2 , x ∞ , вычисляемые соответственно по формулам, || x||1 =
m
∑ |x | , j
m
∑ |x |
|| x||2 =
2
j
,
|| x ||∞ = max | x j | 1≤ j ≤ m
j =1
j =1
эквивалентны между собой вследствие справедливости цепочки неравенств x
∞
≤ x 2 ≤ x 1 ≤ m x ∞.
Определение 1.1. Норма A называется согласованной с нормой x в пространстве, если для каждого x из пространства векторов выполняется Ax ≤ c x ,
где с-const. Согласованные с вышеперечисленными нормами в пространстве матриц являются соответственно нормы m
A 1 = max (∑ | aij |) , 1≤ j ≤ m
i =1
A 2 = max λi( A* A) , 1≤ i ≤ m
m
A ∞ = max(∑ | aij |) , 1≤ i ≤ m
j =1
где λiD - собственные значения матрицы D = A* ⋅ A , а A* - матрица, сопряженная к матрице A (т.е. это результат комплексного сопряжения к матрице транспонированной по отношению к матрице A ). При решении уравнения вида (1.1) методом последовательных приближений (1.2) по заданной точности ε > 0 вычислений бывает важно определить число итераций "m" . Поясним как найти m - количество итераций, обеспечи-
10
вающих, для получения искомого решения системы (1.1) , приближение к решению с точностью до ε . При известных
условиях к решению уравнения (1.1) сходится итераци-
онный процесс (1.2) , при любом начальном приближении x0 , при этом таковыми известными условиями является одно из следующих условий: n
a)
max ∑ aij ≤ q1 0 определено значение оператора F (x ) и для x > 0 выполняется неравенство F (x ) ≥ f .
Следствие. Если x0 > 0 , то определена последовательность {x n } : x n +1 = F (x n ),
(n = 0,1,2,...)
(3.3)
причем x n +1 ≥ f .
Всюду здесь предполагается выполненным условие (3.2) . Лемма 3.2. Функционал t (x ) и оператор F (x ) непрерывны в каждой точке x > 0.
Лемма 3.3. В области x≥ f >0
выполняется неравенство
23 1 . 1−α
t (x ) ≤
Лемма 3.4. Оператор F (x ) удовлетворяет в области x1 ≥ f , x 2 ≥ f условию Липшица: F ( x1 ) − F ( x 2 ) 1 ≤ [c1 x1 1 +q] x1 − x2 1 ,
где c1, q - const. Теорема 3.1. Пусть выполнено неравенство q=
A1
1−α
< 1.
Тогда последовательность (3.3) сходится к решению x * уравнения (2.1) при любом начальном приближении x0 ≥ f . Рассмотрим соответствующие примеры. Пример 1. Рассмотрим систему вида (2.1) , а именно x = Ax + f ,
где 0.01 0.1 0.15 A = 0.2 0.18 0.11 , 0.12 0.09 0.07
1 f = 2 . 3
1.932344 Точное решение x = 3.420915 . 3.806197 *
Спектральный радиус оператора A равен r ( A) = 0.3491 . В качестве начального приближения к вектору решения системы уравнений вида (2.1) возьмем 3 вектор x0 = 3 . Полученные значения приближений по методу однопарамет 3
рического итеративного агрегирования представим в виде таблицы. Таблица 6 №, n
Значения приближений x n x n(1)
x n( 2)
x n( 3)
24
1
1.791878
3.492385
3.852792
2
1.947898
3.415026
3.801422
4
1.932529
3.420841
3.806139
8
1.932345
3.420915
3.806197
10
1.932344
3.420915
3.806197
12
1.932344
3.420915
3.806197
Как видно из таблицы уже на 12 шаге точность вычисления составляет 10-6. Отметим также, что и в некоторых случаях когда r ( A) > 1 , метод однопараметрического итеративного агрегирования может «сходится» к решению уравнения вида (2.1) . Пример 2. Рассмотрим систему уравнений вида (2.1) , где 0.1 0.2 A = 0.3 0.1 0.2
0.2 0.3 0.1 0.1 0.4
0.1 0.4 0.2 0.4 0.1
0.3 0.5 0.4 0.1 0.1
0.4 0.3 0.1 , 0.2 0.1
1 2 f = 3 . 4 5
− 25.645350 − 39.107519 Точное решение x * = − 22.258140 . − 17.519325 − 21.944249
Спектральный радиус оператора A равен r ( A) = 1.1256 . В качестве начального приближения к вектору решения системы уравнений вида (2.1) возьмем 1 1 вектор x0 = 1 . Полученные значения приближений по методу однопарамет 2 3
рического итеративного агрегирования представим в виде таблицы. Таблица 7 №, n
Значения приближений x n
25 x n(1)
x n( 2)
x n( 3)
x n( 4)
x n( 5)
1
-24.384615
-30.307692
-16.615384
-12.153846
-8.846154
2
-25.930732
-43.561306
-27.143312
-19.443471
-27.233280
6
-25.626347
-39.062892
-22.240283
-17.472515
-21.900795
10
-25.645331
-39.107303
-22.257782
-17.519409
-21.943912
14
-25.645352
-39.107525
-22.258144
-17.519330
-21.944256
19
-25.645350
-39.107519
-22.258140
-17.519325
-21.944249
20
-25.645350
-39.107519
-22.258140
-17.519325
-21.944249
Как видно из таблицы 20 итераций метода однопараметрического итеративного агрегирования дают точность вычислений при определении неизвестного решения порядка 10-6. По сравнению с предыдущим примером заметно снизилась скорость приближения к решению уравнения вида (2.1) (это связано с тем, что в этом примере увеличилось значение r ( A) ). Покажем на соответствующем примере, что приближения, полученные с помощью метода однопараметрического итеративного агрегирования, могут сходиться к решению уравнения вида (2.1) и в том случае, когда спектральный радиус намного больше единицы. Пример 3. Рассмотрим систему уравнений вида (2.1) , где 0.9 0.8 A= 0.81 0.6
0.8 0.7 0.6 0.5 0.4 0.5 , 0.6 0.7 0.4 0.2 0.51 0.42
1 2 f = . 3 4
− 3.692044 − 1.588537 * Точное решение x = . − 1.316427 1.371875
Спектральный радиус оператора A равен r ( A) = 2.4409 . В качестве начального приближения к вектору решения системы уравнений вида (2.1) возьмем
26 3 4 вектор x0 = . Полученные значения приближений по методу однопарамет4 4
рического итеративного агрегирования представим в виде таблицы. Таблица 8 №, n
Значения приближений x n x n(1)
x n( 2)
x n( 3)
x n( 4)
1
-4.648855
-2.071246
-1.697201
0.783715
2
-3.826261
-1.709944
-1.328899
1.247948
5
-3.694028
-1.590200
-1.316609
1.371591
9
-3.692045
-1.588538
-1.316427
1.371875
10
-3.692044
-1.588537
-1.316427
1.371875
11
-3.692044
-1.588537
-1.316427
1.371875
Как видно из таблицы на 11-м шаге точность вычисления достигается 10-6. Отметим, что хорошо известный нам метод последовательных приближений в этом случае не применим. Рассмотренные выше примеры были реализованы с помощью разработанной автором программе на языке программирования TURBO PASCAL. Дальнейшим развитием метода однопараметрического итеративного агрегирования является так называемый метод многопараметрического итеративного агрегирования [25]. Обратим внимание на то, что метод многопараметрического итеративного агрегирования обеспечивает, вообще говоря, более высокую скорость сходимости приближений, по сравнению с однопараметрическим итеративным агрегированием, однако в нем на каждом шаге приходится решать не одно уравнение с одним неизвестным, а систему из нескольких уравнений с соответствующим числом неизвестных. В этом случае естественно “рисунок” метода усложняется, но при этом мы выигрываем в скорости сходимости.
27
§4. Метод однопараметрического итеративного агрегирования решения нелинейных операторных уравнений вида x = F ( x) + f , где F (x) - нелинейный оператор. Заметим, что метод однопараметрического итеративного агрегирования применим также и для решения нелинейных систем алгебраических уравнений. Рассмотрим аналог метода итеративного агрегирования для случая нелинейных уравнений вида x = F ( x) + f ,
(4.1)
с нелинейным оператором F (x) . Примером таких уравнений может, например, служить следующая система уравнений: 1 1 5 . ( x ) + 01 . ( y) 3 + 1 x = 01 1 y = 0.01x + 0.2 ( y ) 3 + 1
Если воспользоваться методом итеративного агрегирования (в его нелинейном варианте), изложенным в [67], т.е. перейти от уравнения (4.1) к следующему уравнению: tl 0 ( x 0 ) = tl 0 [F ( x0 )] + l 0 ( f ),
где l 0 - некоторый выбранный функционал агрегирования, а x0 - выбранное начальное приближение, с неизвестной скалярной величиной t ( x0 ) , а затем определить значение t ( x0 ) : t ( x0 ) =
l0 ( f ) , l 0 ( x 0 ) − l 0 [ F ( x 0 )]
при условии что l0 ( x0 ) − l0 [F ( x0 )] ≠ 0 . Тогда можно определить следующее приближение x1 по формуле: def
x1 = Φ ( x0 ) = t ( x0 ) ⋅ F ( x 0 ) + f .
Аналогично, по индукции положим: x n +1 = Φ ( x n ) = t ( x n ) ⋅ F ( x n ) + f .
(4.2)
28
Последовательность (4.2) определяет алгоритм метода итеративного агрегирования, в случае нелинейного операторного уравнения. Пусть для любых x выполнено условие:
[c F ( x) + q(t ( y))] ≤ q
1
(4.3)
< 1,
где q таково, что выполнено F (x ) − F ( y ) ≤ q x − y .
Теорема 4.1. Пусть выполнено условие (4.3) . Тогда уравнение (4.1) имеет и притом единственное решение x * , и к этому решению сходятся последовательные приближения (4.2) . Заметим, что в случае, когда F (x) - линейный оператор, этот метод совпадает с изложенным в §3 методом итеративного агрегирования. Если же F (x) нелинейный оператор, то здесь фактически предлагается новый вариант метода, а именно нелинейный вариант метода итеративного агрегирования. В работе [67] получены достаточные условия сходимости нелинейного варианта метода итеративного агрегирования. Рассмотрим примеры. Пример 1. Рассмотрим нелинейную систему вида x = 0.01x + 0.02 y 0.5 + 0.01z 0.25 + 3 0.5 0.25 . z 0.1 + 4 y = 0.03x + 0.01y + 01 z = 0.01x 0.25 + 0.2 y 0.5 + 0.4 z 0.5 + 5
Точное решение: x*=3.087732, y*=4.187488, z*=6.437405. 2 В качестве начального приближения выберем вектор x0 = 2 . Полученные 2
значения приближений представим в виде таблицы. Таблица 9 №, n
1
Значения приближений xn
yn
zn
3.146834
4.394059
7.099478
29
2
3.083696
4.176646
6.397830
4
3.087717
4.187447
6.437256
6
3.087732
4.187488
6.437404
7
3.087732
4.187488
6.437404
Как видно из таблицы уже на 6-м шаге точность вычислений достигается до 10-6. При реализации метода итеративного агрегирования возможно появление приближения, содержащего комплексные числа. В этом случае метод фактически нереализуем. Приведем пример соответствующий этому случаю. Пример 2. Рассмотрим нелинейную систему вида x = 0.9 x 0.5 + 0.8 y 0.25 + 1 0.5 y = 0.7 x + 0.9 y + 1 3
В качестве начального приближения возьмем вектор x0 = . Полученные 3 значения приближений представим в виде таблицы. Таблица 10 №, n
Значения приближений
1
-8.965667
-13.928957
2
комплексное число
комплексное число
Как видно из таблицы на 2-м шаге вычислений появляются комплексные числа. Предложенный метод на данном примере нереализуем. При реализации метода итеративного агрегирования возможны, также, такие случаи, когда на нечетном шаге наблюдается приближение “снизу” к вектору решения, а на четном шаге наблюдается приближение “сверху” к вектору решения. Приведем пример соответствующий этому случаю. Пример 3. Рассмотрим нелинейную систему вида x = 0.5 x + 0.5( y )0,5 + 1 y = 0.9 x 0.5 + 1
30 3
В качестве начального приближения возьмем вектор x0 = . Полученные 3 значения приближений представим в виде таблицы. Таблица 11 №, n
Значения приближений xn
yn
1
3.280364
2.502408
2
3.824302
2.893678
6
3.699622
2.764530
7
3.613336
2.687309
12
3.655982
2.725457
24
3.649138
2.719333
25
3.648906
2.719125
30
3.649022
2.719229
31
3.648990
2.719200
Точное решение данной системы уравнений: x=3.649003 и y=2.719212. Как видно из таблицы на 30-м шаге наблюдается сходимость к решению до 4-го знака. Интересно отметить, что в процессе реализации предложенного метода итеративного агрегирования возможна такая ситуация, когда на первый взгляд метод сходится, однако наблюдается сходимость к вектору, не являющемуся решением системы. Приведем соответствующий пример. Пример 4. Рассмотрим нелинейную систему вида x =| y|0.5 +0.2| z|0.5 +1 . | x|0.5 +0.3| y|0.3 +0.5| z|+2 y = 01 z =| x|0.25 +0.5| y|+5| z|0.5 +3
31
В качестве начального приближения к вектору решения возьмем вектор 1 x0 = 2 . Полученные приближения представим в виде таблицы. 3
Таблица 12 №, n
Значения приближений xn
yn
zn
1
-0.259054
0.591686
-4.623341
2
0.637854
1.209162
-0.551321
6
0.210033
1.314923
-1.283281
24
0.151685
1.328081
-1.479733
30
0.151675
1.328082
-1.479756
31
0.151675
1.328082
-1.479758
После соответствующей проверки замечаем что вектор, к которому сходятся значения приближений по методу однопараметрического итеративного агрегирования не является решением данной системы уравнений. Из этого следует, что сам факт сходимости еще не гарантирует, что значения приближений сходятся именно к решению данной системы уравнений. Рассмотренные выше примеры были реализованы при помощи разработанной автором программы на языке программирования TURBO PASCAL.
32
ГЛАВА 2. АЛГОРИТМЫ ПОСТРОЕНИЯ ПРИБЛИЖЕНИЙ, СХОДЯЩИХСЯ К СПЕКТРАЛЬНОМУ РАДИУСУ И СОБСТВЕННОМУ ВЕКТОРУ ЛИНЕЙНОГО ОПЕРАТОРА §5. Построение приближений, сходящихся к спектральному радиусу линейного оператора Знание нормы оператора, а точнее говоря информации о том, что норма оператора меньше единицы, позволяет строить приближение к решению уравнения с этим оператором. Однако, величина нормы оператора существенно зависит от того, каким образом введена норма в соответствующим пространстве. Один и тот же оператор может иметь разные нормы, в зависимости от способа введения нормы в пространстве, при этом не исключено, что одна норма будет меньше единицы, а другая больше единицы. Поэтому возникает принципиальный вопрос о том, в каких случаях можно гарантировать существование эквивалентной нормы [36] в пространстве, в которой норма оператора будет меньше единицы. В силу неоднозначности введения нормы в пространстве, возникает необходимость иметь какую-нибудь общую характеристику, знание которой будет давать информацию о сходимости итерационного процесса к точному решению операторного уравнения. Одной из таких характеристик является спектральный радиус оператора A , который тесно связан с понятием спектра оператора A [36]. Часть предыдущего материала, а также и дальнейшее изложение материала тесно связано с понятием спектрального радиуса оператора A [36]. Пусть A - линейный оператор в n-мерном пространстве E n . Число λ называется собственным значением оператора A , если уравнение Ax = λx
имеет ненулевое решение. Совокупность всех собственных значений называется спектром оператора A , а все остальные значения λ называются регулярными значениями оператора A . Иначе говоря, λ есть регулярное значе-
33
ние, если оператор ( A − λI ) имеет ограниченный обратный оператор. В конечномерном пространстве возможны два случая: 1) уравнение Ax = λx имеет ненулевое решение, т.е. λ есть собственное значение для A , оператора ( A − λI )−1 при этом не существует; 2) существует ограниченный оператор ( A − λI )−1 , т.е. λ есть регулярная точка. Определение 5.1. Пусть λ A - собственное значение оператора A . Положим r ( A) = sup λ A
величина r ( A) - называется спектральным радиусом оператора A . Сразу отметим следующий очевидный результат [36]: если у оператора A есть собственное значение λ , такое что λ > 1 , то при любой эквивалентной нормировке пространства норма оператора больше единицы. Выше уже отмечалось, что для существования у системы уравнений (2.1) неотрицательного решения x* = x* ( f ) для заданного неотрицательного вектора f достаточно, чтобы выполнялось неравенство: r ( A) < 1,
где r ( A) - спектральный радиус матрицы А. В этой связи отметим следующую теорему [4]. Теорема 5.1. Пусть A - линейный оператор, действующий в банаховом пространстве Е, r ( A) - спектральный радиус оператора A , ε>0 - произвольно заданное число. Тогда в пространстве Е можно ввести новую норму x ε , эквивалентную заданной норме пространства Е и такую, что будет выполняться неравенство: A ≤ r ( A) + ε .
Следствие. Для существования в пространстве Е по отношению к заданному оператору A - эквивалентной нормы, такой, что выполняется неравенство:
34 A 0 . Пусть α ≥ 0 и β ≥ 0 таковы, что αu0 ≤ Au0 ≤ β u0
(здесь и далее запись x ≥ y , x, y ∈ R n означает, что для всех i = 1, n выполняются неравенства ( x)i ≥ ( y )i ). Тогда α ≤ r ( A) ≤ β . При этом если α n , β n соответственно таковы, что α n = max{α : αu0 ≤ Anu0 }, β n = min{β : Anu0 ≤ β u0 },
то α n1 / n ≤ r ( A) ≤ β n1 / n
и при этом последовательности {α n1 / n } и {β n1 / n } сходятся, соответственно монотонно возрастая и монотонно убывая, к r ( A) .
35
На этом результате базируется следующий алгоритм построения монотонно сходящихся приближений к величине r ( A) , который в подробной записи имеет следующий вид. Пусть α n и β n определяются формулами ( Anu0 )i ( A nu0 )i α n = min ; β n = max . i =1 , n i =1, n (u 0 ) i (u 0 ) i
Замечание. Как следствие из работ Красносельского М.А., Стеценко В.Я. и др. [34], [36], [38], [39], [66], можно установить, что
некоторые под-
последовательности этих последовательностей являются сходящимися, причем их предел равен r ( A) . Тем самым построение этих последовательностей можно использовать для вычисления спектрального радиуса оператора A . Далее запись α n1 / n ↑ r ( A) означает факт монотонной сходимости “снизу” последовательности {α n1 / n } к спектральному радиусу r ( A) , а β n1 / n ↓ r ( A) - факт монотонной сходимости последовательности {β n1 / n } “сверху” к числу r ( A) . С помощью разности β 1/n n - α 1/n n можно контролировать степень близости соответствующих последовательностей к величине r ( A) . По предложенному в теореме 5.2 алгоритму автором была разработана соответствующая программа на языке программирования TURBO PASCAL. Пример 1. Пусть 0.1 0.2 A = 0.1 0.2 0.6
0.1 0.3 0.1 0.6 0.1
0.1 0.2 0.1 0.6 0.3
0.3 0.1 0.2 0.1 0.2
0.2 0.5 0.3 , 0.5 0.4
1 1 u0 = 1 . 1 1
Используя вышеизложенный алгоритм, найдем приближения (соответственно снизу и сверху) к спектральному радиусу матрицы A . Вычисления представим в виде таблицы.
36
Таблица 13 № п/п, n
α n1 / n ↑ r ( A)
β n1 / n ↓ r ( A)
1
0.800000
2.000000
2
1.081665
1.555634
3
1.134447
1.466982
4
1.172925
1.418077
8
1.228434
1.351138
16
1.257382
1.318685
32
1.272111
1.302752
64
1.279540
1.294858
Как можно заметить из таблицы, на уже на 64-м шаге значение спектрального радиуса данной матрицы A заключено между 1.279540 и 1.294858. Точное значение спектрального радиуса данной матрицы равно 1.287012. Этот алгоритм в аналогичной форме приемлем для получения оценок снизу, соответственно сверху для спектрального радиуса интегрального оператора вида Ax ( t ) =
∫ K ( t , s ) x ( s ) ds
(5.1)
Ω
с неотрицательным непрерывным ядром K (t , s) . В этом случае последовательности имеют вид α n = min t ∈Ω
∫K
n
( t , s ) u 0 ( s ) ds
Ω
u0 ( t )
, β n = max t ∈Ω
∫K
n
( t , s ) u0 ( s ) ds
Ω
u0 ( t )
,
где K n (t , s ) - n -ое итерированное ядро, а u0 (t ) - непрерывная и положительная на Ω функция. Отметим, что скорость сходимости последовательностей α 1/n n и β 1/n n к ве 1 n
личине спектрального радиуса r ( A) имеет порядок O . В связи с вышеизложенными результатами выясняется актуальность оценок спектрального радиуса r ( A) оператора A как в случае когда A – это
37
квадратная (n × n) матрица, так и в случае, когда A - интегральный оператор вида (5.1) . Важную роль в теории для справедливости принципа Хикса в случае интегрального уравнения с неотрицательным ядром играет условие вида (5.2)
r ( A) < 1 ,
где r ( A) - спектральный радиус интегрального оператора A с ядром K (t , s) . Естественно иметь признаки, обеспечивающие выполнение условия (5.2) . Необходимо получить соответствующие признаки для случаев, когда A : 10) A = (aij )
(i, j = 1, n);
20) A - интегральный оператор вида (5.1) , в котором Ω - ограниченное замкнутое множество из евклидова пространства R m , K (t , s) - функция, для которой при некоторых p > 1 и q =
p выполняется условие: p −1 1
q q | K ( t , s )| ds dt < +∞ . ∫ ∫ Ω Ω
(5.3)
При выполнении условия (5.3) оператор (5.1) , как известно, действует в пространстве Lp (Ω) и является вполне непрерывным оператором в этом пространстве [66]. Соответствующие признаки для случая 10) были получены в работах Стеценко В.Я. Получим соответствующие признаки для случая 20). Предварительно напомним определение неразложимости оператора. Положительный линейный оператор A назовем неразложимым, если из того, что x > θ , x ≥ αAx (α > 0 ) , следует, что x >> θ .
Введем в рассмотрение следующие функции P ( t ) = ∫ | K ( t , s)| ds , Ω
Q( t ) = ∫ | K ( s, t )| ds . Ω
Теорема 5.3. Пусть для некоторого α ∈ [0,1] выполняется следующее неравенство
38 Pα (t )Q1−α (t ) ≤ 1 , (t ∈ Ω )
(5.4)
и, кроме того, выполняется одно из двух следующих условий: 10) в неравенстве (5.4) равенство допускается лишь на множестве точек лебеговой меры нуль; 20) в неравенстве (5.4) строгое неравенство выполняется для всех t из некоторого множества ω ∈ Ω , mesω > 0 , оператор A - неразложим в пространстве L p (Ω ) . Тогда спектральный радиус r ( A) интегрального оператора A (5.1) в пространстве L p (Ω ) меньше чем единица: r ( A) < 1.
Доказательство. Не ограничивая общности, можно считать, что K (t , s) ≥ 0 , так как в противном случае мы бы перешли от оператора A к оператору A+ : A+ x ( t ) = ∫ | K ( t , s)| x ( s) ds , Ω
для которого выполняются все условия теоремы и ядро которого неотрицательно. Если для этого оператора будет доказано утверждение теоремы, т.е. если доказано, что r ( A+ ) < 1 , то учитывая неравенство r ( A) ≤ r ( A+ )
мы получим утверждение теоремы. Итак, оператор A положителен в L p (Ω ) . Положим Aλ = λ ⋅ A.
Очевидно Aλ , а, следовательно, и r ( Aλ ) непрерывно по λ , а так как A0 = θ и r ( A0 ) = 0 , то для всех достаточно малых λ > 0 выполнено неравенство r ( Aλ ) < 1.
Возможны два случая: 1) r ( A1 ) < 1 ; 2) r ( A1 ) ≥ 1 .
39
В первом случае теорема доказана, так как A1 = A . Во втором случае найдется хотя бы одно значение λ = λ0 ∈ (0;1] , для которого r ( Aλ ) = 1 . В этом слу0
чае r ( Aλ ) = 1 является собственным значением оператора Aλ , которому отве0
0
чает неотрицательная собственная функция x0 ( t ) ∈ Lp (Ω ): Aλ0 x0 (t ) = x0 (t ),
откуда в силу (5.4)
∫ Kλ (t , s) x (s)ds ≥ P
α
0
0
(t )Q1−α (t ) x0 (t ) ,
(5.5)
Ω
где Kλ ( t , s) = λ 0K ( t , s). 0
Установим, что в неравенстве (5.5) знак строгого неравенства имеет место на некотором множестве ω1 : ω1 ∈ Ω, mesω1 > 0 для каждого из случаев 10), 20). При условии 10) это утверждение очевидно. При условии 20) утверждение следует из того, что неотрицательная собственная функция положительного неразложимого оператора в пространстве L p (Ω ) , как квазивнутренний элемент конуса K неотрицательных функций
пространства L p (Ω ) , почти всюду в Ω принимает положительные значения. Замечая, что Kλ 0 ( t , s) = Kλα0 ( t , s) ⋅ Kλ1−0 α ( t , s)
и применяя к левой части в (5.5) неравенство Гельдера с показателями p=
1
α
,
q=
1 , 1− α
получим 1
1
p q ∫ Kλ 0 ( t , s) ds ∫ Kλ 0 ( t , s) x0q ( s) ds ≥ x0 ( t ) ≥ Pα ( t ) Q1−α ( t ) x0 ( t ). Ω Ω
Так как при этом Kλ 0 ( t , s) ≤ K ( t , s),
то
40 ∫ K (t , s )ds Ω
α
1−α
∫ K (t , s ) x0q ( s )ds Ω
≥ Pα (t )Q1−α (t ) x0 (t ) ,
(5.6)
причем здесь строгое неравенство выполняется для всех t ∈ ω1 , где ω1 ∈ Ω и mesω1 > 0 .
Нетрудно видеть, что для всех t ∈ Ω , для которых x0 (t ) > 0 выполняется также неравенство: P(t ) > 0 .
Действительно, если для некоторого множества ω1 , ω1 ∈ Ω , P(t ) = 0
(t ∈ ω1 ) ,
то в силу неотрицательности K (t , s) это означает, что для t ∈ ω1 , функция K (t , s ) как функция аргумента s на Ω эквивалентна нулю для всех t ∈ ω1 . То-
гда эквивалентна нулю для всех t ∈ ω1 на множестве Ω и функция K (t , s) x0 ( s) и поэтому для t ∈ ω1 x0 ( t ) = λ 0 ∫ K ( t , s) x0 ( s) ds = 0, Ω
т.е. x0 (t ) ≡ 0 для t ∈ ω1 . Сказанное означает, что из неравенства (5.6) следует неравенство ∫ K ( t , s) x0q ( s) ds Ω
1− α
≥ Q1−α ( t ) x0 ( t ),
(5.7)
причем в (5.7) знак строгого неравенства имеет место по крайней мере для t ∈ ω1 . Извлекая из обеих частей неравенства (5.7) корень степени (1 − α ) , а за-
тем, интегрируя по t на множестве Ω , получим
∫ dt ∫ K (t , s) x
q 0
Ω
Ω
( s )ds > ∫ Q(t ) x0q (t )dt. Ω
Меняя в левой части порядок интегрирования, найдем что
∫ Q( t ) x
Ω
q 0
( t ) dt > ∫ Q( t ) x0q ( t ) dt . Ω
Полученное противоречие доказывает невозможность неравенства r ( A1 ) ≥ 1.
Теорема доказана.
41
Аналогичный результат имеет место и в том случае, когда интегральный оператор Ax(t ) = ∫ K (t , s ) x( s )ds Ω
действует в пространстве С (Ω) и неразложим в этом пространстве относительно конуса неотрицательных функций пространства С (Ω) . §6. Построение приближений, сходящихся к собственному вектору линейного оператора Большое количество работ Крейна М.Г., Красносельского М.А., Стеценко В.Я. и др. посвящено проблеме отыскания собственных векторов как линейных, так и нелинейных операторов. В случае нелинейных операторных уравнений, проблема отыскания собственных векторов и собственных значений нелинейных операторов является существенно более сложной. В этом параграфе рассматривается задача на построение приближений к собственным значениям, собственным векторам, т.е. построение приближений к таким λ , x ∈ E , что λx = F (x) ,
(6.1)
где F (x) - линейный или нелинейный оператор, действующий в банаховом пространстве E . По аналогии с предыдущим материалом будем считать, что пространство E полуупорядоченно с помощью конуса Крейна K [36]. Предположим, что оператор F (x) положительный, т.е для ∀x ∈ K следует, что F ( x) ∈ K . При дополнительных предположениях относительно оператора F (x) , уравнение
(6.1)
имеет для некоторого значения λ = λ0 решение
x0 = x* (λ0 ) , принадлежащее K . Соответствующий вектор x0 естественно на-
звать собственным вектором оператора F (x) , отвечающим собственному значению λ0 . Точное значение собственного вектора может быть найдено лишь в весьма частных случаях, поэтому возникает задача о построении приближений к собственному вектору, с заданной степенью точности. При этом
42
особый интерес представляют методы позволяющие строить такие приближения un , vn к собственному вектору x* , которые удовлетворяют условию un ≤ x* ≤ vn
и при этом x* − un → 0 , x* − vn → 0 . В этом случае, естественно, называть элементы un и vn как приближения к собственному вектору x* по недостатку и соответственно по избытку. Предложим соответствующие способы построения собственных векторов и собственных значений для некоторых классов линейных операторов. Рассмотрим вначале случай линейного положительного оператора. Его, в отличие от случая нелинейного оператора, привычнее обозначать не буквой F , а буквой A . Уравнение (6.1) в этом случае перепишется в виде
λx = Ax .
Элементы
x, y ∈ K называются эквивалентными, если tx ≥ y и ty ≥ x при
некотором t > 0 . Конус K распадается на классы попарно эквивалентных элементов – компоненты эквивалентности. Для эквивалентных элементов x, y ∈ K определена величина
θ ( x, y ) =
inf {t : tx ≥ y} . sup{t : tx ≤ y}
Оператор A будем предполагать не только положительным, но и фокусирующим. Напомним определение фокусирующего оператора [36]. Определение 6.1. Оператор A называется фокусирующим на конусе K , если он u0 -положительный и если для всех x > θ , y > θ существует постоянная κ 2 , такая что θ ( Ax, Ay ) ≤ κ 2 .
При этом число κ назовем постоянной фокусирования [38]. Приведем критерий фокусирования. Утверждение 6.1. Для того чтобы положительный оператор A был фокусирующим, необходимо и достаточно, чтобы существовали такие u0 ∈ K , ρ − const , что для каждого x ∈ K выполняется неравенство
43
λ ( x)u0 ≤ Ax ≤ ρλ ( x)u0 .
(6.2)
Здесь u0 - фиксированный элемент конуса K . Это утверждение означает, что AK ⊂ K u , ρ . 0
Примерами фокусирующих операторов являются матрицы с положительными элементами. Лемма 6.1. Пусть x > θ , y > θ
и y ≤ bx ,
(6.4)
|| x||u0 =|| y||u0 = 1 .
(6.5)
x ≤ ay,
причем
Тогда функционал δ ( x, y ) = ln θ ( x, y ) обладает свойством: x ≤ eδ ( x , y ) y ,
y ≤ eδ ( x . y ) x.
(6.6)
Заметим, что δ ( x, y ) является полуметрикой на множестве всех сравнимых между собой по конусу K элементов [36]. Теорема 6.1. Если A - фокусирующий оператор с постоянной фокусирования κ , тогда для всех x , y ∈ Ku [36]: 0
δ ( Ax , Ay ) =
κ −1 δ (x , y ) , κ +1
т.е. в полуметрике δ ( x, y ) фокусирующий оператор является оператором сжатия на множестве Ku с постоянной q : 0
q≤
κ −1 < 1. κ +1
(6.7)
В случае, когда A - матрица с положительными элементами, постоянная фокусирования определяется следующей теоремой [38]. Теорема 6.2. Константа фокусирования относительно конуса K + ⊂ R n линейного оператора А порожденного матрицей A с положительными элементами aij определяется равенством κ ( A, K+ ) = max i , j , p ,q
Для всех x ∈ Ku определим оператор Aˆ : 0
aip a jq a jp aiq
.
44 Aˆ x =
Оператор
Aˆ
рассмотрим
Ax . || Ax ||u 0
на
множестве
E1 = Ku0 ∩ S1 ,
где
{
S1 = x: x ∈ Eu0 ,|| x||u0 = 1 } . Полуметрика δ ( x, y ) , рассматриваемая на E1 , является
метрикой. В самом деле, из равенства δ ( x, y ) = 0 ( x, y ∈ E1 ) следует, что x = µy, µ > 0 , но так как || x||u0 =|| y||u0 = 1 ,
то µ = 1, т.е. x = y . Оператор Aˆ является на E1 оператором сжатия этого метрического пространства, последний факт доказан в [38]. В силу сказанного Aˆ имеет в E1 единственную неподвижную точку x* : Aˆ x* = x*
т.е. Ax * =|| Ax * ||u0 x *
и к x* сходится метод последовательных приближений xn +1 = Aˆ xn ,
(n = 0,1,2,...)
при любом начальном приближении x0 ∈ Ku , x0 ≠ θ . 0
При этом на основании утверждения принципа сжатых отображений имеет место следующая оценка близости xn к x* : qn δ ( x , xn ) ≤ δ ( x1 , x0 ) . 1− q *
Здесь δ ( x, y ) определяется следующим образом. Пусть x ≤ t1 y,
(6.8) y ≤ t2 x , то-
гда δ ( x, y ) = ln max(t1 , t2 ) . Тем самым установлена справедливость следующей теоремы. Теорема 6.3. Пусть A - фокусирующий оператор с постоянной κ .Тогда A имеет в Ku0 собственный вектор x* , которому отвечает собственное
значение λ1 . К этому вектору x* сходится метод xn + 1 =
Axn || Axn ||u0
(n = 0,1,2,...)
45
при любом x0 ∈ Ku , x0 ≠ θ . При этом справедлива оценка близости (6.8) , где q 0
удовлетворяет неравенству (6.7) . К собственному вектору x* также сходятся последовательности un и vn , которые удовлетворяют следующему неравенству un ≤ x* ≤ vn
где a un = b b vn = a
κ −1 κ −1 ⋅ 2 κ +1
κ −1 κ −1 ⋅ 2 κ +1
n
Aˆ n x0 ,
(6.9)
Aˆ n x0 ,
(6.10)
n
а постоянные a и b таковы, что ax0 ≤ Ax0 ≤ bx0 .
Ясно, что коэффициенты в правой части (6.9) и (6.10) при n → ∞ стремятся к единице. Как уже отмечалось в последней теореме последовательность Aˆ n x0 сходится к собственному вектору x* , в силу чего un и vn сходятся к x* по норме пространства Е. Итак, мы получили возможность строить последовательности un и vn , сходящиеся к x* , при этом un сходится по норме пространства E снизу, а vn сверху. Если теперь вместо оператора A взять сопряженный оператор A* , то учитывая, что этот оператор является положительным в E * относительно полугруппы K * , мы аналогичным образом получим способ построения приближений l1( n ) , l2( n ) , к собственному функционалу l * оператора A* : l1( n ) ≤ l * ≤ l2( n ) .
С помощью этих последовательностей мы на основании λ0 − r ( A) =
можем утверждать, что
l0 (v0 ) l0 (u0 )
46
λ0 −
l2( n ) (v0 ) l1( n ) (v0 ) ≤ ≤ λ + , r ( A ) 0 l1( n ) (u0 ) l2( n ) (u0 )
а это позволяет строить две последовательности, сходящиеся к r ( A) , соответственно, снизу и сверху, тем самым с любой точностью находить значение спектрального радиуса r ( A) оператора A . Проиллюстрируем эти результаты соответствующими примерами. Пример 1. Пусть 1 3 A= , 2 1
1 u0 = , 1
1 x0 = . 1
В данном примере точное значение собственного вектора, отвечающего 1 . 0.816
ведущему собственному значению λ1 : x * =
Выберем в данном примере n=7. Используя метод, описанный в теореме 6.3 получим приближения к соответствующим координатам собственного вектора x* . Представим эти приближения в виде следующей таблицы. Таблица 14 №
п/п,
Приближения к координатам вектора x*
n
x1
x2
1
1
0.750000
2
1
0.846154
3
1
0.804348
4
1
0.821656
5
1
0.814338
6
1
0.817405
7
1
0.816115
Теперь, на основании теоремы 6.3, получим приближения к соответствующим координатам собственного вектора x* “снизу” и “сверху”. В данном примере a=3, b=4, κ=2.449. Эти приближения также представим в виде таблицы.
47
Таблица 15 № п/п, n
un
vn
1
0.91612 0.68709
1.09156 0.81867
2
0.96385 0.81557
1.03750 0.87789
3
0.98465 0.79200
1.01559 0.81689
4
0.99352 0.81633
1.00652 0.82701
5
0.99727 0.81212
1.00274 0.81657
6
0.99885 0.81647
1.00115 0.81834
7
0.99952 0.81572
1.00048 0.81651
Используя формулу (6.8) , оценим в какой близости от точного решения x* на 7-м шаге мы находимся: δ ( x7 , x* ) = 0.00114 . В приведенном примере приближение x0 = (1;1)T случайно оказалось достаточно близким от x* в метрике δ ( x, y ) : δ ( x0 , x* ) = 0.49617 .
Возьмем теперь начальное приближение x0 = (1;4)T , сильнее отклоняющееся от x* : δ ( x0 , x* ) = 3.72455 .
В этом случае получим последовательно x1 = (1;0.46)T , x2 = (0.97;1)T ≈ x0 .
Отметим, что для получения приближения с той же точностью, что и при выборе x0 = (1;1)T нам понадобится в этом новом случае всего на две итерации больше, чем в предыдущем случае, т.е. пример говорит о том, что данный метод не очень “чувствителен” к выбору начального приближения x0 .
48
Пример 2. Пусть . 01 0.2 A = 01 . 0.2 0.6
01 . 0.3 01 . 0.6 01 .
01 . 0.3 0.2 1 0.2 01 . 0.5 1 01 . 0.2 0.3 , u0 = 1 , 0.6 01 . 0.5 1 0.3 0.2 0.4 1
1 2 x0 = 3 . 4 1
В данном примере точное значение собственного вектора, отвечающего 0.483 0.693 ведущему собственному значению λ1 : x * = 0.467 . Возьмем 10 итераций, ис 1 0.788
пользуя метод, описанный в теореме 6.3, получим приближения к соответствующим координатам собственного вектора x* . Представим эти приближения в виде следующей таблицы. Таблица 16 № п/п, Приближения к координатам вектора x* n
x1
x2
x3
x4
x5
1
0.487805
0.560976
0.414634
1
0.707317
2
0.517167
0.706009
0.491416
1
0.841202
3
0.476503
0.695812
0.464674
1
0.793159
4
0.483112
0.693664
0.467055
1
0.785725
5
0.483335
0.692887
0.466967
1
0.788263
6
0.483425
0.693335
0.466967
1
0.788628
7
0.483303
0.693293
0.466882
1
0.788491
8
0.483326
0.693289
0.466892
1
0.788472
9
0.483326
0.693286
0.466890
1
0.788480
10
0.483326
0.693288
0.466891
1
0.788481
Теперь, на основании теоремы 6.3, получим приближения к соответствующим координатам собственного вектора x* “снизу” и “сверху”. В данном примере a = 0.56, таблицы.
b = 2.9, κ = 6 . Эти приближения также представим в виде
49
Таблица 17 № п/п, un
vn
1
0.02643 0.03039 0.02246 0.05418 0.03832
9.00416 10.35478 7.65354 18.45853 13.05603
2
0.06445 0.08798 0.06124 . 012462 . 010483
4.15009 5.66548 3.94345 8.02466 6.75035
3
. 010766 . 015721 010499 . 0.22593 . 017920
2.10904 3.07972 2.05668 4.42608 . 351058
4
. 016696 0.23972 016141 . 0.34559 0.27154
1.39794 2.00720 1.35148 2.89362 2.27359
5
0.22628 0.32439 0.21848 0.46816 0.36904
1.03240 1.48001 0.99681 2.13600 1.68373
6
0.28112 0.40319 0.27155 0.58153 0.45861
0.83130 . 119226 0.80300 1.71961 1.35613
n
50 7
0.32814 0.47071 0.31699 0.67895 0.53534
0.71184 1.02113 0.68766 1.47287 . 116134
8
0.36654 0.52577 0.35408 0.75837 0.59796
0.63732 0.91418 0.61565 1.31861 1.03969
9
0.39668 0.56900 0.38319 0.82073 0.64713
0.58890 0.84472 0.56887 1.21842 0.96070
10
0.41972 0.60205 0.40544 0.86839 0.68471
0.55658 0.79836 0.53765 . 115155 0.90798
Ниже предлагаются два алгоритма построения собственных векторов x* и l * операторов
A и A* , соответствующего значению λ1 .
Пусть A - неразложимый вполне непрерывный положительный оператор, u0 - фиксированный внутренний элемент K , α n
и β n - последовательности
такие, что α n = inf {α : Anu0 ≤ αu0 , u0 >> θ }, β n = sup{β : Anu0 ≥ βu0 , u0 >> θ }.
Построим последовательности: 1−
1 n
1−
2 n
1 n n
1−
1 n
1−
2 n
1 n n
un = β n u0 + β n Au0 + ... + β An − 2u0 + An −1u0 , vn = α n u0 + α n Au0 + ... + α An − 2u0 + An −1u0 .
Тогда согласно результатам [66] последовательности
51 A
un , Aun
A
vn Avn
сходятся к единственному нормированному вектору оператора A , отвечающего собственному значению r ( A) . Для отыскания l * проводятся аналогичные построения применительно к сопряженному оператору A* . Пусть A - линейный положительный оператор, действующий в банаховом пространстве E , полуупорядоченном конусом K , то есть AK ⊂ K . Как известно [36,38,69] в этом случае оператор A , при некоторых дополнительных предположениях, имеет в K собственный вектор x* , отвечающий спектральному радиусу r ( A) оператора A : Ax* = r ( A) x*.
Занумеруем собственные значения λ оператора A в порядке убывания их абсолютных величин, то есть r ( A) = λ1 ≥ λ2 ≥ ... ≥ λn . Тогда всякая точка λ спектра σ ( A) оператора A удовлетворяет неравенству λ ≤ r ( A) = λ1 ,
(λ ∈ σ ( A) ).
Для различных классов положительных операторов (сильно положительные, u0 - положительные, фокусирующие, острые [36,38,69]) гарантировано строгое неравенство λ < r ( A)
(λ ∈ σ ( A), λ ≠ λ1 ) .
(6.11)
Дополнительно предположим, что E = H - гильбертово пространство, A самосопряженный положительный оператор, то есть A* = A . Пусть y0 ∈ K , y0 ≠ θ , l0 ∈ K * , l0 ≠ θ . Положим τ1 =
l0 ( Ay0 ) l0 ( y0 )
и определим элементы l1 = y1 = τ 1 Ay0 , l2 = y2 = τ 2 Ay1.
Вообще, пусть уже определены τ n −1 , yn −1 , ln −1. Положим
52
τn =
ln −1 ( Ayn −1 ) , ln −1 ( yn −1 )
ln = yn = τ n Ayn −1.
Для определенности последовательностей {τ n }, {yn }, {ln } необходимо и достаточно выполнения условия ln ( yn ) ≠ 0 для любого n . Для этого, например, достаточно, чтобы оператор A был неразложимым [36]. Наряду с последовательностью {yn } образуем последовательность xn = ϕ n = An y0
(n = 1,2,...) .
Ясно, что для каждого n l2 = y2 = (τ 2 ⋅ τ 1 )x2 = (τ 2 ⋅ τ 1 )ϕ 2 ,...,
l1 = τ 1 x1 = τ 1ϕ1 ,
n n ln = yn = ∏τ i xn = ∏τ i ϕ n . i =1 i =1
Поэтому τn =
ln −1 ( Ayn −1 ) ϕ n −1 ( Axn − 1 ) = . ϕ n − 1 ( xn − 1 ) ln −1 ( yn −1 )
Положим xn
x n(1) =
xn
=
ϕn ϕn
= ϕ n(1) ,
тогда, как легко видеть, имеет место неравенство τn =
В силу (6.11)
ϕ n(1−)1 ( Axn(1−)1 ) ϕn(1−)1 ( xn(1−)1 )
(n = 1,2,...) .
(6.12)
последовательности {xn(1) } = {ϕ n(1) } сходятся к собственному
вектору x* = ϕ * оператора A = A* , и поэтому в силу (6.12) последовательность
{τ n } сходится к числу λ1 =
ϕ * ( Ax* ) . ϕ * ( x* )
Аналогичным свойством сходимости к λ1 обладает последовательность tn =
l0 ( Ayn −1 ) , l0 ( yn −1 )
53 λ n при этом разность tn − λ1 имеет порядок Ο 2 . Оказывается , что после λ 1
довательность {τ n } имеет более высокую скорость сходимости, а именно λ 2 n τ n − λ1 = Ο 2 . λ1
Естественно теперь распространить этот метод на операторы, действующие
в
банаховом
пространстве
E
с
конусом
K.
Исходя
из
y0 ∈ K , y0 ≠ θ , l0 ∈ K * , l0 ≠ θ , положим
τn =
ln −1 ( Ayn −1 ) , (n = 1,2,...) ln −1 ( yn −1 )
где ln = τ n A*ln −1 ,
yn = τ n Ayn −1
(n = 1,2,...) .
Пусть x* , l * - собственные векторы операторов A, A* , соответственно, x* ∈ K , l * ∈ K * такие, что
x * = l * =1. Тогда имеют место асимптотические
оценки λ 2 n τ n − λ1 = Ο 2 , λ1
x* −
yn yn
,
λ n ln l − = Ο 2 . ln λ 1 *
В отличие от самосопряженного оператора здесь, хотя объем работы возрастает в два раза, мы получаем приближения не только к собственному значению λ1 и собственному вектору x* оператора A , но и к собственному вектору l * сопряженного оператора A* . По предложенным
выше алгоритмам, автором были составлены про-
граммы на языке программирования TURBO PASCAL. Выше оператор A предполагался линейным. Построим приближения к собственному вектору x* для некоторых классов нелинейных операторов F ( x) . Выделим соответствующий класс нелинейных операторов F ( x) , дейст-
54
вующих в полуупорядоченном банаховом пространстве, являющимися монотонными относительно нормального конуса K и такими, что F (αx) ≤ α µ F ( x)
для всех x ∈ K и α ∈ [1;+∞ ], где µ < 1, µ − const . Если в полуупорядоченном банаховом пространстве E с конусом K ввести следующую метрику: для двух элементов x, y ∈ K таких, что x ≤ λy ,
y ≤ µx
(6.13)
положить d ( x, y ) = ln max{λ0 , µ0 },
где λ0 , µ0 , соответственно, точные нижние и верхние границы всех чисел λ , µ для которых выполняются неравенства (6.13) , то, во-первых, d ( x, y ) удовлетворяет всем аксиомам метрики и во-вторых, для нормального конуса K всякая компонента связности Ck конуса K становится полным метрическим пространством в метрике d ( x, y ) , а оператор F ( x) является оператором сжатия соответствующей компоненты связности. При этом собственные векторы оператора F ( x) из конуса K являются неподвижными точками оператора 1
λ
F ( x ) , а каждая фундаментальная по метрике d ( x, y )
последовательность
элементов {xn } является фундаментальной и по норме пространства E и наоборот. При этом пределы последовательностей {xn } по норме пространства E и по метрике d ( x, y ) совпадают.
Из этого в силу принципа Банаха сжатых отображений следует справедливость следующей теоремы. Теорема 6.4. Пусть конус K нормален и пусть для некоторых u0 > θ элементы u0 и F (u0 ) принадлежат одной составляющей конуса K . Тогда для всех λ , ( λ > 0 ) оператор F ( x) имеет на составляющей Ck (u0 ) собственный вектор x* (λ ) , отвечающий собственному значению λ . Этот вектор может быть построен методом последовательных приближений
55
xm +1 (λ ) =
1
λ
F ( xm (λ ) )
при любом начальном приближении x0 ∈ Ck (u0 ) . При этом справедлива оценка близости d ( x * (λ ), xm+ 1 (λ )) ≤
µm d ( x1 (λ ), x0 (λ )) . 1− µ
(6.14)
Замечание. Неравенство (6.14) позволяет также получить оценку относительной погрешности для приближений
xm +1 (λ ), т.е. оценку величины
|| x * (λ ) − xm+1 (λ )|| , || x * (λ )||
и позволяет утверждать, что в методе последовательных приближений наряду с абсолютной погрешностью, так же и относительная погрешность приближенного решения стремится к нулю. Последнее крайне важно, так как в линейных задачах на собственные векторы определяющим в оценке точности полученного приближения является именно оценка относительной погрешности полученного приближения.
56
ГЛАВА 3. НОВЫЕ АЛГОРИТМЫ И МЕТОДЫ ПОСТРОЕНИЯ ПРИБЛИЖЕНИЙ, СХОДЯЩИХСЯ К ТОЧНОМУ РЕШЕНИЮ ОПЕРАТОРНОГО УРАВНЕНИЯ ВИДА x = Ax + f §7. Об одном итерационном методе решения системы линейных алгебраических уравнений вида x = Ax + f с квадратной матрицей A , в случае, когда спектральный радиус матрицы A , больше чем единица В работе [69] был предложен метод решения уравнения вида x = Ax + f
(7.1)
с матрицей A , спектральный радиус которой больше единицы. Этот метод основан на переходе от уравнения вида (7.1) к уравнению y = By + g
(7.2)
с матрицей B , спектральный радиус которой меньше, чем спектральный радиус матрицы A (r ( B) < r ( A) ) . Данный метод был реализован [69] для неотрицательных матриц A , спектральный радиус которых больше единицы. Однако этот метод обладает существенно большими потенциальными возможностями, в силу которых мы предлагаем прием решения уравнений вида (7.1) с матрицами A , необязательно являющихся неотрицательными матрицами. Данный прием основан на предварительном преобразовании уравнения (7.1)
к новому уравнению вида (7.2) , для которого, в случае
выполнения определенных условий, будет выполнено неравенство: r ( B) < 1
и, следовательно, для решения которого может быть использован метод последовательных приближений: xm +1 = Bxm + f ,
(m = 0,1,...)
при любом начальном приближении x0 . Переходим к описанию этого метода. Занумеруем собственные значения λ матрицы A в порядке убывания их абсолютных величин, т.е. ρ(A)=λ1≥|λ2|≥...≥|λn|. Тогда всякая точка λ спектра
57
σ(A) матрицы A удовлетворяет неравенству |λ|≤ρ(A)=λ1
(λ∈σ(A)).
Хорошо известно [34,36,38], что при некоторых дополнительных предположениях число λ = r ( A) является собственным значением матрицы A и собственным значением сопряженной матрицы, которой отвечают собственный вектор x* ∈ K матрицы A и собственный функционал l * ∈ K * матрицы A* , где K * - сопряженная к K полугруппа (т.е. совокупность всех линейных
функционалов,
принимающих
на
элементах
конуса
K
неотрицательные значения): Ax* = r ( A) x* ,
A*l * = r ( A)l * .
Способы отыскания этих собственных векторов приведены в Главе II. Собственные векторы матрицы A и A* , и собственное значение λ , необходимы нам для реализации преобразов55ания, уменьшающего спектральный радиус матрицы A , входящей в уравнение (7.1) . Ниже предполагается, что A - вполне непрерывный оператор. Соответствующий метод основан на результатах работ В.Я Стеценко, Т.А. Костенко, В.А. Семилетова и заключается в следующем. Пусть у оператора A среди собственных значений только одно больше единицы, тогда: l * матрицы A и A* , 10) нормируем собственные векторы x* и соответственно условием l * ( x* ) = 1; 20) по матрице A строим матрицу B согласно формуле def
Bx = Ax − λ1l * ( x) x* ,
где λ1 = r ( A) . При этом явный вид матрицы B может быть найден по виду матрицы A и виду векторов x* и l * . Спектр матрицы B расположен внутри круга с центром в начале координат и радиусом равным единице, что позволяет применять для решения уравнения с матрицей
B
метод
последовательных приближений. Как установлено в [69] наибольшее собственное значение матрицы B будет совпадать со вторым собственным значением λ2 матрицы A , при этом λ2 < λ1 и, следовательно, спектральный радиус матрицы B будет меньше
спектрального радиуса матрицы A . Если при этом λ2 < 1 , то матрица B
58
является оператором сжатия. В этом случае соответствующее уравнение (7.2) имеет и притом единственное решение и это решение можно получить по методу последовательных приближений ym +1 = Bym + g
(m = 0,1,...)
при этом мы можем найти это решение с любой наперед заданной точностью. Указанная схема позволяет решать уравнения с оператором A (ρ(A)>1, |λ2| 1 . Повторно применяя к матрице B1 преобразование (7.3) (при этом для отыскания собственных векторов x* и l * матриц B1 и B1* , ( B1* - матрица сопряженная B1 ) и спектрального радиуса матрицы B1 в качестве начального приближения взяты векторы l0 = (2,1,1)T и y0 = (1,1,2 )T ), получаем матрицу B2 :
62 − 0.0394 − 0.1641 0.5903 0.4365 0.3302 , B2 = 0.0627 0.1661 − 0.1439 0.1672
у которой r ( B) = 0.6 < 1. С помощью метода последовательных приближений решаем уравнение x = B2 x + f . После 45 итераций получаем следующее приближение к решению
уравнения x = B2 x + f : 1.5125 x45 = 1.1825 . 1.2980
Далее, подставив xB1 ≈ x45 + cB1 ⋅ xB*1 ,
в уравнение x = B1 x + f находим cB , а затем соответственно x B1 - решение 1
уравнения вида x = B1 x + f . Аналогично, подставив x A ≈ xB1 + c A ⋅ x*A
в уравнение (7.1) , найдем − 0.1667 x A = − 0.3333 . 0.0000
В действительности существуют и такие примеры, в которых даже после двукратного использования преобразования (7.3)
получаем некоторую
матрицу, спектральный радиус которой все еще больше единицы. Продолжая применять преобразование (7.3) к только что полученной матрице мы можем рассчитывать получить такую матрицу, спектральный радиус которой меньше единицы (это возможно только в случаях, если среди собственных значений исходной матрицы исходной матрицы A есть значение меньше единицы), что позволяет применить к ней метод последовательных приближений для отыскания решения уравнения вида x = Bs x + f , где s общее количество полученных матриц
B.
Связь между решениями
63
уравнений вида x = Bs −1 x + f и x = Bs x + f
можно установить следующей
формулой:
x B s − 1 = x n ( B s ) + c B s − 1 ⋅ x B* s − 1
(7.6)
,
где Bs - последняя полученная матрица, для которой r ( Bs ) < 1 , n - число итераций для уравнения вида x = Bs x + f ,
cBs −1 - скалярный множитель, x B* s − 1
- собственный вектор матрицы Bs −1 , отвечающий r ( Bs −1 ) ,
xn ( Bs ) - вектор решения уравнения вида x = Bs x + f ,
xBs −1
- вектор решения уравнения вида x = Bs −1 x + f .
При этом A = B0 . Пример 3. Рассмотрим систему вида (7.1) , где 1 2 A= 4 3
1 1 2 1
2 3 3 1
3 1 , 2 1
1 1 f = . 1 1
Применяя способ, изложенный в §6, отыскания собственных векторов x* и l * матриц A и A* , а также спектрального радиуса матрицы A (при этом в качестве начального приближения взяты векторы l0 = (2,1,1,1)T и
y0 = (1,2,1,1)T ),
находим: 0.4229 0.6156 0 . 4741 0 . 3168 r ( A) = 7.87, x* = , l* = . 0.6866 0.5446 0.3534 0.4732
Используя преобразование (7.3) к матрице A , получаем матрицу B1 : 1.4239 − 1.0503 − 0.0553 0.1859 0.7666 − 0.2983 − 0.1829 0.9666 B1 = , 0.6715 0.2869 0.0551 − 0.5585 1.2867 0 . 1182 0 . 5158 0 . 3170 − −
у которой r ( B) = 2.3 > 1 .
64
Повторно применяя к матрице B1 преобразование (7.3)
(при этом для
отыскания собственных векторов x* и l * матриц B1 и B1* , ( B1* - матрица сопряженная B1 ) и спектрального радиуса матрицы B1 в качестве начального приближения взяты векторы l0 = (1,2,1,1)T и y0 = (1,1,2,1)T ), получаем матрицу B2 : 2.4086 − 2.3265 − 0.1969 0.5630 − 0.3980 − 0.1940 0.9960 − 0.6897 B2 = , 1.2944 0.3560 − 0.1290 − 1.0391 2.2968 0.2302 − 0.8143 − 1.0963
у которой r ( B2 ) все еще больше единицы. В случаях многократного использования формулы (7.3) при реализации предложенного метода, можно установить общую связь между матрицами Bs −1 и Bs , считая что A = B0 :
B s x = B s − 1 x − r ( B s − 1 ) ⋅ l B* * ( x ) ⋅ x B* s − 1
(7.7)
s−1
Повторно применяя к матрице B2 теперь уже преобразование (7.7) (при этом для отыскания собственных векторов x* и l * матриц B2 и B2* ,
( B2* -
матрица сопряженная B2 ) и спектрального радиуса матрицы B2 в качестве начального приближения взяты векторы l0 = (1,1,1,2)T и y0 = (2,1,1,1)T ), получаем матрицу B3 : 0.0847 − 0.1892 0.4509 0.2148 − 0.1994 − 0.1720 0.9373 − 0.8426 B3 = , 0.0540 0.2186 0.2382 − 0.0836 0.2854 − 0 . 0074 0 . 2189 0 . 4532
у которой r ( B3 ) = 0.81 < 1 . С помощью метода последовательных приближений решаем уравнение x = B3 x + f .
После 30 итераций получаем следующее приближение к решению уравнения x = B3 x + f :
65 2.5381 − 0.7879 x30 (B3 ) = . 0.9645 2.7556
Далее
используя
формулу
(7.6) ,
получаем
решение
исходного
уравнения (7.1) : 0.9983 − 2.4958 xA = . − 1.4983 1.4974
Возможности применения этого метода достаточно значительны, о чем в частности свидетельствуют рассмотренные выше примеры. §8. Получение двусторонних оценок точного решения x* операторного уравнения вида x = Ax + f , в случае, когда
спектральный радиус не обязательно меньше единицы. В данном параграфе предлагается метод получения оценок вида u ≤ x* ≤ v ,
(8.1)
где x* - решение линейного операторного уравнения второго рода x = Ax + f ,
(8.2)
где A - линейный оператор, действующий в пространстве E , f - заданный элемент пространства E . Пространство E предполагается полуупорядоченным при помощи конуса K , неотрицательных элементов.
При этом в параграфе используются понятия и терминология банаховых пространств, полуупорядоченных с помощью конуса Крейна K (K ⊆ E ) . Наличие оценок вида (8.1) , которые естественно назвать двусторонними оценками решения, представляется достаточно важным и информативным. В самом деле оценка вида (8.1)
позволяет утверждать, что нам известны
приближения un к решению x* уравнения (8.2) «по недостатку», а также
66
приближения vn к x* «по избытку», при этом элементы x* − un , и vn − x* представляются как оценки (векторные) для решения x* . Если конус K обладает свойством нормальности, то величина погрешности, с которой мы знаем эти приближения к решению x* , характеризуется нормой разности δ , которое не превосходит величины v − u : δ ≤ v−u .
Отсюда следует важность получения оценок u, v решения x* . Отметим, что для отыскания приближений un , vn , известны разные методы [36]. В данном параграфе предлагаются новые подходы к получению таких оценок u, v неизвестного решения x* уравнения (8.2) . Соответствующие оценки базируются на следующих теоремах [66]: Теорема
8.1.
Пусть
xn − p , xn , xn + p
(n = 0,1,2,...)
соответствующие
приближения к решению x* метода последовательных приближений xm +1 = Axm + f .
(m = 0,1,2,...) .
(8.3)
Подчеркнем, что при этом сходимость этих последовательных приближений к x* заранее не предполагается. Пусть постоянная γ такова, что γ ∈ [0;1) и при этом выполнено неравенство xn + p − xn ≤ γ (xn − xn − p ).
(8.4)
Тогда для решения x* уравнения (8.2) (если это решение существует) справедлива следующая оценка x * ≤ xn + p +
γ 1− γ
( xn + p − xn ) ,
которую естественно назвать априорной оценкой “сверху” неизвестного решения x* . Теорема
8.2.
Пусть
xn − p , xn , xn + p
(n = 0,1,2,...)
соответствующие
приближения к решению x* метода последовательных приближений (8.3) . Пусть постоянная β неравенство
такова, что β < 1 и при этом выполняется
67
β (xn − xn − p ) ≤ xn + p − xn ,
(8.5)
тогда справедлива следующая априорная оценка “снизу” для неизвестного решения x* : x * ≥ xn + p +
β 1− β
( xn + p − xn ) .
Важно подчеркнуть, что приведенные оценки “снизу” и “сверху” являются на самом деле достаточно точными даже в тех случаях, когда приближения xn − p , xn , xn + p (n = 0,1,2,...) достаточно далеки от точного решения x* . Удивительным является и тот факт, что оценки “снизу” и “сверху” для x*
могут
сходиться
к
решению
даже
последовательных приближений (8.3)
в
том
случае,
когда
метод
вообще не сходится (последнее
заведомо будет иметь место в случае когда спектральный радиус оператора A больше чем единица). Предложенные ниже примеры иллюстрируют такую
ситуацию. Приведем примеры применения вышеизложенного метода получения двусторонних оценок. Пример 1. Рассмотрим уравнение вида (8.2) , где 0.1 0.12 A = 0.15 0.1 0.14
0.15 0.14 0.11 0.1 0.13
0.13 0.14 0.13 0.11 0.12 0.1 0.13 0.13 0.17 0.1
Точное решение данного уравнения
радиус r ( A) = 0.6199 .
0.1 0.14 0.12 , 0.12 0.12
1 2 f = 3 . 4 5
5.85367655 7.04617563 x* = 7.64556639 , а спектральный 8.61739842 10.11023145
68 1 1 В качестве начального приближения выберем вектор x0 = 1 . Выбрав в 1 1
данном примере n = 4 , p = 2 , получим: 3.2332000 4.3282000 x2 = 5.1026000 6.1686000 7.3192000
4.8478793 6.0010283 x4 = 6.6679146 , 7.6764155 9.0362385
5.4670630 6.6444378 x6 = 7.2697728 . 8.2557006 9.6974076
Используя (8.4) , (8.5) , получаем γ и β : γ = 0.38506, β = 0.38347 .
Тогда точное решение x* исходного уравнения заключено между следующими границами: 5.85479 5.85219 7.04733 7.04463 7.64412 ≤ x* ≤ 7.64665 . 8.61844 8.61601 10.11142 10.10865
Итак, здесь точность вычислений составляет 10−2 . Пример 2. Рассмотрим уравнение вида (8.2) , где . 013 . 0.31 0.2 011 0.37 0.241 0.33 01 . A= , 0.34 0.32 0.3 0.2 . 0.24 0.2 0.31 01
Точное решение данного уравнения
радиус r ( A) = 0.9388 .
1 1 f = . 1 1
12.80737245 18.32392049 * x = , а спектральный 20.26207124 14.82644337
69 1 1 В качестве начального приближения выберем вектор x0 = . В данном 1 1
примере выбрав n = 4 , p = 1 , получим: 3.0636876 3.9727109 x3 = , 4.3060713 3.3881505
3.6598517 4.8508063 x4 = , 5.2823728 4.0880412
4.2195602 5.6751766 x5 = . 61989277 . 4.7450875
Найдем γ и β используя (8.4) , (8.5) : γ = 0.93885, β = 0.93878 .
Тогда точное решение x* исходного уравнения заключено между следующими границами: 12.81289 12.80306 18.31743 ≤ x * ≤ 18.33192 . 20.27100 20.25490 14.83287 14.82132
Любопытно отметить, что оценку для решения мы получаем и в том случае, когда спектральный радиус оператора A больше единицы (r ( A) > 1) , т.е. в случае когда метод последовательных приближений заведомо расходится. Приведем соответствующий этому случаю пример. Пример 3. Рассмотрим уравнение вида (8.2) , где 0.43 0.5 A= 0.44 0.2
011 . 0.232 0.41 0.52 0.31
0.33 0.3 01 .
Точное решение данного уравнения
радиус r ( A) = 1.2923 .
0.4 01 . , 0.4422 0.51
1 1 f = . 1 1
−2.8541858 −3.9317454 * x = , а спектральный −4.9413177 −2.62002046
70 1 1 В качестве начального приближения выберем вектор x0 = . Выбрав 1 1 n = 5, p = 2 , получим: . 55789683 11.2320483 20.6730281 . . 6.5091982 135079548 251967418 . x3 = ,x = ,x = 7.7995472 5 16.3381634 7 30.6004789 5.3022657 10.6108577 19.4786376
Используя (8.4) , (8.5) получим γ и β : γ = 1.67046, β = 1.67006.
Тогда точное решение x* исходного уравнения заключено между следующими границами: −2.84934 −2.85772 −3.93645 ≤ x * ≤ −3.92608 . −4.93433 −4.94699 −2.61559 −2.62346
Важно также подчеркнуть, что приближения xn − p , xn , xn + p (n = 0,1,2,...) могут быть получены не только по методу последовательных приближений, но и по методу однопараметрического итеративного агрегирования [72]. В данном случае получим два вектора, находящиеся в определенной степени близости от точного решения x* , причем точность полученных таким способом векторов будет выше, чем точность соответствующих
приближений,
полученных по методу однопараметрического итеративного агрегирования. Отметим также, что хотя при помощи этих векторов нельзя будет оценить точное решение x* «снизу» и «сверху», тем не менее, их степень точности будет намного выше, чем у соответствующих оценок точного решения x* . Приведем соответствующий пример. Пример 4. Рассмотрим уравнение вида (8.2) , где
71 0.43 0.5 A= 0.44 0.2
011 . 0.232 0.41 0.52 0.31
0.33 0.3 01 .
Точное решение данного уравнения
0.4 01 . , 0.4422 0.51
1 1 f = . 1 1
−2.8541858 −3.9317454 * x = , а спектральный −4.9413177 −2.62002046
радиус r ( A) = 1.2923 . 1 1 В качестве начального приближения выберем вектор x0 = . Выбрав 1 1 n = 5, p = 2 , получим: −2.8475888 −2.8533233 −2.8542158 . −38955860 −3.9328087 −3.9318695 x3 = , x5 = , x7 = . −4.8900915 −4.9414894 −4.9415040 −2.5896551 −2.6192712 −2.6201374
Используя (8.4) , (8.5) получим γ и β : γ = 0.15564, β = −0.02523.
Тогда точное решение x* исходного уравнения можно оценить при − 2.85419 − 3.93189 помощи векторов − 4.94150 − 2.62011
− 2.85438 − 3.93169 и , при этом не обязательно точное − 4.94150 − 2.62029
решение x* заключено между этими векторами. Как видно из этого примера, по сравнению с предыдущим, заметно повысилась точность оценки решения. В данном случае точность составляет 10-3. Пример 5. Рассмотрим уравнение вида (8.2) , где
72 0.8 0.3 0.2 0.78 A = 0.29 015 . 0.2 . 017 0.3 0.23
014 . 019 0.2 0.21 . 0.63 01 015 . . , 01 0.4 012 . . 0.28 0.29 0.71 0.23
1 1 f = 1 . 1 1
0.2
Точное решение данного уравнения
−2.49235353 −2.18734811 x * = −1.43998764 , а спектральный −0.57455446 −2.82970158
радиус r ( A) = 1.5031 . 1 1 В качестве начального приближения выберем вектор x0 = 1 . Выбрав 1 1 n = 6, p = 2 , получим: −2.4869409 −2.4905301 −2.4918539 −2.1972947 −2.1901038 −2.1882051 x4 = −1.4535331 , x6 = −1.4412772 , x8 = −1.4398975 . −0.5889179 −0.5762146 −0.5748209 −2.8323441 −2.8303238 −2.8297327
Используя (8.4) , (8.5) получим γ и β : γ = 0.36883, β = 0.10972 .
Тогда точное решение x* исходного уравнения можно оценить при − 2.49201 − 2.18797 помощи векторов − 1.43972 − 0.57464 − 2.82965
− 2.49262 − 2.18709 и − 1.43909 , при этом не обязательно точное − 0.57400 − 2.82938
решение x* заключено между этими векторами. Приведенные
примеры
подтверждают,
что
применение
метода
однопараметрического итеративного агрегирования фактически способствует увеличению точности получаемых оценок решения уравнения.
73
По предложенному в этом параграфе методу автором составлена программа на языке программирования TURBO PASCAL.
§9. О некоторых подходах к уточнению границ решения операторных уравнений вида x = Ax + f в случае, когда спектральный радиус r ( A) не обязательно меньше единицы. В данном параграфе предлагается способ уточнения оценок вида (8.1) . Приведенные оценки могут быть уточнены, если известно, что оператор A p обладает дополнительными свойствами, например, если этот оператор u0 -ограничен снизу [66].
Оператор
Ap
называется
u0 -ограниченным
фиксированный элемент, если для каждого
снизу,
x >θ
где
u0 > θ
существует такое
δ = δ ( x) > 0 , что выполняется неравенство A p x ≥ δ ( x)u0 .
В частности A p u0 ≥ δ 0u0
(δ 0 > 0) .
(9.1)
Возможность улучшения полученных оценок для u0 - ограниченных снизу операторов основана на том, что для таких операторов из неравенства xn + p − xn ≤ γ (xn − xn − p ),
(9.2)
где xn + p , xn , xn − p - приближения к точному решению x* , полученные по методу последовательных приближений ( n и p - фиксированные натуральные числа
(n ≥ p ) ), причем
0 < γ < 1 , вытекает более сильное, чем неравенство xn + sp − xn + ( s −1) p ≤ γ s −1 ( xn + p − xn ) ,
(последнее
справедливо
для
любого
натурального
s ≥ 2,
благодаря
положительности, а потому и монотонности линейного оператора A), неравенство вида xn + sp − xn + ( s −1) p ≤ γ s − 1 ( xn + p − xn ) − σ n( s,)p ,
74
где σ n( s,)p ≥ θ . Справедлива следующая теорема [66]. Теорема 9.1. Пусть оператор A p является u0 - ограниченным снизу. Пусть выполнено неравенство (9.2) и γ > δ 0 . Тогда имеет место следующее уточнение оценки “сверху” для решения x* уравнения (8.2) : x * ≤ xn + p +
γ 1− γ
( xn + p − xn ) −
δ (1 − γ )(1 − δ 0 )
u0 ,
где γ и δ 0 определяются согласно (9.2) и (9.1) , а δ = δ [γ (xn − xn − p ) − (xn + p − xn )] > 0.
Теорема 9.2. Пусть оператор A p является u0 - ограниченным снизу. Пусть для последовательных приближений
xn + p , xn , xn − p ,
где
n
и
p
фиксированные натуральные числа (n ≥ p ) , выполняется неравенство β (xn − xn − p ) ≤ xn + p − xn ,
(9.3)
причем 0 < β < 1 и β > δ 0 . Тогда имеет место следующее уточнение оценки “снизу” для решения x* уравнения (8.2) : x * ≥ xn + p +
β 1− β
( xn + p − xn ) +
δ1
(1 − β )(1 − δ 0 )
u0 ,
где β и δ 0 определяются в соответствии с неравенствами (9.3) и (9.1) , а δ1 = δ1 [(xn + p − xn ) − β (xn − xn − p )] > 0.
Ниже будут рассмотрены примеры, в которых реализовывается метод получения оценок точного решения x* операторного уравнения вида (8.2) и способ
улучшения
этих
оценок.
Также
рассматривается
вариант
предложенного метода в “связке” с методом однопараметрического итеративного агрегирования. К полученным таким методом оценкам точного решения x* операторного уравнения вида (8.2) улучшения этих оценок.
применяется способ
75
Пример 1. Рассмотрим уравнение вида (8.2) , где 01 0.31 . . 0.05 012 0.06 0.27 0.29 013 . A= , 0.41 0.053 011 0.21 . 0.04 0.36 0.22 . 017
1 2 f = . 3 4
В данном примере спектральный радиус
начального
приближения
выберем
вектор
r ( A) = 0.727 .
1 1 x0 = . 1 1
В качестве
Точное
решение
7.135319126 9.39508034 * x = . Зафиксируем n = 5, p = 2 , получим: 9.99663311 11.77896844 4.338243 5822515 . , x3 = 6.583639 . 8110907
5.650142 6.350149 7.505754 8.396079 x5 = , x7 = . 8189273 9.041989 . 9.849658 10.759054
Здесь γ = 0.53358 , β = 0.52302 . Тогда вектор решения x* данного уравнения заключен между следующими векторами: 7.11771 7.15096 9.37233 ≤ x * ≤ 9.41461 . 9.97700 10.01750 11.75622 11.79941
Как видно точность полученных оценок составляет 10-1. Теперь применим к полученным результатам способ улучшения оценок, который был описан 1 1 выше. Выберем в качестве u0 = . Тогда оценки точного решения x* примут 1 1
следующий вид:
76 7.13307 7.13826 9.38769 ≤ x * ≤ 9.40192 . 9.99236 10.00481 11.77158 11.78671
Точность у полученных оценок возросла и составляет 10-2. Воспользуемся теперь для этого же примера синтезом метода получения оценок точного решения
x* операторного уравнения вида (8.2) и метода
однопараметрического итеративного агрегирования. В данном случае приближения
xn + p , xn , xn − p
получены
по
методу
однопараметрического
итеративного агрегирования. Здесь также n = 5, p = 2 . Получим соответствующие приближения: 7.13136 7.13723 3.34939 9.39738 x3 = , x5 = , 9.97545 9.99566 11.70409 11.78115
7.13526 9.39514 x7 = . 9.99668 11.77909
Здесь γ = 0.05071, β = −0.33579 . Тогда точное решение x* можно оценить при помощи следующих векторов: 7.13576 7.13516 9.39570 и 9.39502 . 9.99642 9.99674 11.77961 11.77898
Как видно по сравнению с предыдущими оценками здесь заметно возросла точность и теперь она составляет 10-3. В данном случае модификация предложенного метода намного улучшает оценки точного решения x* операторного уравнения вида (8.2) . Рассмотрим теперь пример с таким линейным оператором A , у которого спектральный радиус r ( A) > 1 . Пример 2. Рассмотрим уравнение вида (8.2) , где
77 0.45 0.06 A= 0.41 . 017
0.31 0.27 0.29 013 . , 0.53 011 0.21 . 0.47 0.36 0.22 012 .
01 .
1 2 f = . 3 4
В данном примере спектральный радиус
начального
приближения
выберем
вектор
r ( A) = 1.015 .
1 1 x0 = . 1 1
В качестве
Точное
решение
− 158.9741086 − 114.8110005 * x = . Зафиксируем n=8, p=2, тогда получим: − 181.2641594 − 182.3613668 14.52504 19.91487 12.31833 16.26772 x6 = , x8 = , 18.73744 24.95073 20.35843 26.65614
25.47222 20.33980 x10 = . 31.35698 . 3314946
Отметим тот факт, что в данном случае приближения, полученные по методу последовательных приближений не сходятся к решению уравнения вида (8.2) , т.к. r ( A) > 1 . Тем не мене получим следующие оценки точного решения x* , где γ = 1.03108, β = 1.03106 : −159.02434 −158.89897 −114.84789 ≤ x * ≤ −114.75602 . −181.32226 −18117774 . −182.42023 −182.27374
Итак, несмотря на то, что метод последовательных приближений в данном случае фактически “расходится”, полученные оценки достаточно близки от точного решения x* . Воспользуемся теперь модификацией метода получения оценок точного решения
x*
операторного
уравнения
вида
(8.2)
и
метода
78
однопараметрического итеративного агрегирования. Здесь также n=8, p=2, 1 1 x0 = . Получим соответствующие приближения: 1 1 −159.01063 −114.84337 x6 = , −181.30776 −182.41119
−158.97515 −114.81199 x8 = , −181.26545 −182.36289
−158.97413 −114.81103 x10 = . −181.26419 −182.36141
Здесь γ = 0.03086, β = 0.02873 . Тогда точное решение x* можно оценить при помощи следующих векторов: −158.974106 −158.974214 −114.811001 и −114.811110 . −181.264158 −181.264266 −182.361368 −182.361475
В данном случае заметно возросла точность и теперь она составляет 10-3. Применение в данном случае модификации предложенного метода намного улучшает оценки точного решения x* операторного уравнения вида (8.2) . Но применение здесь способа улучшения оценок не увеличивает точность полученных оценок. Напомним еще раз, что в данном случае r ( A) > 1 . Итак, применять способ улучшения полученных оценок точного решения x* , возможно только в том случае, если спектральный радиус оператора A
меньше единицы r ( A) < 1 . Если до этого мы рассматривали примеры, у которых линейный оператор A - матрица, у которой все элементы были положительными, то теперь
рассмотрим такие примеры, у которых матрица A , таким свойством не обладает. Пример 3. Пусть дано уравнение вида (8.2) , где 0.47 −0.31 . 0.05 −012 −0.06 0.27 0.29 013 . A= , 0.41 0.053 011 −0.21 . 0.04 −0.36 0.22 . −017
1 2 f = . 3 4
79
В данном примере спектральный радиус r ( A) = 0.7604 . В качестве
начального
приближения
выберем
вектор
1 1 x0 = . 1 1
Точное
решение
0.7990584 4.5837095 * x = . Зафиксировав n=8, p=2, тогда получим: 3.1281162 3.7453674 0.88105 4.59444 x6 = , 3.20047 3.67094
0.84543 0.825725 4.59210 4.588753 x8 = , x10 = . 3.17126 3.153246 3.70245 3.720579
Здесь γ = 1.43655, β = 0.55320 . Тогда координаты вектора точного решения x* можно оценить при помощи следующих векторов: 0.80133 4.58460 3.13094 3.74302
0.89057 4.59979 и . 3.21254 3.66093
Как видно в этом случае точное решение x* нельзя оценить “снизу” и “сверху”, при помощи полученных векторов, как, например, это было в случае, когда линейный оператор
A
- матрица с положительными
элементами. Попробуем применить способ улучшения оценок в данном случае. 1 1 Выберем в качестве u0 = . Тогда для оценки точного решения x* получим 1 1
следующие векторы: 0.80018 0.85749 4.58345 4.56671 3.12979 и 3.17946 . 3.74187 3.62786
Принципиально ситуация не изменилась.
80
А теперь применим к рассматриваемому примеру модификацию методов получения оценки точного решения x* и однопараметрического итеративного
агрегирования. Здесь также
1 1 x0 = , n=8, 1 1
p=2. Получим следующие
приближения: 1.00624 4.60087 x6 = , 3.31259 3.55834
0.91708 0.86711 4.59250 4.58861 x8 = , x10 = . 3.23603 3.19080 3.63808 3.68338
Здесь γ = 0.59085, β = 0.46347 . Тогда точное решение можно оценить при помощи следующих векторов: 0.82395 0.79495 4.58526 4.58301 3.15172 и 3.12547 . 3.72251 3.74880
Итак, в случае, когда матрица A ( r ( A) < 1 ) не является положительной, нельзя получить оценки снизу” и “сверху” точного решения x* и, соответственно получить уточнение полученных оценок. Если в предыдущем примере r ( A) < 1 , то теперь рассмотрим пример в котором r ( A) > 1 . Пример 4. Пусть дано уравнение вида (8.2) , где 0.47 −0.31 . 0.05 −012 −0.6 0.27 0.59 013 . A= , 0.69 0.53 0.71 −0.21 −0.27 0.04 −0.36 0.22
1 2 f = . 3 4
81
В данном примере спектральный радиус r ( A) = 1.26617 . В качестве
начального
приближения
выберем
вектор
1 1 x0 = . 1 1
Точное
решение
−7.523184 4.206156 * x = . Зафиксировав n=16, p=1, получим: −8.446543 . 11846489 155.75808 87.24385 x15 = , 332.23149 −144.35238
199.21668 109.35176 x16 = , 422.91068 −185.92579
254.24363 137.34191 x17 = . 537.72694 −238.56595
Как видно, приближения, полученные по методу последовательных приближений, “удаляются” от точного решения x* . Тем не менее, точное решение x* можно оценить при помощи следующих векторов: −7.59769 −7.49774 4.15304 и 4.20389 . −8.61703 −8.40846 . 11.91803 1182240
Отметим, что полученные оценки обладают достаточно высокой точностью. Применение к полученным векторам способа улучшения оценок не дает ожидаемого эффекта. Из проделанных вычислений следует, что использование в данном случае модификации
методов
получения
оценки
точного
решения
x*
и
однопараметрического итеративного агрегирования не дает выигрыша в точности. Рассмотрим теперь пример с таким оператором A , спектральный радиус которого «намного» больше единицы. Пример 5. Пусть дано уравнение вида (8.2) , где
82 0.97 −0.31 . 1 0.95 −012 2 −0.6 0.89 0.59 0.93 , f = . A= 3 0.99 0.38 0.71 −0.21 4 −0.2 0.84 −0.03 0.92
В данном примере спектральный радиус r ( A) = 2.0022 . В качестве 1 1 начального приближения выберем вектор x0 = . Заметим, что в данном 1 1 −2.189895 −5.620456 * . Зафиксируем n=4, p=1. Для оценки примере точное решение x = −2.652581 −2.545337
точного решения x* , получим соответствующие приближения: 10.51584 17.69660 27.78023 25.31423 5016418 95.00877 . x3 = , x4 = , x5 = . 17.47908 30.55574 52.02921 23.25953 44.03518 82.19429
Здесь γ = 1.83672, β = 1.40426 . Тогда точное решение заключено между следующими векторами: −7.24697 5.64526 −60.76652 ≤ x * ≤ −3.43134 . −22.56253 4.89195 . −50.35785 −157026
Как видно, полученные оценки очень далеки от точного решения x* , тем не менее, они позволяют получить “нижнюю” и “верхнюю” границы точного решения x*
операторного уравнения вида (8.2) . Использование в данном
случае способа улучшения полученных оценок ситуацию не изменяет. Ситуация не изменяется и при применении модификации методов получения оценки
точного
агрегирования.
решения
x*
и
однопараметрического
итеративного
83
Итак, из рассмотренных выше примеров можно сделать вывод, что предложенный выше способ и метод в [59] и их модификации обладают большим потенциалом. Оценку v решения x* назовем активной оценкой решения уравнения вида (8.2) сверху, если Av + f ≤ v .
Аналогично, оценку u решения x* назовем активной оценкой решения уравнения вида (8.2) снизу, если Au + f ≤ u.
Очевидно, что наличие активных оценок «сверху» и «снизу» решения x* позволяет их улучшать. Именно, если un = Aun −1 + f , vn = Avn −1 + f (n = 1,2,...; u0 = u, v0 = v) ,
где u0 ,v0 - активные оценки, то un , vn при всех n также являются активными оценками. При этом, если r ( A) < 1 , то un , vn сходятся к решению x* , причем для всех значений n un ≤ x* ≤ vn ,
то есть мы имеем сходящиеся к решению x* двусторонние приближения. Понятно, что это свойство активных оценок представляет значительный интерес, а получение таких оценок представляется весьма актуальным. В этой связи
интересно исследовать полученные выше оценки на предмет
наличия у них свойства активности. Однако прежде сделаем следующее замечание. Очевидно, всякое решение x* уравнения (8.2) является для любого натурального s также решением уравнения x = As x + f1 ,
(9.4)
где f1 = As −1 f + As − 2 f + ... + Af + f ,
то есть уравнения
(9.5)
84 x = A1 x + f1
при A1 = As . Оператор As , очевидно, линеен и положителен одновременно с оператором A . Теорема 9.3. Все оценки, полученные в теоремах 8.1, 8.2, 9.1, 9.2, являются активными. Доказательство. Ограничимся доказательством
активности оценки
«снизу» теоремы 8.2 (для остальных оценок доказательства аналогичны). Итак, пусть выполнены условия теоремы 8.2. Пусть в (9.4) и (9.5) s = p и A1 = A p . Тогда, очевидно, для элемента u1 = xn + p +
β 1− β
( xn + p − xn ) достаточно доказать, что A1u1 + f1 ≥ u1 .
Последнее неравенство эквивалентно неравенству ( xn + 2 p − xn + p ) +
β 1− β
( xn + 2 p − xn + p ) ≥
β 1− β
( xn + p − xn ) ,
а это неравенство, в свою очередь, эквивалентность неравенству 1 β ( xn + 2 p − xn + p ) ≥ ( xn + p − xn ) . 1− β 1− β
Справедливость последнего неравенства следует из условия теоремы 8.2 и монотонности оператора A1 Теорема доказана. Наличие активных оценок «снизу» и «сверху» решения x* позволяет использовать более эффективный прием их улучшения, чем итеративные методы улучшения, изложенный выше. Этот прием приводит к новым активным оценкам решения. Опишем этот прием на примере его применения к оценкам в теоремах 8.1, 8.2, полагая, для простоты записи и выкладок, что в последних p = 1 . Теорема 9.4. Пусть числа γ и β удовлетворяют, соответственно, неравенствам (8.4) и (8.4) , а число m1 неравенству
85 1 [( xn +1 − xn ) − β ( xn − xn −1 )] ≥ m1 1 [γ ( xn − xn −1 ) − ( xn +1 − xn )]. 1− β 1− γ
(9.6)
Тогда для решения x* уравнения (8.2) верна следующая оценка «снизу»: x* ≥
1 β γ ( xn +1 − xn ) + m1 xn +1 + ( xn +1 − xn ) . xn +1 + 1 + m1 1− β 1− γ
(9.7)
Аналогично, если m2 удовлетворяет неравенству 1 [γ ( xn − xn −1 ) − ( xn +1 − xn )] ≥ m2 [( xn +1 − xn ) − β ( xn − xn −1 )] 1− γ 1− β
(9.8)
то x* ≤
1 γ β ( xn +1 − xn ) + m2 xn +1 + ( xn +1 − xn ) . xn +1 + 1 + m2 1− γ 1− β
(9.9)
Остановимся на доказательстве оценки (9.7) . Условие (9.6) , как нетрудно проверить, означает справедливость следующего неравенства ( Au0 + f ) − u0 ≥ m1 [v0 − ( Av0 + f )] ,
где u0 и v0 , соответственно выражаются формулами u 0 = xn + v0 = xn +
β 1− β
γ 1− γ
( xn − xn −1 ) , ( xn − xn −1 ).
Тогда из результатов работы [64] следует справедливость оценки (9.7) . Аналогично, условие (9.8) означает, что v0 − ( Av0 + f ) ≥ m2 [( Au0 + f ) − u0 ] ,
из которого опять на основании [64] вытекает оценка (9.9) . Оценки (9.7) и (9.9) заведомо лучше оценок в теоремах 8.1, 8.2, соответственно, если
m1 > 0 и m2 > 0 . Последнее условие выполняется, если
конус K телесен, а оператор A переводит ненулевые элементы конуса K во внутренние элементы K . В случае A = (aij ) , E = R n при конусе K векторов с неотрицательными координатами, последнее имеет место, если все элементы матрицы A положительные.
86
§10. “Гибрид” методов ускорения сходимости монотонных приближений к решению x* уравнения вида x = Ax + f и однопараметрического итеративного агрегирования В данном параграфе предлагается один вариант метода, позволяющего строить приближения к решению системы линейных уравнений вида (8.2) , обладающего достаточно высокой скоростью сходимости. Заметим, что предлагаемый вариант по существу представляет собой сочетание методов итеративного агрегирования и использует идею ускорения сходимости для известного варианта [36] ускорения сходимости метода последовательных приближений. Предлагаемый в данном параграфе метод по существу гарантирует достаточно высокую скорость сходимости к исходному решению и отличается простотой в его реализации. Немаловажной особенностью этого метода является то, что этот метод способен сходится к решению уравнения вида (8.2) и в случае, когда спектральный радиус матрицы A больше единицы r ( A) > 1 . Сущность данного “гибрида” методов для отыскания решения уравнения вида (10.1)
x = Ax + f , где A – матрица
порядка (n × n ) , f – свободный вектор, f ∈ R n , x –
неизвестный вектор, x ∈ R n , заключается в следующем алгоритме. Сначала находим такие векторы u0 ,v0 , для которых выполняются неравенства: u0 ≤ u1 = Au0 + f ,
(10.2)
v1 = Av0 + f ≤ v0
(10.3)
(существование таких векторов будет обеспечено при выполнении условия r ( A) < 1 ).
Алгоритм поиска векторов u0 и v0 был описан в §2. Затем из уравнения вида u = Au + f ,
по u0 строим u1
методом
однопараметрического итеративного агрегирования и из уравнения вида
87 v = Av + f
по v0 строим v1 методом однопараметрического итеративного
агрегирования. Потом определяем поправочные коэффициенты
p1 и q1 следующим
образом. Пусть p1 , q1 - такие два числа, для которых выполняются неравенства: u1 − u0 ≥ p1 (v0 − v1 ) , v0 − v1 ≥ q1 (u1 − u0 ) .
Здесь p1 и q1 определяются из условия p1 ≤
( u1 − u0 )i ; ( v0 − v1 )i
q1 ≤
( v0 − v1 )i ( u1 − u0 )i
(i = 1,2,...) .
В частности можно положить p1 = min i = 1, n
( u1 − u0 )i (v − v ) ; q1 = min 0 1 i . i = 1, n ( u − u ) ( v0 − v1 )i 1 0 i
на первой итерации заключено
Тогда решение уравнения вида (10.1) между элементами u1* , v1* , где u1* =
Итак,
выше
был
u1 + p1v1 , 1 + p1
описан
v1* =
один
v1 + q1u1 . 1 + q1
шаг
рекуррентного
процесса
предлагаемого метода. Аналогично, пусть определены un и vn , по индукции положим un* =
un + pn vn , 1 + pn
vn* =
vn + qn un . 1 + qn
Отметим тот факт, что при применении схемы ускорения сходимости поправочные коэффициенты p и q можно определять другим способом (отличным от описанного выше). Он заключается в следующем: а) возьмем отношения
(u1 − u0 ) i (v0 − v1 ) i , (v0 − v1 ) i (u1 − u0 ) i
(i = 1,2,...)
88
б) в качестве
p1 выбираем среднее арифметическое, составленное из
соответствующих координат вектора
(u1 − u0 ) i , а в качестве (v0 − v1 ) i
арифметическое из соответствующих координат вектора ,
q1 среднее
(v0 − v1 ) i . (u1 − u0 ) i
Но как показывают примеры, если определены начальные приближения u0 и v0 , удовлетворяющие условиям (10.2) и (10.3) , то возможна такая ситуация, при
которой
“гибрид”
методов
ускорения
сходимости
монотонных
приближений и однопараметрического итеративного агрегирования не работает, т.к. на некотором шаге при определении
u n* , vn*
будет появляться
недопустимая операция (деление на ноль). Отметим, что последовательности un* и vn* обладает более высокой скоростью сходимости к точному решению x* , чем метод ускорения сходимости. Пример 1. Рассмотрим уравнение вида (10.1) , где 0.2 0.3 , A = 0.4 0.2
1 f = . 2 2.692307 . Пусть 3.846153
Спектральный радиус r ( A) = 0.546 . Точное решение x* = 1 − 2.5 , z0 = , тогда u0 = 1 − 2.5
2.5 v0 = . 2.5
Соответствующие приближения un* и vn* , к координатам вектора решения представим в виде таблицы. Таблица 19 Приближения к 1-ой координате вектора решения n
1 2
“ un* ”
“ vn* ”
2.6667
2.6667 Деление на ноль
89
Приближения к 2-ой координате вектора решения 1
4.000
4.000
2
Деление на ноль
В рассмотренном выше примере недопустимая операция возникла из-за действия параметра, при определении последовательностей un и vn методом последовательных приближений. Но как показывают практика в качестве начальных приближений можно выбрать такие неотрицательные векторы u0 и удовлетворять условиям
(10.2)
и
(10.3) ,
v0 ,
которые не будут
но при этом
полученные
последовательности un* и vn* будут сходится к точному решению x* , хотя это решение не всегда будет заключено между этими последовательностями. При этом скорость сходимости в некоторых случаях заметно увеличится. Здесь, по сути, мы имеем две независимые последовательности un* и vn* , сходящиеся к точному решению x* уравнения вида (10.1) . Рассмотрим соответствующий пример. Пример 2. Рассмотрим уравнение вида (10.1) , где 0 .3 0 .4 0 .1 A = 0 .1 0 .5 0 .2 , 0 .2 0 .3 0 .4
1 f = 2 . 3
10.17391304 Точное решение x = 11.73913043 , а спектральный радиус r ( A) = 0.828 . 14.26086956 *
В качестве начальных приближений возьмем векторы: 1 u0 = 2 , 3
5 v0 = 7 . 8
Используя вышеизложенный метод, получим приближения un* и vn* , между которыми заключено решение исходного уравнения. Соответствующие приближения un* и vn* , к координатам вектора решения представим в виде таблицы.
90
Таблица 19 Приближения к 1-ой координате вектора решения n
“ un* ”
“ vn* ”
1
12.44537815
12.466832216
2
10.65854778
10.43895004
6
10.17369452
10.17378128
9
10.17391466
10.17391530
12
10.17391306
10.17391305
15
10.17391304
10.17391304
Приближения к 2-ой координате вектора решения 1
13.00840336
13.00510274
2
12.94980838
12.16330283
6
11.73867845
11.73872240
9
11.73913495
11.73913590
12
11.73913048
11.73913048
15
11.73913043
11.73913043
Приближения к 3-й координате вектора решения 1
14.54621849
14.52806509
2
15.60339011
14.67062656
6
14.26039228
14.26039700
9
14.26087469
14.26087558
12
14.26086961
14.26086962
15
14.26086956
14.26086956
Как видно из таблицы точность вычислений на 15-м шаге составляет 10-8. При реализации данного метода значения последовательностей un* и vn* можно
находить
для
некоторых
фиксированных
значений
последовательностей un и vn , т.е определять значения последовательностей un* и vn* в “узловых” точках последовательностей un и vn , при этом скорость
91
схождения
приближений
к
решению
исходного
уравнения
заметно
возрастает. Применим данные рассуждения для вышеизложенного примера, причем значения u * и v* будут определяться для u4 n , v4 n . В качестве начальных приближений возьмем следующие векторы: 6 u0 = 5 , 4
1 v0 = 2 3
Соответствующие приближения un* и vn* , к координатам вектора решения представим в виде таблицы. Таблица 20 Приближения к 1-ой координате вектора решения n
“ un* ”
“ vn* ”
1
11.05524862
11.41860465
2
10.16937891
10.17410479
3
10.17391086
10.17391655
4
10.17391304
10.17391306
Приближения к 2-ой координате вектора решения 1
8.64088398
6.27906977
2
11.73508279
11.73888093
3
11.73912821
11.73913563
4
11.73913042
11.73913046
Приближения к 3-й координате вектора решения 1
9.47513812
6.02325581
2
14.25823541
14.26040731
3
14.26086792
14.26087442
4
14.26086955
14.26086959
Понятно, что если повысить порядок “узловых” точек, то скорость схождения к вектору решения исходного уравнения увеличится.
92
Можно при помощи следующего графика провести сравнительный анализ рассмотренных ранее численных методов.
120 метод последовательных приближений метод ускорения сходимости
Количество итераций
100 80 60
гибрид ускорения сходимости
40 гибрид ускорения сходимости (узл.)
20 0 1
2
3
4
5
6
7
Порядок точности
Рис. 1. Сравнение скорости сходимости «гибрида» методов ускорения сходимости и однопараметрического итеративного агрегирования
с
известными ранее методами. В данном графике по оси абсцисс указаны количество верных знаков после запятой, а по оси ординат – количество итераций. В
заключении
отметим,
что
условие
монотонной
сходимости
приближений к решению x* уравнения вида (10.1) , при решении их гибридом методов ускорения сходимости и однопараметрического итеративного агрегирования в рассмотренных примерах не выполняется.
93
§11. Об одном варианте метода ускорения сходимости монотонных приближений к решению уравнения вида x = Ax + f В этом параграфе приближения “снизу” и “сверху” к точному решению x* операторного уравнения вида (11.1)
x = Ax + f ,
где A - матрица порядка (n × n) , f
- свободный вектор, f ∈ R n , x -
неизвестный вектор, x ∈ R n , строятся по методу ускорения сходимости монотонных приближений (см.§2) к точному решению x* уравнения вида (11.1) по следующим формулам[36]: un* =
un + pn vn , 1 + pn
vn* =
При построении приближений (11.2)
vn + qn un . 1 + qn
(11.2)
возникают проблемы с выбором
начальных приближений u0 , v0 , для которых выполняются следующие неравенства: u0 ≤ u1 = Au0 + f ,
(11.3)
v1 = Av0 + f ≤ v0
(11.4)
(существование таких векторов обеспечивает условие r ( A) < 1 ). И если в качестве вектора u0 всегда можно выбрать свободный вектор f , то с вектором v0 дела обстоят несколько сложнее (существует определенный алгоритм
отыскания
приближений
u0 , v0
u0 , v0 ).
векторов предлагается
Здесь
выбрать
в
качестве
векторы,
начальных
полученные
по
следующим формулам (см.§7): xn + p + xn + p +
β 1− β
γ 1− γ
( xn + p − xn ) , ( xn + p − xn ) ,
где xn − p , xn , xn + p (n = 0,1,2,...) соответствующие приближения к решению x* метода последовательных приближений: xn +1 = Axn + f , (n = 0,1,2,...)
94
постоянная β такова, что β < [0,1) и при этом выполняется неравенство: β (xn − xn − p ) ≤ xn + p − xn
постоянная γ такова, что γ ∈ [0,1) и при этом выполнено неравенство: xn + p − xn ≤ γ (xn − xn − p ).
Заметим, что в данном случае векторы u0 , v0 будут находиться в определенной близости от точного решения x* ( u0 ≤ x* ≤ v0 ) и при этом для них будут выполняться неравенства (11.3) и (11.4) . Отметим, что данный выбор векторов u0 , v0 увеличивает скорость сходимости двусторонних приближений к точному решению x* уравнения (11.1) . Проиллюстрируем вышесказанное на соответствующем примере. Пример 1. Пусть дано уравнение вида (11.1) , где . . 012 0.3 0.2 01 1 . . . 0.26 015 017 01 1 A= , f = . 013 1 . . 0.28 019 0.21 . . . 01 0.2 018 011 1
Заметим, что в данном примере спектральный радиус r ( A) = 0.702 , а 3.41546595 3.31263729 * . Здесь n=2, p=1 и для получения векторов точное решение x = 3.70159569 2.98449283
u0 , v0
1 1 в качестве начального приближения выберем вектор x0 = . Тогда 1 1
получим следующие векторы u0 , v0 : 3.40838 3.30559 u0 = , 3.69403 2.97868
3.42103 3.31776 v0 = . 3.70814 2.98907
95
Теперь по формулам (11.2) получим соответствующие приближения “снизу” и “сверху” к точному решению x* уравнения (11.1) . Представим эти приближения в виде следующей таблицы. Таблица 21 n
“ un* ”
“ vn* ”
1
3.414455 3.311699 3.700482 2.983718
3.416105 3.313286 3.702322 2.985073
2
3.414966 3.312155 3.701045 2.984086
8
3.415408 3.312582 3.701531 2.984445
3.415521 3.312690 3.701657 2.984538
16
3.415462 3.312634 3.701591 2.984490
3.415469 3.312640 3.701599 2.984495
29
3.415465 3.312637 3.701595 2.984492
3.415465 3.312637 3.701595 2.984492
3.415889 3.313043 3.702075 2.984844
Итак, на 29-м шаге точность вычислений составляет 10-6, а на 40-м шаге точность вычислений составляет уже 10-8. Отметим тот факт, что при построении приближений, сходящихся к точному решению x* данного примера, методом последовательных приближений точность 10-6 достигается только на 45-м шаге.
96
Для сравнения построим в этом примере приближения методом ускорения сходимости монотонных приближений (см.§2). 1 1 Здесь для определения векторов u0 , v0 выберем вектор z0 = . Тогда по 1 1
алгоритму описанному в §2 , получим следующие векторы u0 , v0 : −5.263 −5.263 u0 = , −5.263 −5.263
5.263 5.263 v0 = . 5.263 5.263
Тогда по формулам (11.2) получим соответствующие приближения “снизу” и “сверху” к точному решению x* уравнения (11.1) . Представим эти приближения в виде следующей таблицы. Таблица 22 Номер прибли
“ un* ”
“ vn* ”
1
2.010526 1.954385 2.136842 . 1828070
4.789473 4.578947 5.263157 . 4105263
2
3.059012 2.971437 3.303166 2.694060
3.658175 . 3549311 3.971307 . 3188090
8
3.383679 3.282047 3.666129 2.958377
3.441629 3.337815 3.730788 3.005988
жений n
97
14
3.411640 3.308956 3.697327 2.981350
3.418614 3.315667 3.705108 2.987079
20
3.415005 3.312194 3.701082 2.984114
3.415844 3.313001 3.702018 2.984804
33
3.415461 3.312632 3.701590 2.984488
3.415469 3.312641 3.701599 2.984496
40
3.415465 3.312636 3.701595 2.984492
3.415466 3.312637 3.701596 2.984493
Итак, на 40-м шаге точность вычислений составляет 10-6. А теперь рассмотрим предложенный метод в случае “гибрида” методов итеративного агрегирования и метода ускорения монотонных приближений [73]. Следует отметить, что в этом случае, при помощи векторов u* , v* , мы можем получить лишь оценку точного решения x* . Реализуем это на уже рассматриваемом здесь примере 1. Тогда здесь векторы u0 , v0 : 3.40838 3.30559 u0 = , 3.69403 2.97868
3.42103 3.31776 v0 = . 3.70814 2.98907
Приближения, полученные по формулам (11.2) представим в виде следующей таблицы.
98
Таблица 23 Номер прибли
“ un* ”
“ vn* ”
1
3.415420 3.312682 3.701559 2.984511
3.415420 3.312628 3.701559 2.984511
2
3.415452 3.312628 3.701587 2.984494
3.415451 3.312628 3.701586 2.984495
3
3.415463 3.312635 3.701595 2.984492
3.415463 3.312635 3.701595 2.984492
4
3.415465 3.312637 3.701595 2.984492
3.415465 3.312637 3.701595 2.984492
жений n
Итак, здесь уже на 4-м шаге точность вычислений составляет 10-6, а на 8м шаге точность вычислений составляет уже 10-8. По сравнению с предыдущими случаями, здесь заметно возросла скорость сходимости приближений. Проведем сравнительный анализ используемых в этом параграфе численных методов при помощи следующего графика.
99 60
Количество итераций
50 40
вариант метода ускорения сходимости
30
метод ускорения сходимости "гибрид" методов ОИА и метода ускорения
20 10 0 1
2
3
4
5
6
7
Порядок точности
Рис. 2. Сравнение варианта метода ускорения сходимости с другими численными методами. По предложенному методу автором разработана программа на языке программирования TURBO PASCAL.
100
§12. Об одном варианте метода Зейделя Балансовая модель производства является одной из наиболее простых математических моделей. Она записывается в виде системы уравнений, каждое из которых выражает требование равенства (баланса) между количеством продукции, производимой отдельным экономическим объектом, и
совокупной
потребностью
в
этом
продукте.
Балансовые
модели
основываются на понятии межотраслевого баланса, который представляет собой таблицу, характеризующую связи между отраслями (экономическими объектами) экономической системы. В настоящее время большое число работ посвящается этой модели и ее применению для решения различных задач. Такой интерес к балансовой модели определяется тем, что, оказалось, эта
модель
хорошо
отражает
многие
существенные
особенности
современного производства и в то же время легко поддается расчету. Во многих странах мира балансовый метод используется для экономического анализа, планирования и прогнозирования. Система балансовых уравнений может быть записана в матричной форме в виде следующего уравнения x=Ax+f. Здесь используется терминология теории положительных операторов [36]. Для того чтобы изложить суть предлагаемого варианта численного метода предварительно опишем метод Зейделя и метод ускорения сходимости приближений. Одна из возможных интерпретаций метода Зейделя, изложенная в [16], решения линейных алгебраических систем и более общих операторных уравнений
заключается в следующем. Если требуется решить уравнение
вида x = Ax + f ,
(12.1)
101
где x – неизвестный элемент некоторого банахова пространства Е, f – заданный элемент из Е, А- линейный оператор, действующий в Е, то при условии, что А=А1+А2 и в предположении, что существует оператор обратный к оператору (I-A1), уравнение (12.1) , можно переписать в эквивалентном виде x = ( I − A1 ) −1 ⋅ A2 x + ( I − A1 ) −1 ⋅ f ,
(12.2)
после чего к полученному уравнению применить метод последовательных приближений xm+1 = (I − A1 ) A2 xm + (I − A1 ) f , −1
−1
(m = 1,2,...) ,
который можно также записать в виде y m +1 = A1 y m +1 + A2 y m + f
(m = 1,2,...) .
(12.3)
Т.е. по сути, применять метод последовательных приближений для решения операторного уравнения вида x = Dx + h ,
(12.4)
где D = (I − A1 )−1 ⋅ A2 , h = (I − A1 )−1 ⋅ f . Именно такую интерпретацию допускает классический метод Зейделя решения линейных систем алгебраических уравнений. Для того, чтобы этот метод был реализуем, достаточно, чтобы число λ = 1 не являлось точкой спектра оператора А1, а для этого, в частности, достаточно, чтобы спектральный радиус r(A1) оператора А1 удовлетворял неравенству (12.5)
r(A1)max2 then max2:=c2[i]; end; {writeln(max2:3:3);} if max2max1 then max1:=c1[i];
138
end; end; procedure umn2; var i,j : integer; begin for i:=1 to n do begin t2:=0; for j:=1 to n do begin t2:=b[i,j]*x0[j]+t2; end; c5[i]:=t2; end; end; begin {основная программа} wwod; byfer; writeln('Введите количество приближений:'); readln(r); writeln('Соответствующие приближения к координатам собственного вектора:'); for i1:=1 to r do begin umn; { writeln('матрица B:');} for i:=1 to n do c2[i]:=c[i]/(max1); if (i1=1) then begin for i:=1 to n do x1[i]:=c2[i]; end; write(i1,':',' '); for i:=1 to n do write(c2[i]:6:6,' '); for i:=1 to n do x00[i]:=c2[i]; writeln; end; readln; writeln('Получим теперь двустороннее приближение к собственному вектору:'); for i:=1 to n do begin t1:=0; for j:=1 to n do begin t1:=a[i,j]*x0[j]+t1; end; c3[i]:=t1; end; for i:=1 to n do c4[i]:=c3[i]/u0[i]; max2:=c4[1]; for i:=2 to n do begin if c4[i]>max2 then max2:=c4[i]; end; for i:=1 to n do begin
139
for j:=1 to n do begin b[i,j]:=a[i,j]/(max2); {write(b[i,j]:3:3,' ');} end; {writeln;} end; for i:=1 to n do c6[i]:=c3[i]/x0[i]; min3:=c6[1]; for i:=2 to n do begin if c6[i]<min3 then min3:=c6[i]; end; max3:=c6[1]; for i:=2 to n do begin if c6[i]>max3 then max3:=c6[i]; end; { for i:=1 to n do writeln(c6[i]:4:4);} writeln('a=',min3:3:3, 'b=',max3:3:3); writeln('Введите первое наибольшее значение матрицы А:'); readln(k1); writeln('Введите второе наибольшее значение матрицы А:'); readln(k2); writeln('Введите первое наименьшее значение матрицы А:'); readln(k3); writeln('Введите второе наименьшее значение матрицы А:'); readln(k4); k:=sqrt((k1*k2)/(k3*k4)); writeln('постоянная оператора сжатия-',k:3:3); g1:=min3/max3; g2:=max3/min3; t3:=(k-1)/2; t4:=(k-1)/(k+1); readln; for l:=1 to r do begin t5:=exp(l*ln(t4)); t6:=t3*t5; t7:=exp(t6*ln(g1)); t8:=exp(t6*ln(g2)); for i:=1 to n do x00[i]:=x0[i]; umn; for i:=1 to n do begin c5[i]:=c[i]/max1; end; for i:=1 to n do begin u1[i]:=t7*c5[i]; v1[i]:=t8*c5[i]; end; for i:=1 to n do begin write(l,':'); write(u1[i]:5:5,' ',v1[i]:5:5);
140
writeln; end; readln; for i:=1 to n do x0[i]:=c5[i]; writeln; end; readln; writeln('Теперь оценим степень близости к точному решению'); for i:=1 to n do z1[i]:=x1[i]/x0[i]; max4:=z1[1]; for i:=2 to n do begin if z1[i]>max4 then max4:=z1[i]; end; for i:=1 to n do begin z2[i]:=x[i]/x1[i]; { writeln(z2[i]:3:3);} end; max5:=z2[1]; for i:=2 to n do begin if z2[i]>max5 then max5:=z2[i]; end; max6:=max4; if max5>max6 then max6:=max5; y:=ln(max6); y1:=(k-1)/(k+1); writeln('Введите номер приближения с котoрого вы хотите определить расстояние до точного решения:'); readln(w); y2:=exp(w*ln(y1)); y3:=y2/(1-y1); y4:=y3*y; writeln('Вы находитесь от точного решения на расстоянии:',y4:8:8); readln; end.
141
§7. Об одном итерационном методе решения системы линейных алгебраических уравнений вида x = Ax + f с квадратной матрицей A , в случае, когда наибольшее по модулю собственное значение матрицы A , больше чем единица.
program trt; {$N+,E+} type matr= record b:array [1..10,1..10] of extended; x,l2:array [1..10] of extended; G:extended; end; matx= array[1..20] of matr; var u: matx; a1,s,a2,a3,a,a0 :array [1..10,1..10] of extended; y0,l0,y00,l00,f,c,cw,c1,l,y,y1,l1,x,z0,z,x1,c2,c3:array [1..10] of extended; i,j,n,k,k1,r0,r,q,w,v,s1,iq:integer; t,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,G1,t01,t11,t21,t31,h:extended; procedure wwod; var i,j: integer; begin writeln('Введите размерность матрицы А:'); readln(n); writeln('Ввод элементов матрицы А:'); for i:=1 to n do begin for j:=1 to n do begin write('элемент A[',i,',',j,']='); readln(a[i,j]); end; end; writeln('Ввод свободного вектора f:'); for i:=1 to n do begin readln(f[i]); end; end; procedure byfer; var i,j:integer; begin for i:=1 to n do begin for j:=1 to n do begin a0[i,j]:=a[i,j];
142
end; end; end; procedure obr_A; var i,j:integer; begin for i:=1 to n do begin for j:=1 to n do begin a1[i,j]:=a0[j,i]; end; end; writeln('Для отыскания собственных значений необходимо'); writeln('ввести вектора l0 и y0.'); writeln; writeln('Введите вектор l0:'); for i:=1 to n do begin readln(l0[i]); end; writeln('Введите вектор y0:'); for i:=1 to n do begin readln(y0[i]); end; end; procedure byfer2; var i :integer; begin for i:=1 to n do begin y00[i]:=y0[i]; l00[i]:=l0[i]; end; end; Procedure otisk; var i,j : integer; begin for i:=1 to n do begin t:=0; for j:=1 to n do begin t:=a0[i,j]*y00[j]+t; end; c[i]:=t; end; t1:=0; for i:=1 to n do begin t1:=l00[i]*c[i]+t1;
143
end; t2:=0; for i:=1 to n do begin t2:=l00[i]*y00[i]+t2; end; u[q].G:=abs(t1/t2); for i:=1 to n do begin y[i]:=u[q].G*c[i]; end; for i:=1 to n do begin t3:=0; for j:=1 to n do begin t3:=a1[i,j]*l00[j]+t3; end; c1[i]:=t3; end; for i:=1 to n do begin l[i]:=u[q].G*c1[i]; end; end; procedure otisk2; var i,j: integer; begin for i:=1 to n do begin t01:=0; for j:=1 to n do begin t01:=a0[i,j]*y00[j]+t01; end; c[i]:=t01; end; t11:=0; for i:=1 to n do begin t11:=l00[i]*c[i]+t11; end; t21:=0; for i:=1 to n do begin t21:=l00[i]*y00[i]+t21; end; G1:=abs(t11/t21); for i:=1 to n do begin y[i]:=G1*c[i]; end; for i:=1 to n do begin t31:=0;
144
for j:=1 to n do begin t31:=a1[i,j]*l00[j]+t31; end; c1[i]:=t31; end; for i:=1 to n do begin l[i]:=G1*c1[i]; end; end; procedure normma; var i:integer; begin for i:=1 to n do begin y1[i]:=sqr(y[i]); l1[i]:=sqr(l[i]); end; t4:=0; t5:=0; for i:=1 to n do begin t4:=y1[i]+t4; t5:=l1[i]+t5; end; t6:=sqrt(t4); t7:=sqrt(t5); for i:=1 to n do begin u[q].x[i]:=y[i]/t6; u[q].l2[i]:=l[i]/t7; end; end; procedure vivod; var i:integer; begin for i:=1 to n do begin writeln(u[q].x[i]:13:13,' ',u[q].l2[i]:13:13); end; end; procedure sobstv; var i,j:integer; begin obr_A; byfer2; writeln('Введите количество приближений для отыскания'); writeln('собственных векторов l,y операторов А и А~ и'); writeln('собственного значения T оператора А:'); readln(k); for k1:=1 to k do
145
begin otisk; normma; writeln(k1,':',' ', 'T=',u[q].G:13:13); vivod; for i:=1 to n do begin y00[i]:=y[i]; l00[i]:=l[i]; end; end; end; procedure metod2; var i,j: integer; begin for i:=1 to n do begin for j:=1 to n do begin u[q].b[i,j]:=a0[i,j]-u[q].G*u[q].x[i]*u[q].l2[j]; end; end; end; procedure metod1; var i: integer; begin writeln('Введите начальные приближения для отыскания решения'); writeln('уравнения вида y=By+f:'); for i:=1 to n do begin readln(z0[i]); end; end; procedure metod3; var i,j:integer; begin for i:=1 to n do begin t8:=0; for j:=1 to n do begin t8:=u[q].b[i,j]*z0[j]+t8; end; z[i]:=t8+f[i]; end; end; procedure vivod1; var i: integer; begin for i:=1 to n do begin write(z[i]:13:13,' ');
146
end; end; procedure ccc; var i,j: integer; begin for i:=1 to n do begin for j:=1 to n do begin if (i=j) then s[i,j]:=1 else s[i,j]:=0; end; end; for i:=1 to n do begin for j:=1 to n do begin a2[i,j]:=s[i,j]-a[i,j] end; end; for i:=1 to n do begin t9:=0; for j:=1 to n do begin t9:=a2[i,j]*u[1].x[j]+t9; end; c2[i]:=t9; end; for i:=1 to n do begin for j:=1 to n do begin a3[i,j]:=a[i,j]-s[i,j]; end; end; for i:=1 to n do begin t10:=0; for j:=1 to n do begin t10:=a3[i,j]*z[j]+t10; end; c3[i]:=t10+f[i]; end; h:=c3[1]/c2[1]; for i:=1 to n do begin x1[i]:=z[i]+h*u[1].x[i]; end; end; procedure ccc1; var i,j: integer; begin for i:=1 to n do begin
147
for j:=1 to n do begin if (i=j) then s[i,j]:=1 else s[i,j]:=0; end; end; for i:=1 to n do begin for j:=1 to n do begin a2[i,j]:=s[i,j]-u[s1].b[i,j]; end; end; for i:=1 to n do begin t9:=0; for j:=1 to n do begin t9:=a2[i,j]*u[s1+1].x[j]+t9; end; c2[i]:=t9; end; for i:=1 to n do begin for j:=1 to n do begin a3[i,j]:=u[s1].b[i,j]-s[i,j]; end; end; for i:=1 to n do begin t10:=0; for j:=1 to n do begin t10:=a3[i,j]*z[j]+t10; end; c3[i]:=t10+f[i]; end; h:=c3[1]/c2[1]; for i:=1 to n do begin x1[i]:=z[i]+h*u[s1+1].x[i]; end; end; begin {основная программа} wwod; q:=0; byfer; repeat q:=q+1; sobstv; metod2; writeln(q,'-я матрица B:'); for i:=1 to n do begin
148
for j:=1 to n do begin a0[i,j]:=u[q].b[i,j]; a1[i,j]:=a0[j,i]; write( u[q].b[i,j]:4:4,' '); end; writeln; end; byfer2; for w:=1 to 9 do begin otisk2; for iq:=1 to n do begin y00[iq]:=y[iq]; l00[iq]:=l[iq]; end; end; writeln('T=',G1:5); if G1>1 then writeln('На ',q,'-ом шаге спектральный радиус больше единицы.') else v:=1 until v=1; readln; metod1; writeln('Введите количество приближений для отыскания решения уравнения y=By+f:'); readln(r); for r0:=1 to r do begin metod3; write(r0,':'); vivod1; for i:=1 to n do z0[i]:=z[i]; writeln; end; for s1:=(q-1) downto 1 do begin ccc1; z:=x1; end; readln; writeln('Решением исходного уравнения x=Ax+f есть вектор:'); ccc; for i:=1 to n do begin writeln(x1[i]:13:13); end; readln; end.
149
§8. Получение двусторонних оценок точного решения x операторного уравнения вида x = Ax + f , в случае, когда спектральный радиус не обязательно меньше единицы. *
program wer2; var t1,t2,t3,max1,min1,l,min2,s1,min3,s2,s3,min4,t4:real; n,k1,k2,k3,i,j,i1,k4,i2,i3,i4 :integer; a: array [1..30,1..30] of real; x,f,c,u1,u2,u3,u4,u5,u6,u7,u8,u0,u00,u9,u10,u11,u12,u13,u14,u15,u16,u140,u100: array [1..30] of real; procedure wwodm; var i,j: integer; begin writeln('Введите размерность матрицы А:'); readln(n); for i:=1 to n do begin for j:=1 to n do begin write('введите элемент матрицы A[ ',i,',',j,']='); readln(a[i,j]); end; end; end; procedure wwodv; var i:integer; begin writeln('введите координаты свободного вектора f:'); for i:=1 to n do readln(f[i]); end; procedure wwodx; var i:integer; begin writeln('введите координаты начального приближения Х:'); for i:=1 to n do readln(x[i]); writeln('введите порядок определения для приближений:'); readln(k1); readln(k2); readln(k3); end; procedure umnog; var i,j: integer; begin for i:=1 to n do begin l:=0; for j:=1 to n do begin
150
l:=a[i,j]*x[j]+l; end; c[i]:=l+f[i]; end; end; procedure umnog2; var i,j: integer; begin for i:=1 to n do begin u9[i]:=(max1*(u2[i]-u1[i]))-(u3[i]-u2[i]); end; writeln('Координаты вектора v0:'); for i:=1 to n do begin writeln(u9[i]:6:6); end; for i:=1 to n do begin u13[i]:=(u3[i]-u2[i])-(min1*(u2[i]-u1[i])); end; writeln('Координаты вектора w0:'); for i:=1 to n do begin writeln(u13[i]:6:6); end; end; begin {основная программа} wwodm; wwodv; wwodx; for i1:=1 to k3 do begin umnog; if (i1=k1) then begin for i:=1 to n do u1[i]:=c[i]; end; if (i1=k2) then begin for i:=1 to n do u2[i]:=c[i]; end; if (i1=k3) then begin for i:=1 to n do u3[i]:=c[i]; end; for i:=1 to n do x[i]:=c[i]; end; writeln('искомый вектор u[',k1,']:'); for i:=1 to n do writeln(u1[i]:7:7); readln; writeln('искомый вектор u[',k2,']:');
151
for i:=1 to n do writeln(u2[i]:7:7); readln; writeln('искомый вектор u[',k3,']:'); for i:=1 to n do writeln(u3[i]:7:7); readln; for i:=1 to n do begin u4[i]:=(u3[i]-u2[i])/(u2[i]-u1[i]); end; max1:=u4[1]; for i:=2 to n do begin if u4[i]>max1 then max1:=u4[i]; end; writeln('"гамма" равно - ',max1:5:5); min1:=u4[1]; for i:=2 to n do begin if u4[i]<min1 then min1:=u4[i]; end; writeln('"бетта" равно - ',min1:5:5); t1:=(max1)/(1-max1); t2:=(min1)/(1-min1); for i:=1 to n do begin u5[i]:=u3[i]+t1*(u3[i]-u2[i]); u6[i]:=u3[i]+t2*(u3[i]-u2[i]); end; writeln('точное решение заключено между следующими векторами:'); for i:=1 to n do begin writeln( ' ',u6[i]:5:5,' ',u5[i]:5:5); end; readln; writeln('Теперь произведем улучшение полученных оценок.'); readln; writeln('Введите координаты вектора u0:'); for i:=1 to n do begin readln(u0[i]); u00[i]:=u0[i]; end; k4:=k2-k1; for i2:=1 to k4 do begin for i:=1 to n do begin s1:=0; for j:=1 to n do begin s1:=a[i,j]*u00[j]+s1; end; u7[i]:=s1; end; for i3:=1 to n do u00[i3]:=u7[i3];
152
end; for i:=1 to n do u8[i]:=u7[i]/u0[i]; min2:=u8[1]; for i:=2 to n do begin if u8[i]<min2 then min2:=u8[i]; end; writeln('q0=',min2:3:3); readln; umnog2; readln; for i3:=1 to k4 do begin for i:=1 to n do begin s2:=0; for j:=1 to n do begin s2:=a[i,j]*u9[j]+s2; end; u10[i]:=s2; end; for i:=1 to n do u9[i]:=u10[i]; end; for i:=1 to n do u100[i]:=u10[i]/u0[i]; min3:=u100[1]; for i:=2 to n do begin if u100[i]<min3 then min3:=u100[i]; end; writeln('q=',min3:5:5); t3:=(min3)/((1-max1)*(1-min2)); for i:=1 to n do u11[i]:=t3*u0[i]; for i:=1 to n do begin u12[i]:=u5[i]-u11[i]; end; for i4:=1 to k4 do begin for i:=1 to n do begin s3:=0; for j:=1 to n do begin s3:=a[i,j]*u13[j]+s3; end; u14[i]:=s3; end; for i:=1 to n do u13[i]:=u14[i]; end; for i:=1 to n do u140[i]:=u14[i]/u0[i]; min4:=u140[1]; for i:=2 to n do begin if u140[i]<min4 then min4:=u140[i];
153
end; writeln('q1=',min4:6:6); t4:=(min4)/((1-min1)*(1-min2)); for i:=1 to n do u15[i]:=t4*u0[i]; for i:=1 to n do begin u16[i]:=u6[i]+u15[i]; end; writeln('После улучшения оценок получаем следующие векторы:'); for i:=1 to n do begin writeln(u16[i]:6:6,' ',u12[i]:6:6); end; readln; end.
154
§9. О некоторых подходах к уточнению границ решения операторных уравнений вида x = Ax + f в случае, когда спектральный радиус r ( A) не обязательно меньше единицы. program wert; type Mat = Array[1..30,1..30] of real; Vec = Array[1..30] of real; var a : Mat; f,l,x,s,y,b,u1,u2,u3,u4,u5,u6,u0,u00,u7,u8,u9,u10,u11,u12 :Vec; u13,u14,u15,u16,u100,u140:Vec; m,m1,g,h,h1,t,t1,t2,max1,min1,s1,min2,min3,min4,s2,s3,t3,t4:real; r,i,j,k,p,k1,k2,k3,i1,k4,n,i2,i3,i4 : integer; procedure wwodmatr; var i,j:integer; begin for i:=1 to p do begin for j:=1 to p do begin write('Введите элемент матрицы А[',i,',',j,']='); readln(a[i,j]); end; end; end; procedure wwodf; var i:integer; begin writeln('Введите координаты свободного вектора f:'); for i:=1 to p do readln(f[i]); end; procedure wwodl; var i: integer; begin for i:=1 to p do l[i]:=1; end; procedure wwodx; var i:integer; begin writeln('Введите координаты вектора x (начального приближения) :'); for i:=1 to p do readln(x[i]); writeln('введите порядок определения для приближений:'); readln(k1); readln(k2); readln(k3);
155
end; procedure umnog; var i,j : integer; begin for i:=1 to p do begin m:=0; for j:=1 to p do begin m:=a[i,j]*x[j]+m; end; s[i]:=m; end; end; procedure scalf; var i :integer; begin g:=0; for i:=1 to p do begin g:=f[i]*l[i]+g; end; end; procedure scalx; var i:integer; begin h:=0; for i:=1 to p do begin h:=x[i]*l[i]+h; end; end; procedure scalAx; var i: integer; begin h1:=0; for i:=1 to p do begin h1:=s[i]*l[i]+h1; end; end; procedure ttt; begin t:=g/(h-h1); end; procedure rrr ; var i: integer; begin for i:=1 to p do b[i]:=s[i]*t; end;
156
procedure summ; var i: integer; begin for i:=1 to p do y[i]:=b[i]+f[i]; end; procedure umnog2; var i,j: integer; begin for i:=1 to p do begin u9[i]:=(max1*(u2[i]-u1[i]))-(u3[i]-u2[i]); end; writeln('Координаты вектора v0:'); for i:=1 to p do begin writeln(u9[i]:6:6); end; for i:=1 to p do begin u13[i]:=(u3[i]-u2[i])-(min1*(u2[i]-u1[i])); end; writeln('Координаты вектора w0:'); for i:=1 to p do begin writeln(u13[i]:6:6); end; end; begin { основная программа } writeln('Введите размерность матрицы А:'); readln(p); wwodmatr; wwodf; wwodl; wwodx; scalf; for i1:=1 to k3 do begin umnog; scalx; scalAx; ttt; rrr; summ; if (i1=k1) then begin for i:=1 to p do u1[i]:=y[i]; end; if (i1=k2) then begin for i:=1 to p do u2[i]:=y[i]; end; if (i1=k3) then begin for i:=1 to p do u3[i]:=y[i]; end; for i:=1 to p do begin
157
x[i]:=y[i]; end; end; writeln('искомый вектор u[',k1,']:'); for i:=1 to p do writeln(u1[i]:7:7); readln; writeln('искомый вектор u[',k2,']:'); for i:=1 to p do writeln(u2[i]:7:7); readln; writeln('искомый вектор u[',k3,']:'); for i:=1 to p do writeln(u3[i]:7:7); readln; for i:=1 to p do begin u4[i]:=(u3[i]-u2[i])/(u2[i]-u1[i]); end; max1:=u4[1]; for i:=2 to p do begin if u4[i]>max1 then max1:=u4[i]; end; writeln('"гамма" равно - ',max1:5:5); min1:=u4[1]; for i:=2 to p do begin if u4[i]<min1 then min1:=u4[i]; end; writeln('"бетта" равно - ',min1:5:5); t1:=(max1)/(1-max1); t2:=(min1)/(1-min1); for i:=1 to p do begin u5[i]:=u3[i]+t1*(u3[i]-u2[i]); u6[i]:=u3[i]+t2*(u3[i]-u2[i]); end; writeln('точное решение заключено между следующими векторами:'); for i:=1 to p do begin writeln( ' ',u6[i]:15:15,' ',u5[i]:15:15); end; readln; writeln('Теперь произведем улучшение полученных оценок.'); readln; n:=p; writeln('Введите координаты вектора u0:'); for i:=1 to n do begin readln(u0[i]); u00[i]:=u0[i]; end; k4:=k2-k1; for i2:=1 to k4 do begin
158
for i:=1 to n do begin s1:=0; for j:=1 to n do begin s1:=a[i,j]*u00[j]+s1; end; u7[i]:=s1; end; for i3:=1 to n do u00[i3]:=u7[i3]; end; for i:=1 to n do u8[i]:=u7[i]/u0[i]; min2:=u8[1]; for i:=2 to n do begin if u8[i]<min2 then min2:=u8[i]; end; writeln('q0=',min2:3:3); readln; umnog2; readln; for i3:=1 to k4 do begin for i:=1 to n do begin s2:=0; for j:=1 to n do begin s2:=a[i,j]*u9[j]+s2; end; u10[i]:=s2; end; for i:=1 to n do u9[i]:=u10[i]; end; for i:=1 to n do u100[i]:=u10[i]/u0[i]; min3:=u100[1]; for i:=2 to n do begin if u100[i]<min3 then min3:=u100[i]; end; writeln('q=',min3:5:5); t3:=(min3)/((1-max1)*(1-min2)); for i:=1 to n do u11[i]:=t3*u0[i]; for i:=1 to n do begin u12[i]:=u5[i]-u11[i]; end; for i4:=1 to k4 do begin for i:=1 to n do begin s3:=0; for j:=1 to n do begin s3:=a[i,j]*u13[j]+s3; end;
159
u14[i]:=s3; end; for i:=1 to n do u13[i]:=u14[i]; end; for i:=1 to n do u140[i]:=u14[i]/u0[i]; min4:=u140[1]; for i:=2 to n do begin if u140[i]<min4 then min4:=u140[i]; end; writeln('q1=',min4:6:6); t4:=(min4)/((1-min1)*(1-min2)); for i:=1 to n do u15[i]:=t4*u0[i]; for i:=1 to n do begin u16[i]:=u6[i]+u15[i]; end; writeln('После улучшения оценок получаем следующие векторы:'); for i:=1 to n do begin writeln(u16[i]:6:9,' ',u12[i]:6:9); end; readln; end. end.
160
§10. “Гибрид” методов ускорения сходимости монотонных приближений к решению x* уравнения вида x = Ax + f и однопараметрического итеративного агрегирования. program wert; { uses printer;} var lr,ch,ch1,zn,zn1,f,sn,sn1,sn2,sn3,z0,z01,z1,a1,a2,a00,b00,b0,u0,v0,u,v,p,q,p1,q1,u 1,v1: array[1..25] of real; a: array[1..25,1..25] of real; it,it1,h1,h2,h3,h11,h12,s,k,b,kt,k1,d0,d1,d01,d10,m01,m02,d02,d12,d012,d102,k0: real; g,g2,t,t1,t2,t3,r,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11:real; c,n1,i,j,n,x,hl,i1,l :integer; procedure wwod; var i,j:integer; begin writeln('введите размерность матрицы A:'); readln(n); writeln('Ввод элементов матрицы А:'); for i:=1 to n do begin for j:=1 to n do begin write('элемент A[',i,',',j,']='); readln(a[i,j]); end; end; writeln('Введите координаты свободного вектора f:'); for i:=1 to n do begin readln(f[i]); end; { writeln('Введите координаты вектора z0 :'); for i:=1 to n do begin readln(z0[i]); end; } for i:=1 to n do lr[i]:=1; end; procedure byferr; var i,j:integer; begin for i:=1 to n do begin z01[i]:=z0[i]; { writeln(u01[i]:4:4)} end; end; procedure umn; var i,j: integer; s: real;
161
begin for i:=1 to n do begin s:=0; for j:=1 to n do begin s:=a[i,j]*z01[j]+s; end; a1[i]:=s; end; end; procedure it_agr; var i,j:integer; begin for i:=1 to n do begin r:=0; r1:=0; for j:=1 to n do begin r:=a[i,j]*u0[j]+r; r1:=a[i,j]*v0[j]+r1; end; sn[i]:=r; sn1[i]:=r1; end; r2:=0; r3:=0; for i:=1 to n do begin r2:=sn[i]*lr[i]+r2; r3:=sn1[i]*lr[i]+r3; end; r4:=0; r5:=0; for i:=1 to n do begin r4:=u0[i]*lr[i]+r4; r5:=v0[i]*lr[i]+r5; end; g:=0; for i:=1 to n do begin g:=f[i]*lr[i]+g; end; t:=g/(r4-r2); t1:=g/(r5-r3); for i:=1 to n do begin u[i]:=t*sn[i]+f[i]; v[i]:=(t1)*sn1[i]+f[i]; end; end; procedure otn; var i,j:integer; begin
162
for i:=1 to n do begin zn[i]:=v0[i]-v[i]; ch[i]:=u[i]-u0[i]; end; for i:=1 to n do begin p[i]:=ch[i]/zn[i]; end; h2:=0; for i:=1 to n do begin h2:=p[i]+h2; end; m01:=h2/n; for i:=1 to n do begin q[i]:=zn[i]/ch[i]; end; h3:=0; for i:=1 to n do begin h3:=q[i]+h3; end; m02:=h3/n; end; begin { начало основной программы } wwod; byferr; writeln('Введите вектор u0:'); for i:=1 to n do begin readln(u0[i]); end; writeln('Введите вектор v0:'); for i:=1 to n do begin readln(v0[i]); end; writeln('Введите количество приближений:'); readln(x); for l:=1 to x do begin it_agr; otn; for i:=1 to n do begin if (m01=-1) or (m02=-1) then begin u1[i]:=u[i]; v1[i]:=v[i]; writeln(l,':',u1[i]:11:8,' ',v1[i]:11:8); writeln('деление на ноль'); end else begin u1[i]:=(u[i]+m01*v[i])/(1+m01); v1[i]:=(v[i]+m02*u[i])/(1+m02); writeln(l,':',u1[i]:11:8,' ',v1[i]:11:8); { writeln(lst,l,':',u1:11:8,' ',v1:11:8);} end; end;
163
for i1:=1 to n do begin u0[i1]:=u[i1]; v0[i1]:=v[i1]; end; readln; end; end. program wert; { uses printer;} var lr,ch,ch1,zn,zn1,f,sn,sn1,sn2,sn3,z0,z01,z1,a1,a2,a00,b00,b0,u0,v0,u,v,p,q,p1,q1,u 2,v2,u02,c72: array[1..25] of real; a: array[1..25,1..25] of real; it,it1,h1,h2,h3,h11,h12,s,k,b,kt,k1,d0,d1,d01,d10,m01,m02,d02,d12,d012,d102,m0 12,m022,u1,v1,k0:real; g,g2,t,t1,t2,t3,r,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,h9,h10,h88,h99:real; c,n1,i,j,n,x,hl,i1,l,dd :integer; procedure wwod; var i,j:integer; begin writeln('введите размерность матрицы A:'); readln(n); writeln('Ввод элементов матрицы А:'); for i:=1 to n do begin for j:=1 to n do begin write('элемент A[',i,',',j,']='); readln(a[i,j]); end; end; writeln('Введите координаты свободного вектора f:'); for i:=1 to n do begin readln(f[i]); end; writeln('Введите координаты вектора z0 :'); for i:=1 to n do begin readln(z0[i]); end; for i:=1 to n do lr[i]:=1; end; procedure byferr; var i,j:integer; begin for i:=1 to n do begin z01[i]:=z0[i]; { writeln(u01[i]:4:4)} end;
164
end; procedure umn; var i,j: integer; s: real; begin for i:=1 to n do begin s:=0; for j:=1 to n do begin s:=a[i,j]*z01[j]+s; end; a1[i]:=s; end; end; procedure it_agr; var i,j:integer; begin for i:=1 to n do begin r:=0; r1:=0; for j:=1 to n do begin r:=a[i,j]*u0[j]+r; r1:=a[i,j]*v0[j]+r1; end; sn[i]:=r; sn1[i]:=r1; end; r2:=0; r3:=0; for i:=1 to n do begin r2:=sn[i]*lr[i]+r2; r3:=sn1[i]*lr[i]+r3; end; r4:=0; r5:=0; for i:=1 to n do begin r4:=u0[i]*lr[i]+r4; r5:=v0[i]*lr[i]+r5; end; g:=0; for i:=1 to n do begin g:=f[i]*lr[i]+g; end; t:=g/(r4-r2); t1:=g/(r5-r3); for i:=1 to n do begin u[i]:=t*sn[i]+f[i]; v[i]:=(t1)*sn1[i]+f[i]; writeln(v[i]:3:3); end;
165
end; procedure otn; var i,j:integer; begin for i:=1 to n do begin zn[i]:=v0[i]-v[i]; ch[i]:=u[i]-u0[i]; end; h2:=ch[1]; for i:=2 to n do begin if ch[i]h9 then h9:=zn[i]; end; m01:=h2/h9; h3:=zn[1]; for i:=2 to n do begin if zn[i]h10 then h10:=ch[i]; end; m02:=h3/h10; end; procedure byferr2; var i,j : integer; begin for i:=1 to n do begin u2[i]:=u[i]; v2[i]:=v[i]; u02[i]:=u0[i]; c72[i]:=v0[i]; end; end; procedure it_agr2; var i,j:integer; begin for i:=1 to n do begin r6:=0; r7:=0; for j:=1 to n do begin r6:=a[i,j]*u02[j]+r6; r7:=a[i,j]*c72[j]+r7; end;
166
sn2[i]:=r6; sn3[i]:=r7; end; r8:=0; r9:=0; for i:=1 to n do begin r8:=sn2[i]*lr[i]+r8; r9:=sn3[i]*lr[i]+r9; end; r10:=0; r11:=0; for i:=1 to n do begin r10:=u02[i]*lr[i]+r10; r11:=c72[i]*lr[i]+r11; end; g2:=0; for i:=1 to n do begin g2:=f[i]*lr[i]+g2; end; t2:=(g2)/(r10-r8); t3:=(g2)/(r11-r9); for i:=1 to n do begin u2[i]:=(t2)*sn2[i]+f[i]; v2[i]:=(t3)*sn3[i]+f[i]; end; end; procedure otn2; var i,j: integer; begin for i:=1 to n do begin ch1[i]:=(u2[i]-u02[i]); zn1[i]:=(c72[i]-v2[i]); end; h11:=ch1[1]; for i:=2 to n do begin if ch1[i]h88 then h88:=zn[i]; end; m012:=h11/h88; h12:=zn1[1]; for i:=2 to n do begin if zn1[i]h99 then h99:=ch1[i]; end; m022:=h12/h99; end; begin { начало основной программы } wwod; byferr; writeln('Введите вектор u0:'); for i:=1 to n do begin readln(u0[i]); end; writeln('Введите вектор v0:'); for i:=1 to n do begin readln(v0[i]); end; it_agr; otn; writeln('Введите количество приближений:'); readln(x); for i:=1 to n do begin writeln('приближение к ',i,'-ой координате вектора решения:'); byferr2; m012:=m01; m022:=m02; for l:=1 to x do begin if (m012=-1) or (m022=-1) then begin u1:=u2[i]; v1:=v2[i]; writeln(l,':',u1:11:8,' ',v1:11:8); writeln('деление на ноль'); end else begin u1:=(u2[i]+m012*v2[i])/(1+m012); v1:=(v2[i]+m022*u2[i])/(1+m022); writeln(l,':',u1:11:8,' ',v1:11:8); end; for dd:=1 to 4 do begin for i1:=1 to n do begin u02[i1]:=u2[i1]; c72[i1]:=v2[i1]; end; it_agr2; end; otn2; readln; end; end; end.