КулЛиб - Классная библиотека! Скачать книги бесплатно 

Вычислительная линейная алгебра в проектах на C# [Иннокентий Васильевич Семушин] (pdf) читать онлайн

Книга в формате pdf! Изображения и текст могут не отображаться!


 [Настройки текста]  [Cбросить фильтры]
ii

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
«УЛЬЯНОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»

ВЫЧИСЛИТЕЛЬНАЯ
ЛИНЕЙНАЯ АЛГЕБРА
В ПРОЕКТАХ НА C#
Учебное пособие

Ульяновск
УлГТУ
2014

УДК 519.61 + 519.654 + 519.244.4 (075.8)
ББК 22.193я7
В94
Рецензенты: д-р физ.-мат. наук, профессор Н. О. Седова, УлГУ,
д-р техн. наук, профессор Н. Г. Ярушкина, УлГТУ,
канд. физ.-мат. наук, доцент А. В. Цыганов, УлГПУ
Утверждено редакционно-издательским советом университета
в качестве учебного пособия
Вычислительная линейная алгебра в проектах на C# : учебное
В94 пособие / И. В. Семушин, Ю. В. Цыганова, В. В. Воронина, В. В. Угаров,
А. И. Афанасова, И. Н. Куличенко. – Ульяновск : УлГТУ, 2014. – 429 c.
ISBN 978-5-9795-1342-3
Учебное пособие охватывает базовые алгоритмы вычислительной линейной алгебры (ВЛА) и ориентирует на их анализ и полномасштабное
исследование методом проектов.
Предлагаемые авторами проекты содержат более 250 индивидуальных
заданий по основным темам ВЛА в трёх частях: «Стандартный курс»,
«Повышенный курс» и «Специальный курс».
Учебное пособие предназначено для студентов и аспирантов, обучающихся на факультетах информационных и вычислительных технологий.
Подготовлено на кафедре «Информационные системы» университета.
УДК 519.61 + 519.654 + 519.244.4 (075.8)
ББК 22.193я7

ISBN 978-5-9795-1342-3

c Колл. авторов, 2014
c Оформление. УлГTУ, 2014

RUSSIAN FEDERATION’S MINISTRY FOR EDUCATION AND SCIENCE
Federal State Educational Government-Financed Institution of
Higher Professional Education
«ULYANOVSK STATE TECHNICAL UNIVERSITY»

COMPUTATIONAL
LINEAR ALGEBRA
BY C# PROJECTS
Study guide

Ulyanovsk
UlSTU
2014

UDC 519.61 + 519.654 + 519.244.4 (075.8)
BBK 22.193я7
В94
Reviewers: N. O. Sedova, D.Sc. (Phys&Math), Professor, UlSU, Ulyanovsk,
N. G. Yarushkina, D.Sc. (Eng), Professor UlSTU, Ulyanovsk,
A. V. Tsyganov, C.Sc. (Phys&Math), Docent, UlSPU, Ulyanovsk
Approved by the University Editorial Board
as a study guide
Computational linear algebra by C# projects : Study guide /
В94 I. V. Semushin, Yu. V. Tsyganova, V. V. Voronina, V. V. Ugarov, A. I. Afanasova,
I. N. Kulichenko. – Ulyanovsk : UlSTU, 2014. – 429 p.
ISBN 978-5-9795-1342-3

The book covers the basic algorithms of Computational Linear Algebra
(CLA) and aims students at algorithm analysis and full-scale study by the
project method.
The projects offered by the authors contain more than 250 individual
assignments on the basic CLA topics arranged into three parts: «Standard
course», «Advanced course», and «Special course».
The book is intended for graduate or post graduate students majoring in
information and computational technologies.
The book has been developed and finalized for publication at the Chair of
Information Systems of the university.
UDC 519.61 + 519.654 + 519.244.4 (075.8)
BBK 22.193я7

ISBN 978-5-9795-1342-3

c Authors, 2014
c Design. UlSTU, 2014

Тогда попросил учитель: Поведай нам об Учении.
И он сказал так:
Ни один человек не откроет вам больше, чем то, что дремлет
уже в предрассветных проблесках вашего знания.
И тот учитель, что ходит в тени храма в окруженьи учеников,
дарит им не мудрость свою, но лишь веру свою и влюблённость.
Если он мудр, то не запретит войти тебе в дом своей мудрости, а
лишь подведёт к порогу твоего собственного ума.
Астроном может рассуждать с тобой о своём понимании
космоса, но он не может дать тебе своё понимание.
Музыкант может петь тебе в ритмах, которыми полнится мир, но
он не может дать тебе ни слуха, что ловит те ритмы, ни голоса,
чтобы их повторить.
И тот, кто воспет в науке о числах, может поведать тебе о
значениях мер и весов, но он не сможет провести тебя дальше.
Ибо прозрение человеческое не сдаёт взаймы свои крылья
другому.
И как каждый из вас одинок в провидении Божьем, так и
каждому быть одиноким в познании Бога и в пониманьи Земли.

—Халиль Джебран, Пророк
Великая книга Природы напиcана
на математическом языке.

—Галилей

Then said a teacher, Speak to us of Teaching.
And he said:
No man can reveal to you aught but which already lies half asleep in
the dawning of your knowledge.
The teacher who walks in the shadow of the temple, among his
followers, gives not of his wisdom but rather of his faith and his
lovingness.
If he is indeed wise he does not bid you enter the house of his
wisdom, but rather leads you to the threshold of your own mind.
The astronomer may speak to you of his understanding of the space,
but he cannot give you his understanding.
The musician may sing to you of the rythm which is in all space, but
he cannot give you the ear which arrests the rythm nor the voice that
echos it.
And he who is versed in the science of numbers can tell you of the
regions of weight and measure, but he cannot conduct you thither.
For the vision of the man lends not its wings to another man.
And even as each one of you stands alone in God’s knowledge, so
must each one of you be alone in his knowledge of God and in his
understanding of the earth.

—Kahlil Gibran, The Prophet
The great book of Nature was written
in mathematics language.

—Galilei

Признательность
Авторы выражают признательность Российскому Фонду Фундаментальных
исследований за частичное финансирование этой работы в форме научноисследовательского гранта № 14-07-00665.

Acknowledgment
Acknowledgment is given by the authors to the Russian Federation for Basic
Research for partly funding this work by research grant № 14-07-00665.

Оглавление
Предисловие . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Введение . . . . . . . . . . .
Учебные цели студента .
Оценка работы студента .
Кодекс студента . . . . .
Краткое описание курса .
I

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .

ОСНОВАНИЯ

17
17
18
23
25
27

1

Проекто-ориентированная методика . . . . . . . . . . . . .
1.1
Метод проектов . . . . . . . . . . . . . . . . . . . . . . . .
1.2
Фронтально-состязательный подход (ФСП) . . . . . . . . .
1.3
Оценивание качества академических проектов . . . . . . . .
1.4
Положения о выполнении и защите проектов . . . . . . . .
1.5
Заключение по разделу 1 . . . . . . . . . . . . . . . . . . .

29
29
32
39
47
51

2

Элементы программирования на C# . . . . . . . . . . . . .
2.1
Синтаксис . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2
Приложения . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3
Сервис . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4
Заключение по разделу 2 . . . . . . . . . . . . . . . . . . .

52
52
55
70
83

II
3

СТАНДАРТНЫЙ КУРС
Проект № 1 «Стандартные алгоритмы LU -разложения»
3.1
Алгоритмы метода Гаусса . . . . . . . . . . . . . . . . . . .
3.2
Выбор ведущего элемента . . . . . . . . . . . . . . . . . . .
3.3
Компактные схемы . . . . . . . . . . . . . . . . . . . . . . .
3.4
Алгоритмы метода Жордана . . . . . . . . . . . . . . . . .
3.5
Вычисление обратной матрицы . . . . . . . . . . . . . . . .
3.6
Плохо обусловленные матрицы . . . . . . . . . . . . . . . .
3.7
Задание на лабораторный проект № 1 . . . . . . . . . . . .
3.8
Варианты задания на лабораторный проект № 1 . . . . . . .
3.9
Методические рекомендации для проекта № 1 . . . . . . . .

85
87
87
90
94
97
101
107
109
112
114

Оглавление

3.10
3.11

Тестовые задачи для проекта № 1 . . . . . . . . . . . . . . . 129
Заключение по разделу 3 . . . . . . . . . . . . . . . . . . . 134

4

Проект № 2 «Разложения Холесского» . . . . . . . . . . .135
4.1
Положительно определённые матрицы . . . . . . . . . . . . 135
4.2
Квадратные корни из P и алгоритмы Холесского . . . . . . 136
4.3
Программная реализация алгоритмов
Холесского . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
4.4
Разложение Холесского: ijk-формы . . . . . . . . . . . . . 141
4.5
Разложение Холесского: алгоритмы окаймления . . . . . . 143
4.6
Особенности хранения ПО-матрицы P . . . . . . . . . . . . 146
4.7
Задание на лабораторный проект № 2 . . . . . . . . . . . . 147
4.8
Варианты задания на лабораторный проект № 2 . . . . . . . 151
4.9
Методические рекомендации для проекта № 2 . . . . . . . . 151
4.10 Тестовые задачи для проекта № 2 . . . . . . . . . . . . . . . 163
4.11 Заключение по разделу 4 . . . . . . . . . . . . . . . . . . . 165

5

Проект № 3 «Ортогональные преобразования» . . . . . .166
5.1
Ортогональные матрицы и приложения . . . . . . . . . . . 166
5.2
Линейная задача наименьших квадратов . . . . . . . . . . . 168
5.3
Ортогональные матрицы и наименьшие квадраты . . . . . . 169
5.4
Преобразование Хаусхолдера . . . . . . . . . . . . . . . . . 170
5.5
Шаг триангуляризации матрицы . . . . . . . . . . . . . . . 175
5.6
Решение треугольной системы . . . . . . . . . . . . . . . . 176
5.7
Преобразование Гивенса . . . . . . . . . . . . . . . . . . . . 179
5.8
Варианты заполнения матрицы R . . . . . . . . . . . . . . 185
5.9
Правосторонние ортогональные преобразования . . . . . . . 186
5.10 Двусторонние ортогональные преобразования . . . . . . . . 187
5.11 Ортогонализация Грама–Шмидта . . . . . . . . . . . . . . 190
5.12 Алгоритмы ортогонализации Грама–Шмидта . . . . . . . . 192
5.13 Решение систем после ортогонализации . . . . . . . . . . . 196
5.14 Обращение матриц после ортогонализации . . . . . . . . . 196
5.15 Задание на лабораторный проект № 3 . . . . . . . . . . . . 196
5.16 Варианты задания на лабораторный проект № 3 . . . . . . . 198
5.17 Методические рекомендации для проекта № 3 . . . . . . . . 199
5.18 Тестовые задачи для проекта № 3 . . . . . . . . . . . . . . . 208
5.19 Заключение по разделу 5 . . . . . . . . . . . . . . . . . . . 219

10

Оглавление

6

III

Пример программной реализации проекта
6.1
Постановка задачи . . . . . . . . . . . . . .
6.2
Класс с реализацией алгоритмов . . . . . .
6.3
Генерация матриц . . . . . . . . . . . . . .
6.4
Создание пользовательского интерфейса
и подключение ранее созданных библиотек
6.5
Завершающее тестирование . . . . . . . . .
6.6
Заключение по разделу 6 . . . . . . . . . .
ПОВЫШЕННЫЙ КУРС

№1
. . .
. . .
. . .

. . . . . .221
. . . . . . 221
. . . . . . 223
. . . . . . 248

. . . . . . . . . 266
. . . . . . . . . 306
. . . . . . . . . 308
315

7

Проект № 4 «Векторно-ориентированные версии
LU -разложения» . . . . . . . . . . . . . . . . . . . . . . . . . .317
7.1
Гауссово исключение и ijk-алгоритмы . . . . . . . . . . . . 317
7.2
Распараллеливание вычислений . . . . . . . . . . . . . . . 319
7.3
Параллельное умножение матрицы на вектор . . . . . . . . 322
7.4
Параллельное LU -разложение . . . . . . . . . . . . . . . . 323
7.5
LU -разложение и его ijk-формы . . . . . . . . . . . . . . . 326
7.6
Треугольные системы . . . . . . . . . . . . . . . . . . . . . 331
7.7
Задание на лабораторный проект № 4 . . . . . . . . . . . . 333
7.8
Варианты задания на лабораторный проект № 4 . . . . . . . 336
7.9
Тестовые задачи для проекта № 4 . . . . . . . . . . . . . . . 336
7.10 Заключение по разделу 7 . . . . . . . . . . . . . . . . . . . 338

8

Проект № 5 «Алгоритмы окаймления
в LU -разложении» . . . . . . . . . . . . . . . . . . . . . . . .339
8.1
Метод окаймления . . . . . . . . . . . . . . . . . . . . . . . 339
8.2
Окаймление известной части разложения . . . . . . . . . . 339
8.3
Окаймление неизвестной части разложения . . . . . . . . . 342
8.4
Задание на лабораторный проект № 5 . . . . . . . . . . . . 344
8.5
Варианты задания на лабораторный проект № 5 . . . . . . . 347
8.6
Тестовые задачи для проекта № 5 . . . . . . . . . . . . . . . 347
8.7
Заключение по разделу 8 . . . . . . . . . . . . . . . . . . . 350

9

Проект № 6 «Итерационные методы решения систем» .351
9.1
Итерационные методы . . . . . . . . . . . . . . . . . . . . . 351
9.2
Итерационная формула . . . . . . . . . . . . . . . . . . . . 352
11

Оглавление

9.3
9.4
9.5
9.6
9.7
9.8
9.9
9.10
9.11
9.12
9.13
9.14
9.15
IV

Метод Якоби . . . . . . . . . . . . . . . . . . .
Метод Зейделя . . . . . . . . . . . . . . . . . .
Матричная запись методов Якоби и Зейделя .
Каноническая форма одношаговых ИМ . . . .
Методы простой итерации, Ричардсона и Юнга
Сходимость итерационных методов . . . . . . .
Скорость сходимости итерационных методов .
Итерационные методы вариационного типа . .
Другие методы . . . . . . . . . . . . . . . . . .
Задание на лабораторный проект № 6 . . . . .
Варианты задания на лабораторный проект № 6
Тестовые задачи для проекта № 6 . . . . . . . .
Заключение по разделу 9 . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

СПЕЦИАЛЬНЫЙ КУРС

.
.
.
.
.
.
.
.
.
.
.
.
.

353
353
353
355
355
356
357
360
365
366
368
369
376
377

10

Проект № 7 «Разреженные формы LU -разложения»
10.1 Упакованные формы хранения матриц . . . . . . . . . .
10.2 Выбор ведущего элемента . . . . . . . . . . . . . . . . .
10.3 Задание на лабораторный проект № 7 . . . . . . . . . .
10.4 Варианты задания на лабораторный проект № 7 . . . . .
10.5 Заключение по разделу 10 . . . . . . . . . . . . . . . .

11

Проект № 8 «Одновременные наименьшие квадраты»
11.1 Линейная задача наименьших квадратов . . . . . . . . .
11.2 Метод нормальных уравнений . . . . . . . . . . . . . . .
11.3 Формирование матрицы A . . . . . . . . . . . . . . . . .
11.4 Задание на лабораторный проект № 8 . . . . . . . . . . .
11.5 Варианты задания на лабораторный проект № 8 . . . . . .
11.6 Заключение по разделу 11 . . . . . . . . . . . . . . . . .

12

Проект № 9 «Рекуррентные наименьшие квадраты» . . .396
12.1 Статистическая интерпретация . . . . . . . . . . . . . . . . 396
12.2 Включение априорных статистических данных . . . . . . . 397
12.3 Включение предшествующего МНК-решения . . . . . . . . 399
12.4 Рекурсия МНК в стандартной информационной форме . . 401
12.5 Рекурсия МНК в стандартной ковариационной форме . . . 402

12

. .379
. . 379
. . 381
. . 384
. . 386
. . 386
.388
. 388
. 390
. 390
. 391
. 394
. 395

Оглавление

12.6
12.7
12.8
12.9

Ковариационный алгоритм Поттера для МНК .
Задание на лабораторный проект № 9 . . . . .
Варианты задания на лабораторный проект № 9
Заключение по разделу 12 . . . . . . . . . . .

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

406
407
411
414

Заключение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .415
Список иллюстраций . . . . . . . . . . . . . . . . . . . . . . . . . . .419
Список таблиц . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .420
Библиографический список . . . . . . . . . . . . . . . . . . . . . .421
Предметный указатель . . . . . . . . . . . . . . . . . . . . . . . . .425

13

Предисловие
Кафедра «Информационные системы» УлГТУ решением № 7 от 24 июня
2014 года рекомендует данное учебное пособие для студентов высших учебных
заведений, обучающихся по направлениям 230700 – «Прикладная информатика» (профиль «Прикладная информатика в экономике») и 321000 – «Программная инженерия». Кроме этих направлений, данное пособие рекомендуется
для многих других, предусматривающих изучение студентами дисциплины под
обобщающим названием «Вычислительная математика» или «Численные методы». К ним могут быть отнесены:
• 010101 – «Математика»,
• 010503 – «Математическое обеспечение и администрирование информационных систем»,
• 210400 – «Телекоммуникации»,
• 210700 – «Инфокоммуникационные технологии и системы связи»,
• 230200 – «Информационные системы»,
• 230400 – «Информационные системы и технологии»,
• 231300 – «Прикладная математика» (профиль «Математическое моделирование в экономике и технике»),
• и другиe, а также
• аспирантура по специальности 05.13.18 – «Математическое моделирование, численные методы и комплексы программ».
Несмотря на различия в названиях учебных дисциплин, курс «Численные
методы» по многим специальностям и направлениям подготовки в университетах преследует следующие общие цели:

Предисловие

• заложить базовые умения и навыки в области разработки вычислительных
алгоритмов решения задач, возникающих в процессе математического моделирования законов реального мира;
• обеспечить понимание основных идей вычислительных методов, особенностей и условий их применения;
• подготовить студентов к применению этих знаний в дальнейшей учёбе и
практической деятельности.
В курсе «Численные методы» значительное время отводят на изучение раздела
«Вычислительная линейная алгебра». Согласно требованиям Государственного
образовательного стандарта, к ВЛА относят шесть тем:
• тема 1 – методы исключения в решении систем;
• тема 2 – разложения Холесского положительно определенных матриц;
• тема 3 – методы ортогональных преобразований;
• тема 4 – итерационные методы решения систем;
• тема 5 – алгоритмы метода наименьших квадратов (МНК);
• тема 6 – методы решения проблемы собственных значений матриц.
Данное пособие покрывает пять первых тем из этого списка, при этом его
отличительной особенностью является проектный метод изучения всех пяти
тем. Базовым учебником для написания данного пособия послужила книга [6]:
Семушин, И. В. Вычислительные методы алгебры и оценивания. – Ульяновск:
УлГТУ, 2011.
Пособие структурно организовано в форме четырёх частей.
• Часть I – Основания; здесь изложены особенности нашей реализации
проекто-ориентированнного подхода к преподаванию и изучению дисциплины ВЛА.
• Часть II – Стандартный курс; этот материал охватывает темы 1, 2 и 3 из
приведённого списка тем ВЛА.
• Часть III – Повышенный курс; здесь предлагаются две углублённые версии
темы 1 из этого списка и тема 4.
15

Предисловие

• Часть IV – Специальный курс; развивает тему 1 в аспекте разреженных
матриц и предлагает изучение метода наименьших квадратов в двух принципиально разных формах: (1) одновременные алгоритмы МНК и (2) последовательные (рекуррентные) алгоритмы МНК.
Значение «Численных методов» во многих областях науки и техники трудно
переоценить, – и оно постоянно растёт. Важно, чтобы студенты, готовящиеся стать специалистами в области математического моделирования, численных методов и комплексов программ, обладали подлинно глубокими знаниями,
т. е., знаниями, имеющими для них практическую ценность в их будущей деятельности. Такое знание достигается не схоластическим изучением теории и
не решением элементарных задач в классе, но реальной проектной работой
по созданию серьёзных программных продуктов высокого профессионального
уровня, воплощающих эти численные методы.
В связи с этим данное пособие, как и указанный выше базовый учебник,
разрабатывает так называемый проекто-ориентированный подход, при котором
студенты, получив необходимый теоретический материал, закрепляют эти знания в практических лабораторных проектах. Надеемся, что при таком подходе
к преподаванию и изучению студент лучше поймёт и оценит этот предмет.
Для реализации лабораторных проектов в этом пособии выбран язык C#,
поскольку он является одним из основных языков программирования, изучаемых на факультете информационных систем и технологий УлГТУ, а также на
факультете математики и информационных технологий УлГУ. Кроме того, язык
C# применяется при разработке многих приложений в софтверных компаниях. В данном пособии студентам предоставляется шанс закрепить полученные
навыки программирования и усовершенствовать их посредством разработки достаточно сложного вычислительно-ориентированного программного проекта.
Авторы искренне надеются, что данное учебное пособие поможет студентам овладеть практическими навыками реализации алгоритмов вычислительной линейной алгебры, а также навыками создания программных проектов,
предназначенных для научно-исследовательских целей.
Учебное пособие разработано при частичной поддержке Российского Фонда
Фундаментальных Исследований (проект № 14-07-00665).
Ульяновск
Ноябрь 2014

16

Авторы

Введение
Учебные цели студента
Мы живём в высокотехнологичном мире, в котором компьютер уже стал
неотъемлемой частью. К тому же, наше общество всё больше зависит от математики. Любая проблема решается лучше, если для неё найдена или построена
подходящая (удовлетворительная, т. е., адекватная) математическая модель.
При том, что для этого может потребоваться различный объём математических знаний, каждому, кто берётся решать математически ориентированные
проблемы, необходимо иметь навыки аналитического мышления.
Допустим, вы этим обладаете и смогли придать задаче математическую
форму, т. е., дали правильную математическую постановку задачи; вопрос заключается в том, существует ли для этой задачи аналитическое решение? Действительность такова, что множество задач, для которых аналитическое решение существует и может быть найдено в конечной форме, невелико. Большинство задач требует численных методов для своего решения. Особенность же
этой области знания такова, что «наилучшего» численного метода обычно не
существует, так как в одних условиях лучшим будет один метод, в то время как
для других условий успешнее работает другой метод. Понять и обосновать, какой же метод выбрать как лучший, можно лишь проводя вычислительные эксперименты с различными методами и для различных задач и условий. Для этого
нужно уметь осознанно планировать вычислительные эксперименты, понимать
и правильно программировать численные методы и эффективно использовать
возможности вычислительной техники.
Таким образом, безусловно каждому из вас потребуется хорошая компьютерная подготовка, чтобы выжить на рынке труда и успешно функционировать
среди грамотных компьютерных пользователей. Было бы образовательным преступлением получить диплом выпускника университета и не иметь этих навыков
хотя бы на удовлетворительном уровне. В конце концов, для этого вы и посещаете курсы информатики, программирования и численных методов.

Введение

Курс численных методов способствует этому, предоставляя преподавателю и
студенту богатый набор индивидуальных заданий. В этом курсе мы преследуем
три конкретные цели:
1. Студенты научатся выводить и доказывать положения математической
теории численных методов, т. е., разовьют навыки аналитического мышления. Эти навыки будут проверены посредством финального экзамена.
2. Студенты увидят, как математика и компьютеры применяются к проблемам реального мира, т. е., научатся решать задачи. Эти умения будут
проверены посредством семестровых контрольных работ, которые мы рассматриваем как часть распределённого по времени экзамена.
3. Студенты приобретут реальный опыт разработки компьютерных программ
высокого (почти профессионального) уровня и навык применения компьютеров посредством написания, отладки и многочисленных прогонов своих
программ. Приобретенный опыт будет проверен посредством выполнения
домашних заданий на лабораторные работы, которые по своей значимости мы трактуем как весомые учебные программные проекты, имеющие
большое значение.
Именно выполненные студентом проекты дадут ему возможность определить,
что именно он по-настоящему изучил и понял в этом курсе.

Оценка работы студента
Выставление финальной оценки. Для оценки того, в какой мере студент приблизился к своим целям – навыки, умения и опыт, – мы применяем
следующую систему оценок.


Ваша оценка есть взвешенное среднее посещаемости (A), домашней работы (H) и экзаменов (E), где под «экзаменами» (см. подробнее ниже)
понимается учёт не только финального экзамена (во время сессии), но и
контрольных работ в течение семестра:
5 % – посещаемость.
Этот вес действует только в случае, если вы посещаете занятия. Если
вы пропускаете занятия, этот вес прогрессивно снижается (см. ниже).
Вы можете получить «неудовлетворительно» исключительно в результате низкой посещаемости.

18

Введение

30 % – домашняя работа.
65 % – экзамены.
Таким образом, итоговая оценка (final grade, F G) вычисляется по правилу:
F G = 0.05A + 0.30H + 0.65E,
(1)
где каждая составляющая:
A ≡ attendance (посещаемость),
H ≡ homework (домашняя работа) и
E ≡ exams (экзамены)

выражается целым числом не выше 100 баллов.





Эта итоговая оценка затем отображается на стандартную шкалу оценок:
{82 : 100} ⇒ «отлично»,
{70 : 81} ⇒ «хорошо»,
{56 : 69} ⇒ «удовлетворительно»,
{0 : 55} ⇒ «неудовлетворительно».
Пример.
Студент Иван С. имеет следующие баллы:
A = 90, H = 87, E = 83. Тогда 0.05 × 90 + 0.30 × 87 + 0.65 × 83 = 84.6.
Следовательно, Иван заработал «отлично».
Имейте в виду, что оценки зарабатываются.



Мы оставляем за собой право дать своего рода «плюс-минус дельта»,
если студент имеет оценку на границе между оценками (т. е., 81, 69 или
55). Если студент имеет 90 или выше за посещаемость (A ≥ 90), сдал все
домашние задания в установленный срок и проявил хорошее прилежание,
тогда мы рассматриваем возможность выставления ему следующей более
высокой оценки. Если же студент не продемонстрировал указанных выше
качеств, возможность повышения оценки исключается. Мы не рассматриваем возможности повышения оценки, если до граничного значения не
хватает хотя бы одного балла.



Для итоговой оценки мы используем «симметричное» округление, т. е.,
округляем вверх, если младшая цифра есть 5 или выше, и вниз, если она
меньше пяти. При вычислении средней оценки за домашнюю работу и
средней за экзамены соответствующие числа H и E округляются до ближайшей десятой, и затем они умножаются на свои весовые коэффициенты
0.05 и 0.30; после сложения по формуле (1) финальная оценка округляется.
19

Введение

Учёт посещаемости (A)




Каждое учебное занятие, в том числе лекция, начинается с вашей росписи
в явочном листе. Поставить свою роспись – ваша личная ответственность.
Отсутствие росписи означает ваше отсутствие на занятии. Чтобы ваше отсутствие было расценено как уважительное, вы должны известить об этом
преподавателя своевременно (т. е., в течение одной недели до или после
занятия). Пожалуйста, оставьте преподавателю телефонное сообщение на
рабочий телефон (секретарю кафедры) или записку.
Ваша оценка за посещаемость будет определена по табл. 1.
Таблица 1. Влияние неуважительных пропусков на оценку
Число неуважительных
пропусковa

Балл
A

Вклад в F G, вашу
итоговую оценку

0

100

+5

1

90

+4.5

2

50

+2.5

3

0

+0

4

−50

−2.5

−150

−7.5

−400

−20

5
6
7
8
9
10
a




20

−100

−200

−600

−800

−5

−10

−30

−40

Неуважительный пропуск есть пропуск занятия, который не
связан с болезнью, с семейной утратой или с факультетским
мероприятием.

При числе неуважительных пропусков выше десяти у вас нет шанса получить положительную итоговую оценку за весь курс.
Вы можете иметь максимум 8 уважительных пропусков. После этого все
пропуски считаются неуважительными.
Для спортсмена пропуск занятия считается уважительным, если его тренер
известит об этом преподавателя заранее в письменной форме. Если вы

Введение

больны, позвоните на кафедру, чтобы преподавателя об этом известили.
Извещение следует делать в форме телефонного сообщения или записки
секретарю кафедры. Ваше извещение должно содержать номер группы,
день и время пропускаемого занятия, название предмета и, конечно, ваше
имя и фамилию.
Домашняя работа (H)


Вам будет предложен ряд домашних заданий, которые – по нашему предположению – вы выполните и сдадите. Баллы за отдельные задания складываются и тем самым образуют H, т. е., оценку за этот вид вашей учебной
работы. Любая сдача домашнего задания позже установленного срока влечёт уменьшение вашей оценки H на 10 баллов. За каждое невыполненное
задание в H поступает 0.



Домашние задания представляют собой задания на лабораторные работы
(проекты). Обычно мы предлагаем выполнить 3 таких работы за семестр,
т. е., выдаём 3 задания. Максимальное количество баллов H, которое
можно заработать за всю домашнюю работу, составляет 100. Эти 100 баллов мы разделяем определённым образом между общим числом выданных
домашних заданий.



Предлагаемые каждому студенту 3 лабораторные работы на первый семестр покрывают три темы из списка на стр. 15, включённые в данное пособие. За выполненный безупречно и в полном объёме проект № 1 студент
заработает 50 баллов, причём по срокам это задание должно предшествовать всем последующим. Далее, за выполненное безупречно и в полном
объёме проект № 2 студент заработает 20 баллов, а за выполненное безупречно и в полном объёме задание проект № 3 – 30 баллов. Заработанное
число баллов за каждое задание будет уменьшено, если защита работы не
отвечает всем требованиям, изложенным в данном учебном пособии, или
не демонстрирует самостоятельность выполнения.



Обнаруженная несамостоятельность выполнения (плагиат, т. е., выдача чужого проекта за свой) имеет своим результатом то, что в H немедленно
поступает 0.



Следующие по номерам проекты могут предлагаться в рамках дополнительного семестра или как курсовые работы.



Преподаватель, ведущий лабораторные занятия в дисплейном классе, назначит сроки сдачи лабораторных работ и на каждом занятии всегда с
21

Введение

готовностью поможет вам, если вы ясно формулируете те конкретные
вопросы, которые у вас возникли. Преподаватель, ведущий семинарские
(практические) занятия, поможет вам и всей аудитории, когда вы будете
у доски рассказывать, как вы понимаете и как дома программируете тот
или иной алгоритм.
Экзамены (E)


Ваша оценка за экзамены, т. е., величина E в составе финальной оценки,
вычисляемой по формуле (1), будет определена как равномерно взвешенное среднее значение результатов PКР–1 , PКР–2 и PКР–3 трёх письменных контрольных работ (КР–1), (КР–2) и (КР–3) в течение семестра и результата
PУО устного ответа (УО) на зачёте (во время зачётной недели) или на экзамене (во время экзаменационной сессии). Это означает, что
E = (PКР–1 + PКР–2 + PКР–3 + PУО ) /4,

PКР–i , PУО ∈ [0, 100].

(2)

При том, что контрольные работы письменно проверяют ваше умение
решать задачи, устный зачёт или экзамен есть всеобъемлющая проверка
вашего знания основных положений теории, умения доказывать эти положения и делать из них логические выводы. Эти (письменная и устная)
части E (2) в совокупности покрывают весь учебный курс. Для этого мы
проводим обычно три контрольные работы за семестр.

22



Все контрольные работы будут вам объявлены заранее – не позднее, чем
за неделю. Если вы собираетесь пропустить контрольную работу (это должен быть уважительный пропуск), мы предпочтём, чтобы вы написали
эту работу раньше назначенного срока. Если вы не сможете написать контрольную работу до назначенного срока, то примите все меры к тому,
чтобы написать её в течение недели после контрольного срока. По истечении недели после этого вы получите ноль. Вы также получите ноль за
неуважительный пропуск контрольной работы.



Мы переписываем и заменяем некоторые задания или делаем вариации
в постановке экзаменационных вопросов по сравнению с теми, которые
опубликованы в наших учебных пособиях, в предыдущем семестре или в
типовой рабочей программе на нашем сайте. Об этом будет объявлено за
две недели до контрольных работ или финального экзамена.

Введение

Кодекс студента
Академическая честность


К сожалению, есть люди, не столь честные, как другие, и настолько, что
мы должны пояснить, как будем действовать в этом случае.



За любую контрольную работу, экзамен, программу или любой иной вид
работы, который выполнен нечестно, вы получите ноль, и преподаватель
будет беседовать с вами. Если такая проблема случится во второй раз,
преподаватель направит вас к декану факультета, и вы снова заработаете
ноль за этот вид работы. Если вопрос о нечестности возникнет в третий
раз, то вы сразу заработаете «неудовлетворительно» за весь предмет и
снова будете отправлены к декану.



Что считается академической нечестностью, т. е., обманом? По общепринятому правилу, это означает найти кого-то другого, кто сделает за вас
вашу работу, и выдать её за вашу собственную. Это также включает получение и оказание посторонней помощи на экзамене или во время контрольной работы (от соседа или с помощью шпаргалки).



Наши экзамены — это всегда закрытая книга, закрытый конспект, закрытый сосед и открытый ум. Если в этом правиле появятся какие-либо изменения, об этом будет объявлено заранее.



Не пользуйтесь шпаргалками. Они приносят больше вреда, чем пользы.
Ваше сознание будет раздвоено между попыткой сформулировать ответ и
попыткой утаить факт пользования шпаргалкой. Обнаружить такое раздвоенное сознание не составляет никакого труда. Вы будете обескуражены
ещё больше самыми простыми вопросами экзаменатора.



При выполнении домашних заданий приемлемо работать с кем-то ещё, обсуждая трудные вопросы и помогая тем самым друг другу, но при этом вы
должны сами делать свою работу. Например, при написании компьютерных программ вполне нормально – обсуждать синтаксис, детали задания
или получать помощь по сообщениям об ошибке. Ненормально, если вы отдаёте кому-то копию вашей программы. Неприемлемо, если кто-то другой
пишет программу для вас. Недопустимо копировать работу предыдущего
семестра.



В курсовых работах – вообще, в любых письменных работах – плагиатом
является дословное копирование части чужих трудов, таких как чья-то
23

Введение

статья (в том числе и опубликованная в Интернете), книга или энциклопедия, без использования кавычек и ссылки на источник. Обобщающие
заключения и выводы, которые вы пишете, должны быть выражены вашими собственными словами.


Нечестность, когда она появляется в домашней работе, не столь очевидна.
Мы это вполне признаём. Но она так или иначе проявит себя на устном
зачёте или экзамене, так как ваш балл за домашнюю работу будет контрастировать с уровнем вашего ответа. Вы только навредите себе и осложните
свое положение очевидной провинностью.

Поведение в аудитории


Примите все меры к тому, чтобы приходить на занятия вовремя. Если вы
всё же опаздываете,







не спрашивайте разрешения войти и не извиняйтесь за опоздание,
не проходите на место перед передним рядом мест,
тихо займите ваше место,
для получения любого раздаточного материала (если он есть)
дождитесь конца занятия,
не хлопайте дверью.



Чтобы выйти из аудитории, просите разрешения.



Поднимайте руку и ждите, когда на вас обратят внимание, перед тем как
задать вопрос.



Не разговаривайте в аудитории.



Уберите за собой и поставьте стул в исходное положение.

Путь к успеху

24



Приходите на занятие вовремя, принимайте в нём участие и ведите записи.



Просматривайте задания до занятия.



Проверяйте ваши записи после занятия.



Вовремя выполняйте ваши задания.



Не накапливайте задолженности по самостоятельной работе – чтению
учебных материалов, по домашней работе и в целом – по учебе.

Введение


Выполняйте рекомендации по подготовке к контрольным работам и к финальному экзамену. Убедитесь, что вы можете решать типовые задачи и
доказывать теоремы, которые во время лекций были отмечены как упражнения для самостоятельной работы.



Придерживайтесь твёрдой решимости добиться успеха.



Если вам нужна помощь, получайте её безотлагательно.



Сохраняйте позитивное отношение к делу.

Обратная связь


По окончании всего курса занятий заполните анонимно лист обратной
связи, который выдаст преподаватель. В нём вы можете отметить как положительные, так и отрицательные, на ваш взгляд, стороны преподавания
этого предмета в текущем семестре.



Преподаватель периодически просматривает свой сайт. Вы можете
посылать через него ваши кратко сформулированные предложения,
которые, по вашему мнению, помогли бы вам повысить эффективность
изучения этого предмета.

Добро пожаловать на наши занятия. Вместе мы рассчитываем на большой
и продуктивный семестр!

Краткое описание курса
Показанный ниже примерный план (с. 26) может незначительно варьироваться в соответствии с новыми образовательными стандартами. Однако как
бы ни называлась дисциплина, соответствующая этому плану, – «Численные
методы», «Вычислительная математика» или «Методы вычислений», – главная отличительная особенность нашего курса и данного пособия выражается в
следующем диалоге, который иногда возникает между Студентом и Экзаменатором:
Студент: Я знаю этот численный метод и хочу получить более высокую оценку.
Экзаменатор: Если вы хорошо знаете этот метод, тогда научите
этому компьютер.

25

Введение

ВЫЧИСЛИТЕЛЬНЫЕ МЕТОДЫ (АЛГЕБРЫ)
Кредиты: 3a
Формат:

Семестр: 1b
Обязательный: ДА
Лекции
34 ч
Семинары

Лабораторные работы
17 ч
Самостоятельная работа
49 ч
Преподаватель: Будет объявлен за четыре месяца до начала семестра.
Содержание:

Экзамен

Методы решения базовых задач вычислительной линейной алгебры: решение систем
уравнений, обращение матриц и вычисление определителей. Программа курса охватывает: методы исключения неизвестных (факторизация матриц), разложения Холесского, ортогональные преобразования, итерационные методы, задачи ВЛА с разреженными матрицами, метод наименьших квадратов и его численно устойчивые алгоритмы.
Ожидаемые результаты изучения:
вопросы погрешностей вычислительных методов; обусловленность
задач и методов; прямые и итерационные методы решения систем;
знать и
особенности вычислений с разреженными матрицами; задачи и
понимать:
алгоритмы метода наименьших квадратов.
способность:
понимать и формулировать основные численные процедуры ВЛА;
(теоретические
решать демонстрационные задачи; идентифицировать численные
навыки)
методы для конкретных задач линейной алгебры.
способность:
понимать реализацию и поведение численных методов; логически
(практические
формулировать алгоритмы ВЛА для программирования на языках
навыки)
высокого уровня (C #, Pascal или C/C++).
способность:
осваивать предмет самостоятельно; анализировать литературные
(ключевые
источники; профессионально использовать компьютер; планиронавыки)
вать работу и эффективно распоряжаться своим временем.
Оценивание: 5 % за посещаемость (неуважительные пропуски прогрессивно штрафуются); 30 % за семестровые (домашние) задания, 65 % суммарно за три контрольные
работы и финальный (устный) экзамен.
Семестровые (домашние) задания: Студент разрабатывает программные проекты,
реализующие численные методы решения базовых задач ВЛА и позволяющие проводить
широкие вычислительные эксперименты.
Рекомендуемые учебные материалы:
1. И. В. Семушин. Вычислительные методы алгебры и оценивания. – Ульяновск: УлГТУ,
2011. [Доступ: http://venec.ulstu.ru/lib/disk/2013/119.pdf]
2. В. В. Воеводин. Численные методы алгебры. Теория и алгоритмы. – М.: Наука, 1966.
3. А. А. Самарский, А. В. Гулин. Численные методы. – М.: Наука, 1989.
Дополнительное чтение:
4. Н. С. Бахвалов, Н. П. Жидков, Г. М. Кобельков. Численные методы. – М.: Наука, 1987.
5. Дж. Райс. Матричные вычисления и математическое обеспечение – М.: Мир, 1984.
a
b

26

Число кредитных часов (приравнивается числу аудиторных часов в неделю).
Продолжительность курса.

I
ОСНОВАНИЯ

1
Проекто-ориентированная методика
1.1

Метод проектов

Учиться, делая
Развитие навыков глубокого мышления является одной из главных забот педагога. Исследования показывают, что использование компьютера как инструмента познания открывает большие возможности [47]. Однако ещё бо́льшие
возможности заключает в себе разработка программ для компьютера. Здесь
студент реализует и ощущает себя не как простой пользователь готового, но
как создатель нового. Разработка, проектирование – это творческая деятельность, рассчитанная на пытливость молодого ума. Включение психологических механизмов, мотивирующих к такой деятельности, меняет всю «философию» педагога. Образовательное взаимодействие преподавателя и студента
из «препо-центрированного» превращается в «студент-центрированный» процесс. Фокус процесса смещается от «преподавателя-рассказчика» к студенту,
который «учится, делая» [58]. Об этом говорил ещё Аристотель, – см. [6]: «Ибо
то, что нам надо постичь, чтобы уметь это делать, мы постигаем, делая это».
Проекто-ориентированное обучение: обоснования
и преимущества
Проектный метод имеет долгую традицию в науке и практике образования.
Так, в [49] читаем:
«Kilpatrick [48] отстаивал «проектный метод», а Dewey [44] продвигал «обучение из опыта». В типичном случае обучение, основанное
на проектах, имеет пять характеристик: (a) целенаправленность, (б)
ведущий вопрос, (в) подлинность (соответствие реальности), (г) конструктивное исследование и (д) самостоятельность студента [58].

1 Проекто-ориентированная методика

В проекто-ориентированном образовании (ПОО) проекту обычно
отводится роль главной стратегии преподавания, которая побуждает
студентов изучать и самостоятельно наталкиваться на то, что́ им
необходимо изучить. На практике ПОО обычно стартует с одного
ведущего вопроса, вынуждающего студентов осваивать центральные
понятия и принципы некоторой темы. Этот ведущий вопрос, как правило, тесно связан с тем, что встречается в реальной жизни, при
этом от студентов требуется исполнение реальных ролей и решение
вполне осмысленных задач. Чтобы найти ответ на поставленный вопрос, студенты вовлекаются в познавательные процессы: решение задач, принятие решений, проектирование и вдумчивое размышление.
Это помогает студентам преобразовывать информацию и конструировать своё собственное знание и толкование. Такой процесс поощряет студентов брать ответственность за своё обучение и становиться
самостоятельными в своих решениях. В этом процессе к студентам
приходит высокое чувство собственного достижения».
ПОО широко распространено за рубежом и постепенно находит применение в Российских образовательных учреждениях. Оно реализуется в различных
формах и способах.
Всемирная инициатива CDIO
В настоящее время наиболее заметной формой и способом реализации ПОО
является Всемирная инициатива CDIO (Conceive ⇒ Design ⇒ Implement ⇒
Operate) [32], [43]. Её замысел, возникший в 1999 году, был продиктован потребностями нашего высокотехнологичного времени и документально оформился в 2000 году в трёх университетах Швеции: Royal Institute of Technology in
Stockholm, Linköping University in Linköping, Chalmers University of Technology in
Göteborg, и в ведущем техническом университете США – Massachusetts Institute
of Technology (MIT).
При поддержке фонда Wallenberg Foundation эти университеты провозгласили программу международного сотрудничества, разработанную ими для улучшения додипломного инженерного образования в Швеции, в США и по всему
миру. Сначала эта тесно скоординированная программа объединяла усилия четырёх университетов-инициаторов программы. С тех пор число её участников
постоянно растёт.
Общий замысел этого проекта следующий: погрузить студентов в такой образовательный процесс, в котором фундаментаментальные дисциплины инже30

1.1 Метод проектов

нерного знания осваиваются студентами в контексте «Задумай ⇒ Спроектируй
⇒ Реализуй ⇒ Управляй» (CDIO), типичном для систем и изделий реального
мира.
На конец 2014 года в программе-консорциуме CDIO участвуют 114 вузов
мира в семи регионах (Европа, Северная Америка, Азия, Латинская Америка,
Великобритания–Ирландия, Австралия–Новая Зеландия и Африка). В CDIO
участвуют пока только девять университетов России:
1. Астраханский государственный технический университет (с 2012)
2. Московский авиационный институт (с 2012)
3. Московский физико-технический институт (с 2013)
4. Национальный университет ядерных исследований (с 2014)
5. Сибирский федеральный университет (с2012)
6. Сколковский научно-технический институт (с 2012)
7. Томский политехнический институт (с 2011)
8. Томский технический институт систем управления и радиоэлектроники
(с 2013)
9. Уральский федеральный университет (с 2013)
Расширенное заседание Правительства РФ 31.01.2013 поставило задачи
поддержки этого направления в вузах России ввиду острого дефицита инженеров, полагая, что это поможет решить задачи опережающей подготовки
инженеров для инновационного технологического развития страны.
Доводы для Российских университетов в пользу участия в CDIO:
1. Государственная поддержка.
2. Конкурентное преимущество при наборе абитуриентов.
3. Влияние на рейтинг вуза в системе Минобрнауки.
4. Доступ к базе данных коммерческих и государственных заказов на высокотехнологические разработки.
5. Участие в распределении целевых грантов и субсидий на развитие и достройку своей инфраструктуры под требования стандартов.
31

1 Проекто-ориентированная методика

6. Доступ к участию в международных конкурсах и чемпионатах управленческих компетенций и надпредметных навыков.
7. Другое (общая престижность и значимость) . . .
В Ульяновске проекто-ориентированное обучение возникло в 1989 году, когда
под эгидой Московского государственного университета им М. В. Ломоносова
зарождался Ульяновский государственный университет и в составе нового университета начали функционировать механико-математический факультет и кафедра Математической кибернетики и информатики. В 1999 году от кафедры
МКИ для доклада на ICME-9 (9-й Международный конгресс по математическому образованию) появился материал [52] по фронтально-состязательному
подходу к преподаванию вычислительной математики (ВМ). В 2002 и 2003 годах были сделаны доклады о проекто-ориентированном обучении в области
вычислительной математики и информатики (ВМИ) [54], [55], [56] на трёх международных конференциях.

1.2

Фронтально-состязательный подход (ФСП)

Теории обучения
Большинство дискуссий в теориях обучения отмечают важность мотивации,
обратной связи и поощрения [45]. Замечено, что компьютеры улучшают мотивацию к обучению, особенно для людей с физическими ограничениями или
же одарённых, тем, что они: (1) занимают внимание, (2) индивидуализируют
преподавание, (3) обеспечивают доступ к поучительным ситуациям и впечатлениям, что трудно обеспечить иными средствами, (4) предоставляют возможности и средства коммуникации. По Malone (1981), как отмечается в [45], истинная мотивация означает широкие возможности для выбора сложности решаемых задач, обратной связи и чётко очерченных критериев качества учебной
работы.
«Обратная связь и поощрение – два ключевых момента в обучении.
Обратная связь снабжает учащегося информацией о его ответах, в то
время как поощрение усиливает тенденцию к повторению некоторого
специфического ответа. Обратная связь может быть положительной,
отрицательной или нейтральной. Информационная теория обучения
придаёт большее значение обратной связи, в то время как бихевиористская теория акцентирует поощрение. В обоих случаях одной из
32

1.2 Фронтально-состязательный подход (ФСП)

критических величин является промежуток времени между ответом
и обратной связью или поощрением, и чем меньше этот промежуток,
тем легче и естественнее протекает процесс обучения».
Однако вести учебный процесс в точном соответствии с принципом «стимулреакция-обратная связь/поощрение» чрезвычайно трудоёмко, но со взрослыми
людьми ещё и непросто. Преподаватели университета тем и отличаются от учителей школы, что они не проводят каждый день «уроки» или контрольные работы или зачёты и не вступают в существенные взаимообмены информацией,
пока студенты сами не обращаются с вопросами. Они, скорее, инструктируют
студентов и дают им волю «впитывать» содержание курса посредством значительной по объёму самостоятельной работы. Справедливо говорит Richard Dorf,
«То, что мы по-настоящему изучили и поняли, мы открывали сами» [17]. Это
снова убеждает нас в том, что проекто-ориентированная методика соединяет
все преимущества:
• Целенаправленность. Задание на проект (работу) должно настраивать студента или группу студентов, если проект групповой, на достижение одной
цели, которую они сами способны понять и сформулировать.
• Подлинность. Задание должно соответствовать реальности, то есть формулировать задачи, соответствующие действительности.
• Вызов. Задание должно предусматривать возрастающие уровни сложности, бросающие студенту вызов с тем, чтобы актуализировать (приводить
в действие) все возможности личности, её творческий потенциал и состязательный инстинкт.
• Разнообразие. Набор заданий должен создавать возможность свободного
выбора несовпадающих тем и предусматривать различные сценарии выполнения для поддержания интереса.
• Поощрение. Оценивание достигнутого студентом уровня должно быть количественно измеримо и понятно студенту по мере улучшения приобретённых им навыков и согласно текущей общей успешности выполнения
задания (распределённое по времени градуированное поощрение).
• Навигация. Студент должен иметь возможность самостоятельно осуществлять навигацию по любым сценариям выполнения проекта (контролируемая студентом навигация) для получения желаемой оценки и – в конечном
итоге – для достижения своих личных образовательных целей.
33

1 Проекто-ориентированная методика

Особенности математики и информатики
Математика и информатика как предметы для преподавания или изучения
обладают той особенностью, что не могут быть просто «вложены» в память
учащегося. Это означает, что хороший студент не хочет останавливаться на первом уровне знания, т. е., на уровне простого понимания. Он стремится перейти
на следующий уровень, – уровень самостоятельного воспроизведения того, что
понял. Хотя и это уже неплохо, некоторые студенты не останавливаются на
этом. Для них важен третий уровень, который означает способность усомниться
в качестве имеющегося решения, вывести новый результат и обосновать его
преимущества.
Чтобы подняться с первого уровня, студент пропускает через себя всю информацию посредством самостоятельного решения большого числа задач. Однако этого недостаточно. Как говорил венгерский математик Alfréd Rényi, «Тот,
кто изучает решение без понимания сути, не может использовать его надлежащим образом» [35]. Независимый, критический подход и творчество – это те
качества, которые нужны студенту для достижения третьего уровня, и только
такое знание имеет реальную ценность, когда изучают математику или информатику.
Другое свойство математики заключается в том, что её часто называют
«кабинетной» наукой. Однако для многих университетов характерны большие
аудитории студентов до такой степени, что их обозначают термином «поток».
Почти очевидно, что большой поток студентов служит своеобразным препятствием на пути развития независимого, самостоятельного мышления. Многие
студенты предпочитают «плыть по течению», нежели трудиться независимо,
т. е., хотят быть «как все». Как превратить это препятствие в преимущество?
Каким образом преподаватель может поощрить студенческую независимость?
Как он может помочь студентам понять их выдающиеся способности? И, наконец, как мы можем доказать им, что математика – это не собрание неопровержимых и малопонятных фактов, а живая, красивая наука, дающая жизнь
другим важным наукам, в частности, информатике?
К счастью, математика сама по себе подсказывает нам, как достичь этих
целей. Мы демонстрируем это в данном пособии на примере Вычислительной
математики и представляем ниже Фронтально-состязательный подход к её преподаванию.
34

1.2 Фронтально-состязательный подход (ФСП)

Главная идея ФСП
Она может быть объяснена самим её названием. «Фронтальный» означает
вовлекающий всю аудиторию в достижение одной цели. «Состязательный»
означает дающий возможность достижения успеха, благодаря индивидуальным
творческим и нестандартным решениям или действиям. Чтобы воплотить ФСП
в жизнь, мы делаем следующее:
1. Организуем творческую обстановку.
2. Пробуждаем творческий потенциал студента.
3. Даём толчок студенческому инстинкту соперничества.
4. Обеспечиваем прозрачность критериев оценивания.
Рассмотрим эти компоненты ФСА чуть детальнее в приложении к дисциплине
Вычислительная математика.
Творческая обстановка

Большинство существующих учебных материалов по ВМ сообщают основные теоретические сведения и некоторые теоретические инструкции, как запрограммировать численный метод или алгоритм. Однако это не вполне соответствует конечной цели. Мы считаем, что истинное понимание численного
метода достигается, если: (а) студент выполняет сложное проектное задание по
разработке программного продукта, реализующего заданный численный метод;
(б) студент проводит серию вычислительных экспериментов с этим программным продуктом и, наконец, (в) фронтальное оценивание проектов выполняется
коллективно студентами и преподавателем.
Программирование само по себе даёт несколько выгод студенту. Во-первых,
оно позволяет студенту понять и изучить численный метод «изнутри». Для
творческой личности, для растущего профессионала это совсем не то, что использовать готовый программный продукт. Во-вторых, это улучшает компьютерную грамотность студента, так как требует изощрённого программирования.
И, наконец, это развивает общие способности аналитического мышления, навык
поиска решений, прививает умение без боязни браться за решение математически ориентированных задач, которыми так полон наш мир.
Организовать творческую обстановку в процессе преподавания ВМ в больших аудиториях можно лишь при большом разнообразии учебных заданий по
программированию вычислительных методов. Важно при этом, что задания
35

1 Проекто-ориентированная методика

должны различаться по алгоритмам, а не просто по исходным данным для одного и того же метода. Поскольку число вариаций численного метода обычно
ограничено, а количество студентов велико, отыскание как можно большего
разнообразия версий численного метода становится вопросом большой методологической важности для каждого преподавателя.
Организация творческой обстановки означает также, что мы должны оценивать каждый лабораторный проект по программированию как уникальный
продукт, который обладает всеми качествами завершённости, а именно, имеет:
(а) выраженную модульную структуру, (б) удобный интерфейс, (в) эффективное
использование вычислительных ресурсов (памяти и времени) и (г) возможности проводить широкий вычислительный эксперимент. Это решительным образом отличается от широко распростанённой практики, когда студенты работают
на одном и том же готовом программном продукте как его пользователи, когда
они только вводят свои исходные данные и пассивно ждут ответа. Подход, который мы практикуем, вынуждает студентов совершать творческие действия,
он в каждом студенте стимулирует врождённый дух соперничества и, в целом,
помогает улучшить качество работы всех, кто в этом потоке. Кроме того, эта
обстановка предотвращает нечестность, списывание, поскольку поощряет студента к превосходству над другими.
Классическим примером того, как можно разнообразить задания по численным методам, может служить тема «Методы исключения и обращение матриц». Сначала преподаватель систематизирует алгоритмы Гаусса или ГауссаЖордана по их особым характеристикам. Среди них могут быть: (1) направление нумерации исключаемых неизвестных, (2) направление перебора уравнений
в процессе исключения, (3) способ доступа к элементам матриц, (4) режим
обновления активной подматрицы, (5) стратегия выбора ведущего элемента.
Затем, учитывая взаимную независимость этих характеристик, преподаватель
комбинирует их так, что в результате получает значительное число вариантов
заданий по этой теме.
Творческий потенциал студента

Лекции обычно включают доказательство одной версии численного метода, например, теорему об LU -факторизации матриц, теорему об LU факторизации матриц с выбором ведущего элемента и теорему об алгоритме
LU -факторизации с замещением исходной матрицы факторами L и U . Однако практически каждая из таких теорем имеет своего «двойника»; в нашем
примере, UL-, UDL- или LDU -разложения также возможны. То же самое отно36

1.2 Фронтально-состязательный подход (ФСП)

сится и к выбору ведущего элемента: возможны, по крайней мере, три стратегии
его выбора.
Следовательно, будет целесообразно, если студент, выполняющий задание
на проект по этой теме, самостоятельно докажет теоремы по своей версии численного метода. Действуя таким образом, студент учится не только доказывать
(что само по себе очень важно в математическом образовании), но привыкает
смотреть на математические вещи шире. Его творческие способности возрастают, потенциал превращается в активность, и это достижение может быть
специальным образом отмечено, особенно, в отношении одарённых студентов.
Инстинкт соперничества

Как правило, студенты математических подразделений полны желания быть
профессионалами в компьютерах и современных технологиях программирования. Им неинтересно «топтаться» на начальном уровне компьютерной грамотности. Они определённо выражают желание показать свои навыки в создании
«выдающихся» программ. ФСП идеально поддерживает этот инстинкт соперничества. Действительно, множественность вариантов заданий по одной и той
же теме удачно сочетает две стороны: общность и различие вариантов. Благодаря наличию общих черт в заданиях, студенческие проекты могут быть сравнены, а благодаря различиям в особенностях, проекты становятся индивидуальны по природе.
Преподаватели, практикующие ФСП, наблюдали замечательные случаи, когда студент, уже получивший зачёт по проекту с разреженными матрицами, продолжал обновлять свою программу, изменяя схему доступа к элементам матриц, чтобы добиться более высокого быстродействия, потому что у его коллегистудента быстродействие программы было выше. Иногда студенты устраивают
своего рода соревнование, чья программа имеет более удобный интерфейс или
быстрее работает. Иногда в период каникул мы устраиваем презентации лучших
студенческих проектов. На первых порах мы требовали, чтобы программы были
разработаны на языке Pascal, но сейчас мы допускаем использование разных
языков и инструментов программирования: Visual Basic, Delphi, Builder C++,
С#, MATLAB, Scilab и др.
Прозрачность оценивания

Роль преподавателя в рамках ФСП очень велика. Кроме отмеченного выше,
преподаватель должен выдвинуть точную и определённую критериальную систему требований и систему выставления оценок за работу студентов над про37

1 Проекто-ориентированная методика

ектами. Любой студент должен с полной определённостью знать, какую оценку
и за какое количество и качество работы он получит. Приступая к работе, студент сам выбирает тот уровень оценки, на который он претедует. Система оценивания должна быть так разработана, чтобы студент имел возможность самостоятельно перемещаться на другой уровень, если первоначальный уровень
претензий оказался занижен или завышен.
Например, в нашем проекто-ориентированном курсе «Практикум по методам оптимизации» [38]–[39] система заданий по линейному программированию
насчитывает 70 вариантов проекта при том, что число базовых алгоритмов
симплекс-метода невелико: стандартный, двойственный или модифицированный алгоритм. Однако все задания разделены на три группы в зависимости
от их сложности: базовый уровень (20 вариантов), продвинутый уровень (30
вариантов) и высокий уровень (20 вариантов). Оценки за них назначены соответственно: «удовлетворительно», «хорошо», «отлично». Такая ясность критериев и возможность независимой «навигации» студента по соответствующим
уровням сложности проекта оказывают заметное влияние на студенческую активность.
ФСП + ПОО = изменение поведения [53]
Строго говоря, ФСП не является нашим оригинальным изобретением. Он
применяется, – хотя так специально и не формулируется, – преподавателями
различных университетов на постсоветском пространстве и, наверное, применялся ранее.
Наша работа в Филиале МГУ им. М. В. Ломоносова в г. Ульяновске (1988–
1996) и далее в Ульяновском государственном университете и Ульяновском государственном техническом университете на протяжении многих лет фокусировалась на возможных способах приложения ФСП к преподаванию численных
методов в курсах линейной алгебры, рекуррентных наименьших квадратов, оптимальной фильтрации, оптимального управления, линейного программирования, исследования операций, языков программирования и других дисциплин.
Применение ФСП в сочетании с ПОО доказало, что студенты в своём большинстве дают положительный отклик на эту методику. Индивидуальная работа
в составе большой аудитории побуждает студентов к жёсткой, но оправданной
состязательности, к поиску творческих решений и к лучшим оценкам качества.
Однако то, что изложено выше, есть лишь дидактическая предпосылка, отвечающая на вопрос: ЧТО должно быть сделано для того, чтобы развить в
студентах «вычислительные» таланты и универсальные навыки профессионала
38

1.3 Оценивание качества академических проектов

в области вычислительных наук или прикладной математики и информатики.
Формой практического воплощения ФСП, позволяющей получить желаемый
результат, мы считаем ПОО – проекто-ориентированное обучение, и тем самым
отвечаем на вопрос: КАК это делать, чтобы изменить поведение студентов к
лучшему.

1.3

Оценивание качества академических проектов

Очевидно, внедрение новых методик в сфере инженерного образования
имеет своей конечной целью повышение качества обучения. Важнейшей проблемой при этом является оценивание эффективности внедряемой методики:
Насколько она полезна? Сильно ли она влияет на достижение этой конечной
цели? Определить это можно лишь в ходе педагогического эксперимента, например, методом экспертных заключений. Однако это – не единственный возможный метод.
В данном разделе излагается методика оценивания качества программных
проектов студентов, в которой качество продукта определяется количественно
компьютерной программой без участия экспертной группы.
Главные проблемы качества образования
Современное производство быстро усложняется. Появление всё более сложных изделий требует от сферы образования соответствующего повышения
уровня подготовки выпускников. В этом деле подготовки современных специалистов для высшей школы обнажились несколько проблем, которые надо
рассматривать как ключевые, критические.
Проблема 1. Мотивация студентов

Пониженную мотивацию студентов к обучению замечают многие и замечают не только в России. Многим известно обращение Королевского математического общества и Общества статистиков Великобритании к правительству
страны по поводу снижающегося качества математического образования [51]
и предложения правительству о том, как справиться с этой проблемой [57].
Россия – не исключение. Пониженная мотивация наших студентов к обучению
обусловлена множеством причин и просчётов системы образования. Их рассмотрение выходит за рамки данного текста. Главное для нас здесь – не поиск
причин, а конструктивное предложение выхода из негативной ситуации.
39

1 Проекто-ориентированная методика

Как уже отмечено (см. разд. 1.1), полезным решением является проектоориентированное обучение. Фронтально-состязательный подход (см. разд. 1.2)
может этому способствовать.
В своей работе [34] J. Cristopher Jones привёл некоторые рекомендации преподавателям, применяющих проекто-ориентированный подход:
1. Давать возможность самим студентам выявлять проблему и цель.
2. Разработать такие задачи, в которых это возможно и поощряется.
3. Не критиковать результаты, а подвергать сомнению сам процесс.
4. Предлагать проекты как на ближайшую, так и на отдалённую перспективу.
5. Показывать, как вы сами проектируете.
6. Демонстрировать новые методы в позиции не эксперта, а обучающегося.
7. Предлагать студентам отложить работу, которая их не привлекает.
8. Учить студентов быть готовыми начать процесс проектирования заново.
Совместная проектная деятельность (в групповых проектах) позволяет развивать творческое начало в деятельности студента. Проектный метод в обучении как активная форма организации учебного процесса позволяет студентам
развивать свои способности, приобретать знания, умения и навыки для решения практических, жизненно важных задач.
Проектное обучение студентов развивает в них особенные качества:
1. Исследовательские умения, т. е., способность анализировать проблемную
ситуацию, работать с литературными источниками, формулировать решаемую задачу, проводить наблюдение практических ситуаций, строить гипотезы и делать выводы.
2. Умение работать в команде, осознавать значимость коллективной работы
для получения результата, ценить роль сотрудничества и взаимопомощи.
3. Коммуникативные навыки, т. е., привычка формулировать и высказывать
свою точку зрения, выслушивать и понимать другие мнения, критически
подходить к своим и чужим суждениям в процессе поиска решения задачи.
40

1.3 Оценивание качества академических проектов
Проблема 2. Связь учебных заданий с производством

В реальных условиях работы наших учебных заведений учебные проекты,
предлагаемые при реализации проекто-ориентированного обучения, – особенно
на его начальной стадии, – бывают далеки от тематики проектов, которыми занимаются профессиональные инженеры в рамках своей производственной деятельности. J. Michael Fitzpatrick и Ákos Lédeczi пишут [46]:
«В университетах содержание курсов информационных дисциплин
диктовалось потребностями крупных софтверных фирм. Однако инженеры и программисты подходят к освоению методов программирования с разными целями. В то время как инженеры создают программы, в основном, для собственного использования, программисты
создают программы для использования непрограммистами».
Проекты по дисциплине Программирование, реализуемые в учебном процессе, серьёзно отличаются от профессионального проектирования программного обеспечения. Это обусловлено тем, что профессиональные продукты предназначены для вывода на рынок, и это обстоятельство создаёт сильную обратную связь по качеству продукта и по его соответствию требованиям потребителей. В то же время проекты, выполняемые в учебном процессе, не имеют
непосредственного контакта с рынком (связь очень слабая). Программы, созданные студентами во время учебных занятий, мы называем академическими
программными продуктами, сокращённо – АПП. Жизненный цикл АПП заканчивается на этапе аттестации, отсутствуют этапы эксплуатации и сопровождения, очень мала доля тестирования. Поэтому при разработке тематики проектов для обучения необходимо повышать их практическую значимость. Этапы
разработки в большей степени должны следовать современным технологиям
разработки проектов.
Проблема 3. Оценивание качества проектных решений

Дополнительной проблемой при внедрении проекто-ориентированного подхода является получение адекватной (правильной) оценки качества предлагаемых студентами проектных решений. При традиционном подходе оценка качества АПП формулируется экспертами, в качестве которых выступают преподаватели. Недостатком такого метода является повышенная трудоёмкость анализа учебного программного продукта. Свои представления о требованиях к
знаниям, навыкам и умениям студентов преподаватели вырабатывали на протяжении длительного времени, опираясь на свой опыт.
41

1 Проекто-ориентированная методика

Однако требования преподавателей, несмотря на опыт и квалификацию, существуют на интуитивном уровне, и они сугубо индивидуальны. Высокий разброс требований в вузе к навыкам и знаниям студентов приводит к тому, что
выпускники, придя на производство, сталкиваются с серьёзным расхождением
представлений о процессах проектирования в учебном заведении и на производстве. Это неизбежно приводит к необходимости переучиваться и изменять
сложившийся стереотип.
Возможности оценивания АПП

Академический программный продукт существует в виде файла с размещённым в нём текстом программы на языке высокого уровня. Будучи конечным продуктом реализации проекта, он обладает определёнными отличиями
по сравнению с другими формами отчётности:
1. Этот продукт изначально представлен в электронном виде и готов к обработке на компьютере.
2. Его логическая структура с точки зрения грамматики и синтаксиса не
имеет ошибок, поскольку они обнаруживаются компилятором на этапе отладки.
3. Его работоспособность и соответствие учебному заданию доказана экспертом, в роли которого выступает преподаватель, а в рамках проектоориентированного обучения экспертами выступают все члены группы, реализующие данный проект.
Это свидетельствует о том, что АПП может быть использован в процессе
формирования оценки качества проекта. Оценка может быть получена в автоматическом режиме, независимом от экспертов. Такой подход позволяет обрабатывать значительные объёмы академических программных продуктов, давать
им независимую, объективную оценку и даже выполнять сравнительный анализ
отдельных групп, отдельных «команд» студентов, а также методов обучения.
Инструментарий проекто-ориентированного обучения
В ходе учебного процесса студентами кафедр «Информационные системы»
или «Информационные технологии» создаётся большое количество академических программных продуктов. Оценив уровень качества АПП по выборке за
определённое время, преподаватели этих дисциплин получают возможность
42

1.3 Оценивание качества академических проектов

сформировать оценку качества всего образовательного процесса и сориентировать усилия на его улучшение. Ввиду этого оценивание качества АПП является
важной практической задачей. Для её решения нужен удобный и проверенный
инструментарий, базирующийся на надёжных методах.
Задачу разработки методов оценивания качества программных продуктов,
специализированных для АПП, нельзя считать полностью решённой в настоящее время. Существует большое разнообразие методов оценивания качества
профессиональных программных продуктов (ППП), но дело в том, что АПП существенно отличаются от ППП (см. выше с. 41). Наше исследование [41] учитывает особенности АПП. В нём предлагаетя методика независимой, то есть,
максимально объективной оценки качества АПП, однако инструмент оценивания, разработанный нами ранее, ориентирован лишь на один язык программирования, язык Pascal.
Вопрос распространения этой методики на условия, когда студенты применяют и другие, более современные языки программирования высокого уровня,
такие как С, С++, С# или язык MATLAB, решается в настоящее время. С этой
целью на основе данной методики создана оригинальная «Программа оценки
качественных характеристик академических программных продуктов на основе
методики Холстеда» – Halstead method.
Методика оценивания качества АПП

Согласно методике Холстеда [42], оценка качества АПП формируется посредством анализа исходного кода программы и вычисления на этой основе
некоторых специальных характеристик кода. Постулируется (cм. на с. 42), что
текст программы свободен от ошибок, т. е., готов к оцениванию начества.
Результирующие значения параметров качества АПП отыскиваются методами математической статистики в результате обработки большого количества
программных текстов, предварительно помещённых в базу данных.
Характеризуем этот процесс детальнее.
Основным параметром качества АПП, согласно данной методике, является
критерий совершенства логической структуры текста программного продукта –
Hq [42]. Критерий совершенства Hq вычисляется на основе четырёх основных
характеристик (параметров) программного текста:
• η1 – число простых (или отдельных) операторов, появляющихся в данной
реализации (словарь операторов);
43

1 Проекто-ориентированная методика

• η2 – число простых (или отдельных) операндов, появляющихся в данной
реализации (словарь операндов);
• N1 – общее число всех операторов, появляющихся в данной реализации;
• N2 – общее число всех операндов, появляющихся в данной реализации.
На основе этих параметров для каждого текста АПП вычисляются:
• экспериментально определённая длина
N = N1 + N2

(1.1)

b = η1 log2 η1 + η2 log2 η2 .
N

(1.2)

• и теоретическая длина

Согласно [41], известно строгое математическое обоснование формулы (1.1),
выражающей длину программы N через число входящих в ее запись операторов η1 и операндов η2 , исходя из минимаксного – для данного типа программ –
так называемого «стоимостного» критерия [33]. Доказательство этого основано
на предположении, что при создании программы реализуется функциональная
задача в максимально экономной и рациональной форме. В работе [33] математически строго выведено модифицированное выражение
b = λ (η1 log2 η1 + η2 log2 η2)
N

(1.3)

и, кроме того, выполнена экспериментальная проверка. В ходе этой проверки
обработано десять профессионально составленных программ на языках высокого уровня и в результате получено значение λ = 0, 934336314, достаточно
близкое к 1. Для коэффициента корреляции K экспериментально – по выборке
из десяти программ – найдено значение K = 0, 9965818.
В литературе по методам «программометрии» используются и другие методы измерения характеристик программ. Применение методик для профессиональных программ приводит к значению λ достаточно близкому к 1, что и
обосновывает выбор метрики М. Холстеда в данной работе.
Основная вычислительная нагрузка в нашей методике ложится на статистическую обработку для определения числовых характеристик качества АПП.
После того, как все файлы уже обработаны и соответствующие характеристики
для каждого из них получены, выполняется вычисление эмпирических статистик для каждого определённого параметра по всей группе АПП. Вычисляются:
44

1.3 Оценивание качества академических проектов

1. Математическое ожидание:
n

2. Дисперсия:

X
fx = 1
M
xi .
n i=1
2
1 X
f
e
xi − Mx .
Dx =
n − 1 i=1

(1.4)

n

(1.5)

3. Среднеквадратичное отклонение:

4. Коэффициент корреляции:

q
ex .
σ
ex = D

n 


X
1
f
f
xi − Mx yi − My .
rexy =
(n − 1)e
σx σ
ey i=1

(1.6)

(1.7)

Коэффициент корреляции (1.7) вычисляется для двух параметров, которыми
являются экспериментально определённая длина и теоретически полученная
длина АПП.
Критерий совершенства Hq численно равен коэффициенту корреляции rexy :
Hq , rexy .
Для совершенных программ параметр Hq близок к 1, для программ, имеющих тот или иной набор несовершенств, отличия от N будут более существенны, поэтому в результате коэффициент корреляции rexy уменьшится, т. е.,
уменьшится параметр Hq.
Параметр Hq важен для оценивания качества академических программных
продуктов, поскольку на начальном этапе создания программ особое внимание
уделяется оптимальному построению алгоритма и его правильной реализации
на языке программирования.
Программа вычисления качественных характеристик АПП

Определение качественных характеристик АПП – трудоёмкий и сложный
процесс, особенно если учесть, что количество АПП для оценивания велико.
Разработанная программа позволяет преодолеть эти затруднения. Это –
специализированная программа для автоматического определения качественных характеристик академических программных продуктов на основе методики,
описанной в [41].
45

1 Проекто-ориентированная методика

Программа реализована в среде Visual Studio на языке программирования
C#. Пользователю необходимо выбрать подкаталог файлов – текстов АПП для
их дальнейшей обработки, после чего для каждого программного текста происходит формирование и вычисление параметров качества, а именно, таких:
словарь операторов η1, словарь операндов η2 , общее число всех операторов
N1 , общее число всех операндов N2 , экспериментально полученная длина N и
b.
теоретическая вычисленная длина N
Программа считывает посимвольно текст каждого АПП из указанного подкаталога и затем отправляет каждый символ в лексический анализатор. Далее
происходит следующее:
• Лексический анализатор на основе поступающих на вход символов формирует лексему, которая затем отправляется в синтаксический анализатор.
• Синтаксический анализатор сопоставляет лексему с грамматикой языка.
Он определяет, к какому классу относится входная лексема. Затем он формирует словарь операторов и операндов и вычисляет общее количество
операторов и операндов программы.
• Далее программа вычисляет экспериментальную длину и теоретическую
длину программного текста.
После того как обработаны все файлы, в программе вычисляется критерий
совершенства Hq для всей группы программных текстов и на экран выводятся
результаты работы программы:
• таблица полученных параметров каждого АПП:
b;
η1, η2, N1 , N2 , N, N
• критерий совершенства Hq.

Состояние программы оценивания качества АПП

«Программа оценки качественных характеристик академических программных продуктов на основе методики Холстеда» готова к использованию в
учебном процессе в Ульяновском государственном университете и также в
Ульяновском государственном техническом университете при изучении студентами дисциплин: «Технология программирования», «Языки программирования и методы трансляции», «Методы программирования», «Объектноориентированное программирование», «Численные методы», «Методы вычислений» и «Вычислительная математика». Заявка на регистрацию этой программы в декабре 2014 обрабатывается в организации Роспатент.
46

1.4 Положения о выполнении и защите проектов

1.4

Положения о выполнении и защите проектов

Данное пособие разделено на четыре части. Часть I, в которой вы сейчас
находитесь, – вспомогательная. Следующие три части – основные. В каждой
основной части помещены по три проекта. Трудоёмкость проектов сбалансирована между этими частями. Каждая часть может обеспечить лабораторный
практикум в течение одного учебного семестра по дисциплине «Вычислительная математика» или по дисциплине «Численные методы». Для этого в учебной программе этих дисциплин должны быть предусмотрены учебные занятия
в форме лабораторных работ. Другой приемлемый вариант организации учебного процесса заключается в том, что необходимые часы для выполнения задач
лабораторного практикума по дисциплине «Вычислительная математика» или
по дисциплине «Численные методы» могут быть предусмотрены в отдельной
дисциплине «Практикум на ЭВМ», которая должна идти синхронно с этими
дисциплинами (как кореквизит).
Каждый проект, выполняемый в течение семестра, студент защищает, т. е.,
подаёт пояснительную записку и делает доклад о написанной им компьютерной
программе, демонстрируя её работу в дисплейном классе.
Пояснительная записка и устный доклад (защита) оцениваются в баллах
отдельно за каждый учебный семестр. Внутри семестра баллы за отдельные
защищённые проекты складываются и тем самым образуют общую оценку за
этот вид вашей учебной работы, т. е., за лабораторные проекты, разработанные
дома и продемонстрированные в классе.
Независимо от того, какую часть лабораторного практикума, представленного в данном пособии, вы реализуете, эта работа занимает один учебный семестр: весенний или осенний.
Рассмотрим Часть II – Стандартный курс (c. 85). Здесь установлены
следующие сроки сдачи лабораторных проектов:
1. Весенний семестр обучения:
(a) проект № 1 – с 20 по 31 марта, от 0 до 50 баллов.
(b) проект № 2 – с 20 по 30 апреля, от 0 до 25 баллов.
(c) проект № 3 – с 20 по 31 мая, от 0 до 25 баллов.
2. Осенний семестр обучения:
(a) проект № 1 – с 20 по 31 октября, от 0 до 50 баллов.
(b) проект № 2 – с 20 по 30 ноября, от 0 до 25 баллов.
47

1 Проекто-ориентированная методика

(c) проект № 3 – с 20 по 30 декабря, от 0 до 25 баллов.
Если мы рассматриваем Часть III – Повышенный курс (c. 315), то
график сдачи лабораторных проектов выглядит аналогично:
1. Весенний семестр обучения:
(a) проект № 4 – с 20 по 31 марта, от 0 до 25 баллов.
(b) проект № 5 – с 20 по 30 апреля, от 0 до 25 баллов.
(c) проект № 6 – с 20 по 31 мая, от 0 до 50 баллов.
2. Осенний семестр обучения:
(a) проект № 4 – с 20 по 31 октября, от 0 до 25 баллов.
(b) проект № 5 – с 20 по 30 ноября, от 0 до 25 баллов.
(c) проект № 6 – с 20 по 30 декабря, от 0 до 50 баллов.
Если реализуется Часть IV – Специальный курс (c. 377), правила такие
же:
1. Весенний семестр обучения:
(a) проект № 7 – с 20 по 31 марта, от 0 до 25 баллов.
(b) проект № 8 – с 20 по 30 апреля, от 0 до 25 баллов.
(c) проект № 9 – с 20 по 31 мая, от 0 до 50 баллов.
2. Осенний семестр обучения:
(a) проект № 7 – с 20 по 31 октября, от 0 до 25 баллов.
(b) проект № 8 – с 20 по 30 ноября, от 0 до 25 баллов.
(c) проект № 9 – с 20 по 30 декабря, от 0 до 50 баллов.
Любая сдача лабораторного задания позже установленного срока влечёт
уменьшение вашей общей оценки на 10 баллов. За каждое невыполненное задание начисляется 0 баллов. За все три предлагаемые в семестре лабораторные
проекты можно в лучшем случае заработать 100 баллов. Эти максимальные 100
баллов мы распределяем определённым образом между общим числом выданных лабораторных заданий, принимая во внимание их сравнительную трудоёмкость. Если не оговорено другое, предлагаемые студенту проекты являются
индивидуальными (негупповыми).
48

1.4 Положения о выполнении и защите проектов

• Отдельно рассмотрим Часть I – Стандартный курс
За проект № 1 можно в лучшем случае заработать 50 баллов (но можно и
меньше, если ваш проект или ваша защита проекта обнаружит недостатки); за
второй проект – 20 баллов и за третий – максимум 30 баллов. Заработанные
баллы существенным образом влияют на экзаменационную, итоговую оценку
по всей дисциплине. Более подробно об этом см. здесь в разделе Введение
(с. 17) или базовый учебник [6], с. 16–23.
Первые три проекта (c. 85) соответствуют первым трём темам из списка
тем:
• тема 1 – методы исключения в решении систем;
• тема 2 – разложения Холесского положительно определённых матриц;
• тема 3 – методы ортогональных преобразований.

Проект № 1 в любом случае должен быть первым по очереди выполнения.
Это единственное обязательное условие относительно состава выполняемых
проектов. Таким образом, проект № 1 – это проект № 1 по выбору преподавателя. Все остальные проекты – это проекты по выбору студента. Это означает, что студент решает самостоятельно, какой проект и сколько проектов от
берётся выполнить в течение семестра. Об этом выборе проектов для выполнения студент сообщает преподавателю в начале семестра – в течение первых
двух недель, и преподаватель этот выбор студента фиксирует в своём журнале.
Во второй половине семестра студент может заявить преподавателю о своём
отказе от первоначального выбора, если он увидит, что не справляется, и преподаватель фиксирует «отказ от проекта №. . .» в своём журнале. Это делается
для того, чтобы:
• студент научился правильно оценивать свои способности, планировать
своё время и организованно работать для достижения своих целей,
• преподаватель видел, как себя проявляет тот или иной студент, насколько
он амбициозен, трудолюбив и способен.
Установлен следующий порядок оценивания проектов в Части I:
За выполненное безупречно и в полном объёме задание по теме № 1 (лабораторный проект № 1) студент заработает 50 баллов. Это задание является
базовым и поэтому должно предшествовать всем остальным. Далее, за выполненное безупречно и в полном объёме задание по теме № 2 (лабораторный
49

1 Проекто-ориентированная методика

проект № 2) студент заработает 20 баллов, а за выполненное безупречно и в
полном объёме задание по теме № 3 (лабораторный проект № 3) – 30 баллов.
Для каждого лабораторного проекта необходимо проделать следующее:
1. Написать и отладить программу, реализующую ваш вариант задания.
2. Предусмотреть сообщения, предупреждающие о невозможности решения
указанных задач с заданной матрицей.
3. Уделить особое внимание эффективности программы (в смысле экономии
оперативной памяти).
4. Предусмотреть пошаговое выполнение алгоритмов с выводом результата
на экран.
5. Написать пояснительную записку о проделанной работе (см. разд. 6).
6. Представить преподавателю печатный текст пояснительной записки и
компакт-диск, содержащий в отдельных директориях весь проект: Программный код проекта (готовый к запуску) + Инструкция пользователя +
пояснительная записка в виде *.doc файла (см. разд. 6).
Защита проекта заключается в демонстрации работоспособной программы
в действии в различных режимах проведения вычислительного эксперимента
(см. разд. 6) и в докладе о том, как студент разрабатывал программу. Во время
доклада преподаватель может попросить студента изменить некоторые фрагменты алгоритма: например, правило вычисления погрешности метода или правило выбора ведущего (главного элемента). Предполагается, что студент сумеет
сделать это «на лету»: не только быстро внести изменение в код, но сразу после изменения кода откомпилировать программу, запустить её на исполнение и
прокомментировать получаемый при этом результат.
Заработанное число баллов за каждое задание будет уменьшено, если
письменный отчёт или устная защита работы не отвечает всем указанным
требованиям или не демонстрирует самостоятельное исполнение.

Индивидуальный вариант для каждого студента в проекте № 1 назначается равным N + 2, где N – порядковый номер студента в списке
группы (в алфавитном порядке).
50

1.5 Заключение по разделу 1

1.5

Заключение по разделу 1

В этом разделе мы изложили особенности проекто-ориентированной методики преподавания и обучения так, как мы видим её возможности применительно к дисциплинам Вычислительной математики и информатики. Сначала
характеризован Метод проектов (подразд. 1.1, c. 29) в широком смысле: его
зарождение и современное состояние. Показано, что применение этого метода
способно ответить на главный вопрос современного высшего образования:КАК
изменить к лучшему поведение студента?
Затем изложен Фронтально-состязательный подход (подразд. 1.2, c. 32) –
наше представление о том, ЧТО надо сделать для реализации Метода проектов при изучении дисциплин ВМИ, особенно, в условиях больших аудиторий
студентов.
В подразделе 1.3 (см. с. 39) мы сообщаем, какой инструментарий нами создаётся для автоматизированного оценивания качества студенческих программных проектов с учётом тех обстоятельств нашей работы в больших потоках
студентов, что число оцениваемых проектов велико.
О том, какие правила мы устанавливаем и какие требования предъявляем
к самим проектам, студент узнает из прочтения завершающего подраздела 1.3
(см. с. 39).
К сказанному следует добавить, что проекты, представленные в данном учебном пособии, можно рассматривать как «полигон» для освоения студентами не
только методов вычислений в линейной алгебре, но гораздо шире – как хороший «полигон» для освоения ими технологии программирования на различных
языках высокого уровня, к числу которых принадлежит язык С#. Переходим к
изложению элементов этого языка в следующем разделе 2.

51

2
Элементы программирования на C#
2.1

Синтаксис

Рассмотрим базовый синтаксис языка С#, который понадобится вам при
выполнении лабораторных проектов, представленных в данном пособии.
Объявление переменных
Для выполнения лабораторного проекта вам могут потребоваться различные
типы переменных. Их объявление показано в примере 2.1.
Пример 2.1.
int a=0; //целочисленная переменная a
string b=" "; //строковая переменная b
char c=’ ’; //символьная переменная c
double r=0; //дробная переменная r
bool у=true; //логическая переменная y
//одномерный массив дробных чисел
double [,] mas=new double[];
//двумерный массив дробных чисел
double[,] mas=new double[,];

Число строк или столбцов может выражаться либо целым числом, либо
целочисленной переменной.
Комментарии
Хорошая программа – это хорошо комментированная программа. Правила
включения комментариев просты. Они показаны в примере 2.2.

2.1 Синтаксис

Пример 2.2.
// Для того чтобы закомментировать строку кода,
// перед ней ставим два слэша.



Некоторые базовые операции
Список основных арифметических операций в C# с примерами использования приведен в табл. 2.1 (см. с. 84).
Кроме приведённых в табл. 2.1 операций, вам могут понадобиться следующие операции: ∗ (умножение), / (деление), < (меньше) или > (больше). Они
работают аналогично. Кроме базовых операций, язык C# предоставляет возможность использования сокращённых операций, состоящих из знака операции
и следующего за ним знака присваивания. Вариант использования операции
+ = показан в примере 2.3.
Пример 2.3.
int a=5;
a=a+5; //обычная операция +
a+=5; //аналогичная применённой выше сокращённая операция +=


Цикл while
Это цикл с предусловием (пример 2.4). Он имеет следующий синтаксис:
while (УсловиеПродолжения) {Операторы;}
Пример 2.4.
int i=0;
while(i

81

2 Элементы программирования C#

100
Эксперимент 1


0
8.36

...

1
9.68




Теперь напишем код загрузки эксперимента из файла. Для этого в кнопке
загрузки создадим объект-сериализатор, но вместо диалога сохранения выведем диалог открытия. В случае неудачной загрузки дополнительно обезопасим себя проверкой на пустую ссылку и выводом соответствующего сообщения.
В итоге обработчик кнопки будет содержать следующий код:
Пример 2.40.
XmlSerializer serializer = new XmlSerializer(typeof(Experiment));
OpenFileDialog sv = new OpenFileDialog();
try{
if((sv.ShowDialog() == System.Windows.Forms.DialogResult.OK) &&
(File.Exists(sv.FileName))) {
FileStream f = new FileStream(sv.FileName, FileMode.Open);
using(StreamReader sw = new StreamReader(f)) {
ex= serializer.Deserialize(sw) as Experiment;
}
MessageBox.Show("Выполнено!");
}
else MessageBox.Show("Десериализации не произошло!");
}
catch (Exceptionexcp) {
MessageBox.Show("Десериализации не произошло! "+excp.Message);
82

2.4 Заключение по разделу 2

}
if(ex == null) {
ex = new Experiment();
MessageBox.Show("Десериализации не произошло!");
}

Вычисление времени эксперимента
Создадим в тексте описания формы поле типа DateTime и в начале кода
эксперимента запишем туда текущее время:
DateTime dt = DateTime.Now;
После окончания эксперимента выведем сообщение о времени эксперимента:
MessageBox.Show((DateTime.Now - dt).ToString());
Обратите внимание на то, что время выводится в формате
«чч:мм:сс.милисекунды».

2.4

Заключение по разделу 2

В этом разделе мы рассмотрели основы синтаксиса, создание приложений
и сервисных программ на языке программирования высокого уровня C#.
Эти вопросы мы проиллюстрировали множеством полезных примеров,
которые помогут студентам выполнить собственные лабораторные проекты.
Применённые приёмы не являются ни обязательными, ни единственными
верными. Здесь представлен только один из вариантов решения. Каждый
студент найдёт самостоятельное решение всех практических вопросов, которые
будут у него возникать по ходу разработки проекта.
Наиболее полное представление об объёме работы, требуемой при этом для
создания качественного программного продукта, можно получить после ознакомления с полной версией одного из реальных проектов в разд. 6.
83

2 Элементы программирования C#

Приложение к разд. 2
Таблица 2.1. Арифметические операции – иллюстрация для текста на c. 53
Знак операции Назначение
+
Сложение



++

−−
%

==

!=

84

Пример использования
Запишем в переменную с результат сложения
значений а и у:
int a=10;
int y=12;
int c=a+y;
Вычитание
Запишем в переменную с результат вычитания
у из а:
int a=10;
int y=12;
int c=a-y;
Увеличение на 1
Увеличим переменную с на 1:
int c=10;
c++;
Уменьшение на 1
Уменьшим переменную с на 1:
int c=10;
c–;
Остаток от деле- Проверим, делится ли переменная а на перения
менную с без остатка:
int a=10;
int c=2;
if (a%c==0)
Console.WriteLine(“Да”);
else
Console.WriteLine(“Нет”);
Проверка на равен- Проверим, равны ли а и с:
ство
int a=10;
int c=2;
if (a==c)
Console.WriteLine(“Да”);
else
Console.WriteLine(“Нет”);
Проверка на разли- Проверим, различны ли а и с:
чие (не равно)
int a=10;
int c=2;
if (a!=c)
Console.WriteLine(“Да”);
else
Console.WriteLine(“Нет”);

II
СТАНДАРТНЫЙ КУРС

3
Проект № 1 «Стандартные
алгоритмы LU -разложения»
3.1

Алгоритмы метода Гаусса

Обычный метод Гаусса, осуществляющий LU -разложение матрицы A [3, 4,
5, 10], заключается в последовательном исключении переменных из уравнений
системы
Ax = f.
(3.1)
На первом шаге для исключения первой переменной x1 из всех уравнений,
лежащих в системе ниже первого уравнения, первое уравнение
a11 x1 + a12 x2 + . . . + a1n xn = f1

(3.2)

объявляем ведущим уравнением. Это возможно только при a11 6= 0. Тогда,
разделив обе части (3.2) на a11 , это ведущее уравнение получим в виде, в котором коэффициент при x1 окажется равен 1. Заметим, что эта 1 – строгая (т. е.
не приближенная) величина. Это действие – деление уравнения на ведущий
элемент (на первом шаге это a11 6= 0) – удобно называть нормировкой.
Второе действие заключается в серии вычитаний ведущего уравнения из
всех нижележащих уравнений, чтобы исключить из них неизвестную x1. Для
этого умножаем пронормированное уравнение на ai1 и вычитаем результат из
i-го уравнения системы (3.1), i = 2, . . . , n. На этом заканчивается первый шаг
алгоритма. После первого шага система (3.1) приведена к виду:

(1)
(1)
(1)
1 · x1 + a12 x2 + . . . + a1n xn = f1 , 


(1)
(1)
(1) 
a22 x2 + . . . + a2n xn = f2 ,
(3.3)

...


(1)
(1)
(1) 
an2 x2 + . . . + ann xn = fn .

3 Лабораторный проект № 1

Это второе действие удобно называть обновлением активной подсистемы (активной подматрицы), т. е., той части системы уравнений (матрицы A), где ещё
будут продолжаться подобного рода действия.
На втором шаге метода Гаусса описанный алгоритм повторяем для переменной x2, т. е., берём систему (3.3), объявляем ведущим второе уравнение (для
(1)
этого нужно иметь a22 6= 0) и нормируем в ней второе уравнение. Получаем
его в виде
(2)
(2)
(2)
1 · x2 + a23 x3 + . . . + a2n xn = f2
(верхний индекс в скобках указывет номер шага, после которого получен
текущий результат). После этого исключаем переменную x2 из оставшихся
n − 2 уравнений системы (3.3). Таким образом, любой полный шаг алгоритма
метода Гаусса состоит из двух действий: сначала нормировка ведущей строки
матрицы, потом обновление (серия вычитаний) в активной подматрице.
После n − 1 полных шагов и n-го неполного шага (поскольку ниже n-го
ведушего уравнения больше нет уравнений) получим две системы линейных
алгебраических уравнений
Ly = f,

U x = y,

(3.4)

эквивалентных исходной системе (3.1), где L – нижняя треугольная матрица и
U верхняя треугольная матрица, на диагонали которой стоят единицы1. При
этом k-й столбец матрицы L (его нетривиальная, т. е., ненулевая часть) запоминает числа для двух действий на k-м шаге алгоритма, а именно: элемент lkk
является ведущим элементом, производившим нормировку k-го уравнения, в
то время как элементы lki , i = k + 1, k + 2, . . . , n являются теми коэффициентами, на которые было умножено пронормированное ведущее (k-е) уравнение,
чтобы результатом последующего его вычитания из нижележащих уравнений
было исключение из них неизвестного xk . Можно говорить, что роль матрицы
L – сохранять «историю» нормировок и вычитаний в процессе исключения
неизвестных по методу Гаусса. Роль матрицы U – иная. Матрица U представляет собою тот эквивалентный вид системы (3.1), который она приобретет по
завершении этого процесса.
Определение 3.1. Определители ∆i подматриц, получаемых оставлением первых i строк и первых i столбцов матрицы, называют главными минорами матрицы.
Теорема 3.1.
Если все главные миноры матрицы A в системе (3.1)
отличны от нуля, то процесс Гаусса исключения неизвестных, протекающий
1

88

Здесь и далее черта над матрицей означает, что на главной диагонали стоят строгие единицы.

3.1 Алгоритмы метода Гаусса

в прямом направлении, – начиная от первого неизвестного x1 и от первого
уравнения системы, – эквивалентен разложению A = LU , которое существует
и единственно с нижней треугольной невырожденной матрицей L и верхней
треугольной матрицей U с единичной диагональю.
Доказательство. Докажите теорему 3.1 самостоятельно индукцией по размеру n матрицы [5].

После разложения вводят правую часть f данной системы (3.1) и находят
вектор y решения; это называется прямой подстановкой:
!
i−1
X
(3.5)
yi = fi −
lij yj lii−1, i = 1, 2, . . . , n.
j=1

Далее вторая система из (3.4) так же легко решается процедурой обратной
подстановки:
xi = yi −

n
X

j=i+1

uij xj ,

i = n − 1, . . . , 1,

xn = yn .

(3.6)

Замечание 3.1. Пересчёт элементов вектора f должен быть отложен,
т. е., сначала пересчёт коэффициентов матрицы A должен привести к разложению матрицы A в произведение матриц L и U и только затем должна
быть введена и соответственно обработана правая часть – вектор f . При этом
вектор y замещает f и затем x замещает y, – экономия памяти.
Алгоритм 1. LU -разложение матрицы A
Для k = 1 до n
Нормируем первую строку матрицы A(k−1).
Для i = k + 1 до n
Вычитаем первую строку матрицы A(k−1) ,
(k−1)
умноженную на aik , из i-й строки.
Здесь A(k−1) означает активную подматрицу матрицы A после (k − 1)-гo
шага метода Гаусса, k = 1, 2, . . . , n, причём A(0) = A.
Следующий алгоритм отличается от алгоритма 1 только нормировкой элементов активной подматрицы:
89

3 Лабораторный проект № 1

Алгоритм 2. L U -разложение матрицы A
Для k = 1 до n − 1
Нормируем первый столбец матрицы A(k−1).
Для i = k + 1 до n
Вычитаем первую строку матрицы A(k−1) ,
(k−1)
умноженную на aik , из i-й строки.
Упражнение 3.1. Измените направление процесса Гаусса на обратное.
Докажите, что если процесс Гаусса исключения неизвестных вести от последнего неизвестного xn и от последнего уравнения системы, двигаясь вверх по
нумерации уравнений и влево по нумерации исключаемых неизвестных, то получим разложение A = U L (если нормировать строки) и A = U L (если нормировать столбцы). Докажите соответствующие теоремы – аналоги теоремы 3.1.
Для этого измените определение 3.1 главных миноров.
Описанные выше алгоритмы в том виде, в каком они приведены, на практике используются очень редко, т. е., только в том случае, если можно гарантировать, что в результате гауссова исключения на диагонали не появятся нулевые элементы. Однако это можно гарантировать только для матриц специального вида (например, для положительно определенных матриц,
см. разд. 4.1), поэтому в общем случае используется метод Гаусса с выбором
главного (ведущего) элемента.

3.2

Выбор ведущего элемента

Определение 3.2. Матрицей перестановок P называют квадратную
матрицу, в которой каждая строка, а также каждый столбец, содержит один
ненулевой элемент, равный 1.
Определение 3.3. Элементарной матрицей перестановок Pij называют
квадратную матрицу, полученную из единичной матрицы перестановкой двух
строк: i-й и j-й, либо перестановкой двух столбцов: i-го и j-го (оба варианта
перестановок дают один и тот же результат).
Упражнение 3.2.

Докажите справедливость следующих утверждений:

1. Произведение Pij A производит в A перестановку i-й и j-й строк.
90

3.2 Выбор ведущего элемента

2. Произведение APij производит в A перестановку i-го и j-го столбцов.
3. Pij Pij = I – свойство идемпотентности матриц Pij .
4. Любая матрица перестановок P может быть разложена в произведение
элементарных матриц перестановок.
5. P −1 = P T – свойство ортогональности матриц перестановок P .
Теорема 3.2. Если det A 6= 0, то существуют матрицы перестановок P
и Q такие, что все угловые (т. е., главные) миноры матрицы P A, равно как и
матриц AP и AP Q, отличны от нуля.
Доказательство. Докажите индукцией по размеру матрицы A [5].



Следствие 3.1. Если det A 6= 0, то существуют матрицы перестановок
P и Q такие, что следующие варианты разложения матрицы A существуют и
единственны: P A = LU , P A = L U , AP = LU , AP = L U , P AQ = LU ,
P AQ = L U .



Отсюда видны три стратегии выбора главного (ведущего) элемента: по
столбцу, по строке и по активной подматрице.
Стратегия I. Первая стратегия (по столбцу ) подразумевает, что в качестве главного на k-м шаге метода Гаусса выбирается максимальный по модулю
элемент первого столбца активной подматрицы. Затем этот элемент меняется
местами с диагональным элементом, что соответствует перестановке строк
матрицы A(k−1) и элементов вектора f (k−1). На самом деле строки матрицы
A(k−1) и элементы вектора f (k−1) остаются на своих местах, а переставляются
только элементы дополнительного вектора, в котором хранятся номера строк
исходной матрицы, соответствующие номерам строк матрицы, т. е., элементы
так называемого вектора перестановок. Все обращения к элементам матриц L,
U и вектора f осуществляются через вектор перестановок.
Стратегия II. Следующая стратегия (по строке) заключается в выборе
в качестве главного элемента максимального по модулю элемента первой
строки активной подматрицы. Затем этот элемент обменивается местами с
диагональным, что соответствует перестановке столбцов матрицы A(k−1) и
элементов вектора x. Как и в предыдущем случае, реально обмениваются
91

3 Лабораторный проект № 1

только элементы дополнительного вектора, в котором фиксируются перестановки столбцов матрицы A. Доступ к элементам матриц L, U и вектора x
осуществляется с использованием этого вектора.
Стратегия III. Последняя стратегия выбора главного элемента (по активной подматрице) объединяет две первые стратегии. Здесь в качестве главного
выбирается максимальный по модулю элемент активной подматрицы. В общем
случае, чтобы поставить этот элемент на место диагонального, требуется
обменивать столбцы и строки матрицы A(k−1), что связано с введением двух
дополнительных векторов: в одном хранятся перестановки столбцов, а в другом
– перестановки строк матрицы A.
Приведённые выше алгоритмы LU -разложения с учётом выбора главного
элемента преобразуются к одному из следующих вариантов.
Алгоритм 3. LU -разложение по методу Гаусса
с выбором главного элемента
Для k = 1 до n
Выбираем главный элемент в A(k−1) .
Нормируем первую строку матрицы A(k−1).
Для i = k + 1 до n
Вычитаем первую строку матрицы A(k−1) ,
(k−1)
умноженную на aik , из i-й строки.
Алгоритм 4. L U -разложение по методу Гаусса
с выбором главного элемента
Для k = 1 до n − 1
Выбираем главный элемент в A(k−1) .
Нормируем первый столбец матрицы A(k−1).
Для i = k + 1 до n
Вычитаем первую строку матрицы A(k−1)
(k−1)
умноженную на aik
из i-й строки.
Вышеприведённые алгоритмы называют исключением по столбцам, так как
они исключают xk из всей поддиагональной части k-го столбца.
92

3.2 Выбор ведущего элемента

Замечание 3.2. Во всех алгоритмах должно быть выполнено требование
к реализации: все действия должны выполняться в одном и том же массиве
чисел. Например, в Алгоритме 1 сначала A(0) = A, а в конце на месте этой
матрицы получаются нетривиальные элементы матриц L и U .
Замечание 3.3. Под выбором главного элемента здесь и далее понимается любая из описанных выше трёх стратегий, которая применима.
Замечание 3.4.
При U L-разложении матрицы A все действия выполняются аналогично, но в обратном порядке нумерации строк и столбцов:
снизу-вверх и справа-налево.
Замечание 3.5.
В описаниях алгоритмов упоминаются элементы
матрицы A. Естественно, речь идёт о текущих, а не об исходных значениях элементов, занимающих указанные позиции матрицы A. Это связано с
выполнением требования к реализации (см. Замечание 3.2).
Наряду с гауссовым исключением по столбцам, представленным выше, возможно проводить гауссово исключение по строкам. Это такая разновидность
метода Гаусса, в которой на каждом шаге исключения изменяется одна строка
– первая строка активной подматрицы.
Рассмотрим ещё один вариант гауссова исключения – гауссово исключение
по строкам с выбором главного элемента по строке.
Выполняем i-й шаг, т. е., работаем с i-й строкой матрицы. В ней ещё не
было ни одного исключения неизвестных. Первое действие: из i-й строки
вычитаем первую, умноженную на ai1 ; затем из i-й строки вычитаем вторую,
умноженную на ai2 , и так далее; в завершение этой серии вычитаний из i-й
строки вычитаем (i − 1)-ю, умноженную на ai(i−1) . Второе действие: отыскиваем главный элемент в i-й строке и осуществляем (если надо) перестановку
столбцов. Третье действие: i-ю строку нормируем (делим на ведущий элемент).
Повторяя этот алгоритм n раз, получим LU -разложение матрицы AP . При
i = 1 шаг, очевидно, неполный, т. е., без вычитаний.
Таким образом, отличие гауссова исключения по строкам от гауссова
исключения по столцам сводится в алгоритме к изменению порядка действий:
сначала серия вычитаний, а затем – нормировка. Такая возможность (для
варианта A = LU ) представлена в следующем алгоритме.
93

3 Лабораторный проект № 1

Алгоритм 5. LU -разложение по методу Гаусса (по строкам)
Для k = 1 до n
Для i = 1 до k − 1
Вычитаем i-ю строку матрицы A,
умноженную на aki , из k-й строки.
Выбираем главный элемент в k-й строке.
Нормируем k-ю строку матрицы A.

3.3

Компактные схемы

Следующей разновидностью метода Гаусса являются компактные схемы.
Первая называется компактной схемой Краута, а вторую мы будем называть
компактной схемой Краута «строка за строкой». В схеме Краута на каждом
шаге исключения изменяются только первый столбец и первая строка активной подматрицы. В схеме «строка за строкой» на k-м шаге изменяется только
k-я строка матрицы A.
Выведем формулы схемы Краута для k-го шага. Предположим, что уже сделаны первые k − 1 шагов, т. е. определены k − 1 столбец матрицы L и k − 1
строка матрицы U . Из соотношения A = LU для (i, j)-гo элемента имеем
aij =

n
X

lip upj .

(3.7)

p=1

В силу треугольности матриц L и U при p > i имеем lip = 0 и при p > j
имеем upj = 0. Тогда с учётом того, что ukk = 1, для k-го столбца матрицы A
находим
k−1
X
aik = lik +
lipupk , i ≥ k.
(3.8)
p=1

Из (3.8) следует

lik = aik −
94

k−1
X
p=1

lipupk ,

i ≥ k.

(3.9)

3.3 Компактные схемы

Следовательно, k-й столбец матрицы L становится известен. Теперь из (3.7)
для k-й строки матрицы A имеем
akj = lkk ukj +

k−1
X

lkpupj ,

j > k.

(3.10)

p=1

Из (3.10) находим
ukj =

akj −

k−1
X

lkp upj

p=1

!,

lkk ,

j > k.

(3.11)

Таким образом, (3.11) даёт способ нахождения k-й строки матрицы U .
В результате, зная первые k − 1 столбцов матрицы L и k − 1 строк матрицы
U , мы можем по формулам (3.9) и (3.11) определить k-й столбец матрицы
L и затем k-ю строку матрицы U . Первый столбец матрицы L определяется
равенствами
li1 = ai1 , i = 1, 2, . . . , n.
Это следует из (3.9) и того, что первым столбцом матрицы U является
первый координатный вектор e1 . Здесь, как обычно, предполагаем, что если
нижний предел суммирования меньше верхнего, то значение суммы равно нулю.
После этого в первом столбце выбираем главный элемент. Затем по формулам
u1j = a1j /l1j ,

j = 2, 3, . . . , n

вычисляем первую строку матрицы U . Повторяя указанную последовательность действий n раз, с помощью формул (3.9) и (3.11) получаем
LU -разложение матрицы A.
Алгоритм 6. LU -разложение по компактной схеме Краута
Для k = 1 до n
По формуле (3.9) вычисляем k-й столбец матрицы L.
Выбираем среди элементов k-го столбца главный элемент.
По формуле (3.11) вычисляем k-ю строку матрицы U .
Чтобы получить метод Краута, дающий L U -разложение с выбором главного
элемента по строке, достаточно поменять местами формулы (3.9) и (3.11), а
95

3 Лабораторный проект № 1

также последовательность вычисления столбцов матрицы L и строк матрицы
U . Таким образом, на k-м шаге сначала по формуле
ukj = akj −

k−1
X
p=1

lkp upj ,

j ≥ k,

(3.12)

вычисляется строка матрицы U . Затем в этой строке выбирается главный элемент и находится столбец матрицы L по следующей формуле:
!,
k−1
X
lip upk
ukk , i ≥ k.
(3.13)
lik = aik −
p=1

Упражнение 3.3. Выведите расчетные формулы компактных схем для
любого из альтернативных вариантов разложения: A = U L или A = U L. Что
изменяется? Дайте ответы в форме условных схем алгоритмов, представленных
непосредственно до и после этого упражнения.
Алгоритм 7. L U -разложение по компактной схеме Краута
Для k = 1 до n
По формуле (3.12) вычисляем k-ю строку матрицы U .
Выбираем среди элементов k-й строки главный элемент.
По формуле (3.13) вычисляем k-й столбец матрицы L .
Компактная схема «строка за строкой», дающая LU -разложение матрицы
A, использует те же самые формулы (3.9) и (3.11). Меняется только последовательность вычисления элементов матрицы L. Рассмотрим подробнее.
Пусть уже обработаны по этому методу первые k − 1 строк матрицы A.
Следовательно, мы имеем k − 1 строку матрицы L и k − 1 строку матрицы U .
Далее по формулам (3.9) вычисляем ненулевые элементы k-й строки матрицы
L. По формулам (3.11) без деления на диагональный элемент lkk вычисляем
ненулевые элементы k-й строки матрицы U . Затем среди вновь вычисленных
элементов, от диагонального до n-го, определяем главный элемент, меняем его
местами с диагональным и делим элементы k-й строки матрицы U на этот
элемент. В результате получаем требуемое разложение.
96

3.4 Алгоритмы метода Жордана

Алгоритм 8. LU -разложение по компактной схеме
«строка за строкой»
Для k = 1 до n
По формуле (3.9) вычисляем элементы k-й
строки матрицы L.
По формуле (3.11) без деления на диагональный
элемент lkk , вычисляем k-ю строку матрицы U .
Среди элементов k-й строки (от диагонального
до n-го) определяем главный элемент.
Делим на главный элемент k-ю строку матрицы U .

3.4

Алгоритмы метода Жордана

К последней группе методов исключения относятся алгоритмы метода Жордана. Эти алгоритмы используют те же самые формулы, что и обычный метод
Гаусса, но в отличие от него на k-м шаге метода Жордана пересчитывают все
строки матрицы A, а не только строки, находящиеся ниже ведущей строки. Это
означает полное исключение i-й переменной из всех уравнений, кроме i-го.
Таким образом, метод Жордана формально даёт решение системы линейных
алгебраических уравнений за один проход.
Теорема 3.3. Выполнение действий полного исключения в том же массиве, где первоначально располагалась матрица A, даёт то же самое разложение A = LU , что и метод Гаусса, но существенно в другом виде, а именно: матрица L получается, как и в методе Гаусса, но матрица U оказывается полученной не в «чистом виде», а в виде обратной матрицы U −1 и с той особенностью,
что все знаки элементов матрицы U −1 выше диагонали имеют неправильные
(противоположные) знаки.
Доказательство. Нужно воспользоваться определениями элементарных
матриц специального вида [11] и их свойствами.
Приведём эти определения и свойства и затем продолжим доказательство.
Определение 3.4. Элементарная матрица E есть любая матрица вида
E = I + B, где rank B = 1.
97

3 Лабораторный проект № 1

Упражнение 3.4.
векторы.

Докажите, что E = I + xy T , где x и y – некоторые

Определение 3.5.
рицы:

Введём следующие специальные элементарные мат-

Dk – диагональная k-матрица. Имеет единичную диагональ, кроме k-го элемента, который не тривиален, т. е., не равен нулю или единице.
LC
k – столбцово-элементарная нижняя треугольная k-матрица. Имеет единичную диагональ и нетривиальные элементы только в k-м столбце.
LR
k – строчно-элементарная нижняя треугольная k-матрица. Имеет единичную диагональ и нетривиальные элементы только в k-й строке.
UkC – столбцово-элементарная верхняя треугольная k-матрица. Имеет единичную диагональ и нетривиальные элементы только в k-м столбце.
UkR – строчно-элементарная верхняя треугольная k-матрица. Имеет единичную диагональ и нетривиальные элементы только в k-й строке.
TkC – полно-столбцово-элементарная верхняя треугольная k-матрица. Она содержит единичную диагональ и нетривиальные элементы только в k-м
столбце.
TkR – полно-строчно-элементарная верхняя треугольная k-матрица. Имеет
единичную диагональ и нетривиальные элементы только в k-й строке.
Упражнение 3.5.
приведённые в табл. 3.1.

Докажите свойства этих элементарных матриц,

Продолжим доказательство теоремы 3.3, прерванное на стр. 97.
Приведение данной матрицы A к единичной матрицы, составляющее суть
исключения по методу Гаусса-Жордана, запишем в терминах операций с введёнными специальными элементарными матрицами:
A(n+1) = (TnC)−1Dn−1 · · · (T2C )−1D2−1 (T1C )−1D1−1 A = I.

(3.14)

К результату (3.14) приводит алгоритм Гаусса-Жордана, показанный ниже
на с. 99 для случая LU -разложения матрицы A.
98

3.4 Алгоритмы метода Жордана

Таблица 3.1. Свойства специальных элементарных матриц
Коммутативность в операции умножения
C
LC
i Dj = Dj Li ,

i>j

UiC Dj = Dj UiC ,

i j.
5. Матрица из пункта 4, но
aij = j(n − i) для i < j.


R S T T


S R S T 
ctg
θ
cosec
θ

6. A = 
R=
,
 T S R S ,
− cosec θ ctg θ
T T S R
S=




1 − ctg θ cosec θ
,
− cosec θ 1 + ctg θ

T =




1 1
.
1 1

Вычисления проводить при θ близком к нулю или π.
7. Матрица с параметром α:
aii = α|n−2i|/2;
a1j = aj1 = a11 /αj ;
anj = ajn = ann /αj ;
aij = 0 для остальных значений i и j.
8. aij = ei·j·h .
Вычисления проводить при h близких к нулю или 1000.
108

3.7 Задание на лабораторный проект № 1

9. aij = c + log2 (i · j).
Вычисления проводить при больших c.

0.9143 · 10−4
0
0
0
−4

0.8762
0.7156 · 10
0
0
10. A = 
−4

0.7943
0.8143
0.9504 · 10
0
0.8017
0.6123
0.7165
0.7123 · 10−4

3.7




.


Задание на лабораторный проект № 1

Написать и отладить программу, реализующую ваш вариант метода
исключения с выбором главного элемента, для численного решения систем
линейных алгебраических уравнений Ax = f , вычисления det A и A−1. Предусмотреть сообщения, предупреждающие о невозможности решения указанных
задач с заданной матрицей A.
Для выполнения лабораторного проекта необходимо запрограммировать, отладить и протестировать следующие функции (отдельные части программы):
1. Система меню для взаимодействия пользователя с программой и генерация исходных данных задачи.
2. Подпрограмма факторизации (разложения на сомножители) исходной
матрицы A, отвечающая вашему варианту задания.
3. Подпрограмма решения системы линейных алгебраических уравнений
Ax = f .
4. Подпрограмма вычисления определителя матрицы det A.
5. Подпрограмма обращения матрицы; способ 1: через решение системы
AX = I.
6. Подпрограмма обращения матрицы; способ 2: через элементарные преобразования разложения.
7. Демонстрационные режимы по выбору пользователя из меню:
(a) «Эксперимент 1 – Решение СЛАУ для случайных матриц».
(b) «Эксперимент 2 – Решение СЛАУ с плохо обусловленными матрицами».
(c) «Эксперимент 3 – Обращение случайных матриц; способ 1».
109

3 Лабораторный проект № 1

(d) «Эксперимент 4 – Обращение случайных матриц; способ 2».
(e) «Эксперимент 5 – Обращение плохо обусловленных матриц матриц;
способ 1».
(f) «Эксперимент 6 – Обращение плохо обусловленных матриц матриц;
способ 2».
8. Сервисные подпрограммы:
(a) Генерация матриц (с клавиатуры, случайные, плохо обусловленные).
(b) Сохранение результатов экспериментов в таблицы (в файл) для построения графиков (режим «off-line»).
(c) Вывод результатов экспериментов в таблицы, но не в файл, а на экран
непосредственно по мере вычисления результатов (режим «on-line»).
(d) Построение графиков.
Уделить особое внимание эффективности программы (в смысле экономии оперативной памяти). Предусмотреть пошаговое выполнение алгоритма
исключения с выводом результата на экран.
Выполнить следующие пункты задания.
1. Провести подсчёт фактического числа выполняемых операций умножения
и деления при решении системы линейных алгебраических уравнений, сравнить
его с оценочным числом (n3/3).
2. Определить скорость решения задач (решение систем линейных алгебраических уравнений, обращение матриц) с учётом времени, затрачиваемого на
разложение матрицы. Для этого спроектировать и провести эксперимент, который охватывает матрицы порядка от 5 до 100 (через 5 порядков). Представить
результаты в виде таблицы и графика зависимости времени выполнения (в
минутах и секундах) от порядка матриц. Таблицу и график вывести на экран.
3. Оценить точность решения систем линейных алгебраических уравнений,
имеющих тот же самый порядок, что и задачи из п. 2. Для этого сгенерировать
случайные матрицы A, задать точное решение x∗ и образовать правые части
f = Ax∗. Провести анализ точности вычисленного решения x от порядка матрицы. Результаты представить в виде таблицы и графика.
Для заполнения матрицы A использовать случайные числа из диапазона от
−100 до 100. В качестве точного решения взять вектор x∗ = (1, 2, . . . , n)T , где
n – порядок матрицы. Для оценки точности использовать норму вектора
kxk∞ = max(|xi|).
i

110

(3.20)

3.7 Задание на лабораторный проект № 1

4. Повторить пункт 3 задания для плохо обусловленных матриц (см. подразд. 3.6), имеющих порядок от 4 до 40 с шагом 4.
5. Вычислить матрицу A−1 следующими двумя способами.
Способ 1 – через решение системы AX = I, где I – единичная матрица.
Способ 2 – через разложение матрицы A в произведение элементарных матриц, обращение которых осуществляется отдельными процедурами, а их произведение даёт матрицу A−1.
Сравнить затраты машинного времени (по числу операций) и точность обращения матриц при использовании указанных способов 1 и 2. Эксперименты
провести для случайных матриц порядков от 5 до 100 через 5. Для оценки
точности в обоих способах использовать оценочную формулу
−1
−1
−1
kA−1
т − Aпр k ≤ kI − AAпр k · kAk .

(3.21)

Использовать норму матрицы типа «бесконечность», т. е., вычислять ее по
следующему выражению:
!
n
X
kAk∞ = max
|aij | ,
(3.22)
i

j=1

−1
где A−1
т – точное значение обратной матрицы, а Aпр – приближенное значение,
полученное в результате обращения каждым из способов 1 и 2.
6. Провести подсчёт фактического числа выполняемых операций умножения
и деления при обращении матриц первым и вторым способами, сравнить его с
оценочным числом (n3).

Замечание 3.8.
По ходу проведения численных экспериментов на
экран дисплея должны выводиться следующие таблицы.
Решение систем линейных алгебраических уравнений:
Порядок

Время

Точность

Теоретическое
Реальное
число операций число операций

Аналогичная таблица должна быть построена для плохо обусловленных
матриц.
Обращение матриц:
Порядок

Время
Точность
Число операций
спос. 1 спос. 2 спос. 1 спос. 2 спос. 1 спос. 2 теорет.
111

3 Лабораторный проект № 1

Замечание 3.9.
Результаты экспериментов необходимо вывести на
экран в форме следующих графиков. Для случая обращения матриц при построении графиков использовать данные из второй таблицы.
Графики решения систем линейных алгебраических уравнений:


зависимость реального и оценочного числа операций от порядка матрицы
(для разных графиков использовать разные цвета);



зависимость времени решения от порядка матриц;



зависимость точности решения от порядка матриц. При построении графиков использовать данные из первой таблицы. Для этого их необходимо
записать в текстовый файл.
Графики для обращения матриц:



зависимость реального и оценочного числа операций от порядка матрицы
(для разных графиков использовать разные цвета);



зависимость времени обращения первым и вторым способом от порядка
матриц;



зависимость точности обращения первым и вторым способом от порядка
матриц.

3.8

Варианты задания на лабораторный проект № 1

1. LU -разложение на основе гауссова исключения
главного элемента по столбцу.
2. LU -разложение на основе гауссова исключения
главного элемента по строке.
3. LU -разложение на основе гауссова исключения
главного элемента по активной подматрице.
4. L U -разложение на основе гауссова исключения
главного элемента по столбцу.
5. L U -разложение на основе гауссова исключения
главного элемента по строке.
6. L U -разложение на основе гауссова исключения
главного элемента по активной подматрице.
112

по столбцам с выбором
по столбцам с выбором
по столбцам с выбором
по столбцам с выбором
по столбцам с выбором
по столбцам с выбором

3.8 Варианты задания на лабораторный проект № 1

7. LU -разложение на основе гауссова исключения по строкам с выбором
главного элемента по строке.
8. LU -разложение по компактной схеме Краута с выбором главного элемента
по столбцу.
9. L U -разложение по компактной схеме Краута с выбором главного элемента
по строке.
10. LU -разложение по компактной схеме «строка за строкой» с выбором
главного элемента по строке.
11. LU −1-разложение A = LU на основе жорданова исключения с выбором
главного элемента по столбцу.
12. LU −1-разложение A = LU на основе жорданова исключения с выбором
главного элемента по строке.
13. LU −1-разложение A = LU на основе жорданова исключения с выбором
главного элемента по активной подматрице.
14. U L-разложение на основе гауссова исключения по столбцам с выбором
главного элемента по столбцу.
15. U L-разложение на основе гауссова исключения по столбцам с выбором
главного элемента по строке.
16. U L-разложение на основе гауссова исключения по столбцам с выбором
главного элемента по активной подматрице.
17. U L -разложение на основе гауссова исключения по столбцам с выбором
главного элемента по столбцу.
18. U L -разложение на основе гауссова исключения по столбцам с выбором
главного элемента по строке.
19. U L -разложение на основе гауссова исключения по столбцам с выбором
главного элемента по активной подматрице.
20. U L -разложение на основе гауссова исключения по строкам с выбором
главного элемента па строке.
21. U L -разложение по компактной схеме Краута с выбором главного элемента по столбцу.
22. U L-разложение по компактной схеме Краута с выбором главного элемента по строке.
23. U L -разложение по компактной схеме «строка за строкой» с выбором
главного элемента по строке.
24. L −1U -разложение A = L U на основе жорданова исключения с выбором
главного элемента по столбцу.
113

3 Лабораторный проект № 1

25. L −1U -разложение A = L U на основе жорданова исключения с выбором
главного элемента по строке.
26. L −1U -разложение A = L U на основе жорданова исключения с выбором
главного элемента по активной подматрице.
Если нет других указаний преподавателя, выбирайте ваш вариант по вашему
номеру в журнале студенческой группы.
Обозначения:
L – нижняя треугольная матрица,
U – верхняя треугольная матрица,
L – нижняя треугольная матрица с единичными элементами на диагонали,
D – диагональная матрица,
U – верхняя треугольная матрица с единичными элементами на диагонали.

3.9

Методические рекомендации для проекта № 1

В дальнейшем мы используем сокращение СЛАУ: «Система линейных алгебраических уравнений».
Рассмотрим следующие пункты задания последовательно с точки зрения их
реализации в проекте.
1. Система меню для взаимодействия пользователя с программой и генерация исходных данных задачи.
2. Функция факторизации матрицы, отвечающая вашему варианту исключения.
3. Функция решения системы линейных алгебраических уравнений.
4. Функция вычисления определителя матрицы.
5. Функция обращения матрицы через решение системы AX = I.
6. Функция обращения матрицы через элементарные преобразования разложения.
114

3.9 Методические рекомендации для проекта № 1

7. Эксперимент 1 «Решение СЛАУ для случайных матриц».
8. Эксперимент 2 «Решение СЛАУ с плохо обусловленными матрицами».
9. Эксперимент 3 «Обращение случайных матриц».
Система меню для взаимодействия пользователя с программой
Возможны различные варианты меню:
1. Меню, в котором взаимодействие с пользователем осуществляется через
командную строку.
2. Меню, в котором взаимодействие с пользователем осуществляется через
графический интерфейс.
Меню должно включать следующие возможности:
• Ввод с клавиатуры размерности задачи n (n – количество уравнений, т. е.,
число неизвестных в СЛАУ).
• Ввод с клавиатуры элементов квадратной матрицы A размера n × n.
• Ввод с клавиатуры элементов вектора b размерности n × 1 - правой части
СЛАУ.
• Заполнение матрицы A и вектора b случайными числами. Для заполнения
матрицы A использовать случайные числа из диапазона от −100 до 100.
Функция факторизации матрицы
Рассмотрим на примере алгоритма 1 реализацию LU -разложения. Рассмотрим реализацию каждого действия отдельно.
1. Нормируем первую строку матрицы A(k − 1):
for (int j=k;j 0 имеет разложение
P = U DU T , где U – верхняя треугольная матрица с единичной диагональю и
D = diag (d1, . . . , dn), при этом элементы матриц U и D даются следующим
алгоритмом.
Для j = n, n − 1, . . . , 2 рекуррентно выполнять цикл, образованный следующим упорядоченным набором выражений:
dj = P (j, j),

U (j, j) = 1,







 d(1) = P (1, 1),

k = 1, . . . , j − 1,
(
U (1, 1) = 1.

k = 1, . . . , j − 1 


P (i, k) := P (i, k) − U (i, j)U (k, j)dj


i = 1, . . . , k

U (k, j) = P (k, j)/d(j),

4.3

Программная реализация алгоритмов
Холесского

В справочных целях включаем реализацию трёх из четырёх приведённых
выше алгоритмов на языке FORTRAN [16]. Эти примеры реализации могут помочь студентам написать свои собственные программы на других языках высокого уровня при выполнении лабораторного проекта № 2, задание для которого
дано ниже в подразд. 4.7.
139

Лабораторный проект № 2

Верхнетреугольное разложение Холесского:
P (N, N ), P = U U T , P > 0, U — верхнетреугольная матрица.
c j = n, n − 1, . . . , 2
DO 5 J = N, 2, −1
U (J, J) = SQRT(P (J, J))
α = 1./U (J, J)
DO 5 K = 1, J − 1
U (K, J) = α ∗ P (K, J)
β = U (K, J)
DO 5 I = 1, K
5 P (I, K) = P (I, K) − β ∗ U (I, J)
U (1, 1) = SQRT(P (1, 1))
Замечание 4.4. Матрица U должна замещать P в компьютерной памяти. Нижние части матриц U и P не должны использоваться вовсе (память
для них не выделяется). В любом случае верхнетреугольная часть матрицы P
теряется, так как на её месте появляется верхнетреугольная часть матрицы U ,
т. е., все вычисления ведутся в одном и том же массиве P .
Верхнетреугольное без



· разложение Холесского:

P (N, N ), P = U DU T , P > 0, U — верхнетреугольная матрица
с единичной диагональю, D – диагональная матрица.
c j = n, n − 1, . . . , 2
DO 5 J = N, 2, −1
D(J) = P (J, J)
α = 1./D(J)
DO 5 K = 1, J − 1
β = P (K, J)
U (K, J) = α ∗ β
DO 5 I = 1, K
5 P (I, K) = P (I, K) − β ∗ U (I, J)
D(1) = P (1, 1)
Замечание 4.5.
В любом случае верхнетреугольная часть матрицы
P теряется, так как на её месте появляется верхнетреугольная часть матрицы
U , при этом единицы, соответствующие диагонали матрицы U , только подразумеваются, а на их месте пишутся диагональные элементы матрицы D. Для
поддиагональной части массива P память не выделяется.
140

4.4 Разложение Холесского: ijk-формы

Предыдущие замечания 4.4 и 4.5 свидетельствуют, что фактически массив,
выделяемый для исходной матрицы P и одновременно для получаемых на её
месте результатов разложений Холесского, должен быть оформлен как одномерный массив. Размер этого массива, очевидно, равен N (N +1)/2 элементов.
Напишем для предыдущего алгоритма его «одномерную» версию.
Верхнетреугольное без
P = U DU T :



· «одномерное» разложение

Одномерный массив P (N (N + 1)/2) соответствует P = U DU T .
JJ = N (N + 1)/2
JJN = JJ
c j = n, n − 1, . . . , 2
DO 5 J = N, 2, −1
α = 1./P (JJ)
KK = 0
c JJN = следующий
JJN = JJ − J
диагональный элемент
DO 4 K = 1, J − 1
c JJN + K = (K, J)
β = P (JJN + K)
P (JJN + K) = α ∗ β
DO 3 I = 1, K
3 P (KK + I) = P (KK + I) − β ∗ P (JJN + I) c KK + I = (I, K)
c KK = K(K − 1)/2
4 KK = KK + K
c JJ = J(J − 1)/2
5 JJ = JJN

4.4

Разложение Холесского: ijk-формы

Разложение Холесского симметричной положительно определённой матрицы P может быть получено в результате незначительных изменений базовых
LU -разложений квадратной матрицы A. При этом симметрия матрицы P используется для сокращения числа действий примерно вдвое. Способ хранения
матрицы P должен быть компактным, т. е., в одномерном массиве хранится
по строкам (или по столбцам) только нижняя (или верхняя) треугольная часть
матрицы P вместе с диагональю.
В той же последовательности, как выше изложены (см. подразд. 7.5) ijkформы L U -разложения матрицы A, приведём ijk-формы L DL T и LLT разложений Холесского матрицы P > 0. Из них видно, сколь незначительны
141

Лабораторный проект № 2

требуемые изменения. В каждом алгоритме объединены оба разложения, при
этом те изменения, что относятся к LLT -разложению, заключены в скобки.
В приводимых ниже алгоритмах явно не указано, когда элементы матриц D, L
и L должны замещать соответствующие элементы исходной матрицы P . Такие
замещения могут происходить сразу, а могут откладываться до того момента,
когда элементы матрицы P станут ненужными для дальнейших вычислений.
В этом отношении не все ijk-формы одинаково экономичны в реализации, и
для каждой из них вопрос о скорейшемзамещении исходных элементов матрицы P нужно решать отдельно.
Два алгоритма Холесского: разложения LLT и L DL T
с немедленными модификациями
1) kij-алгоритм
1/2
(l11 = p11 )
Для k = 1 до n − 1
Для i = k + 1 до n
lik = pik /pkk
(lik = pik /lkk )
Для j = k + 1 до i
pij = pij − lik pjk
(pij = pij − lik ljk )
1/2
(lk+1,k+1 = pk+1,k+1)

2) kji-алгоритм
1/2
(l11 = p11 )
Для k = 1 до n − 1
Для s = k + 1 до n
lsk = psk /pkk (psk /lkk )
Для j = k + 1 до n
Для i = j до n
pij = pij − lik pjk
(pij = pij − lik ljk )
1/2
(lk+1,k+1 = pk+1,k+1)

Четыре алгоритма Холесского: разложения LLT и L DL T
с отложенными модификациями
3) jki-алгоритм
1/2
(l11 = p11 )
Для j = 2 до n
Для s = j до n
ls,j−1 = ps,j−1/pj−1,j−1
(ls,j−1 = ps,j−1/lj−1,j−1)
Для k = 1 до j − 1
Для i = j до n
pij = pij − lik pjk
(pij = pij − lik ljk )
1/2
(lj,j = pj,j )
142

4) jik-алгоритм
1/2
(l11 = p11 )
Для j = 2 до n
Для s = j до n
ls,j−1 = ps,j−1/pj−1,j−1
(ls,j−1 = ps,j−1/lj−1,j−1)
Для i = j до n
Для k = 1 до j − 1
pij = pij − lik pjk
(pij = pij − lik ljk )
1/2
(lj,j = pj,j )

4.5 Разложение Холесского: алгоритмы окаймления

5) ikj-алгоритм
1/2
(l11 = p11 )
Для i = 2 до n
Для k = 1 до i − 1
li,k = pi,k /pk,k
(li,k = pi,k /lk,k )
Для j = k + 1 до i
pij = pij − lik pjk
(pij = pij − lik ljk )
1/2
(li,i = pi,i )
Замечание 4.6.

6) ijk-алгоритм
1/2
(l11 = p11 )
Для i = 2 до n
Для j = 2 до i
li,j−1 = pi,j−1/pj−1,j−1
(li,j−1 = pi,j−1/lj−1,j−1)
Для k = 1 до j − 1
pij = pij − lik pjk
(pij = pij − lik ljk )
1/2
(li,i = pi,i )

Приведённые алгоритмы L DL T и LLT -разложений

Холесского матрицы P получены из соответствующих ijk-алгоритмов L U разложения матрицы A (см. подразд. 7.5). Для получения U DU T и U U T разложений Холесского матрицы удобно исходить из U L-разложения матрицы
A, если для него предварительно построить ijk-алгоритмы. Это построение
нетрудно выполнить, если учесть, что U L-разложение соответствует измененному (инверсному) порядку исключения переменных. В этом случае модификация системы уравнений начинается с последней переменной последнего уравнения.
Суммируя вышеизложенное по ijk-формам алгоритмов Холесского, полученных из ijk-форм алгоритмов Гаусса, имеем 24 разновидности разложений
симметричной положительно определённой матрицы P :
6 ijk-форм для P = L DL T ,
6 ijk-форм для P = LLT ,
6 ijk-форм для P = U DU T ,
6 ijk-форм для P = U U T .

4.5

Разложение Холесского: алгоритмы окаймления

Как и для LU -разложения, для разложения Холесского в любых его
вариантах (4.2) существует ещё один класс алгоритмов, – так называемые
матрично-векторные алгоритмы, объединяемые идеей окаймления. Получение
этих алгоритмов базируется на блочном перемножения матриц, участвующих
в разложении. Здесь полностью применимы принципы, изложенные в подразд. 8.2.
143

Лабораторный проект № 2

Покажем, как выводятся такие матрично-векторные алгоритмы на примере
одного из четырёх вариантов разложения Холесского (4.2), а именно, варианта
P = LLT . Пользуясь этим справочным материалом, любой студент сможет
самостоятельно построить родственные алгоритмы для других трёх вариантов
разложения. Для этого поделим все матрицы в данном варианте на блоки,
выделяя в каждой матрице j-ю строку и j-й столбец. Тем самым разложение
P = LLT будет представлено в блочной форме


 P11
j ⇒ aT
P31

j

a
pjj
b





j


P13 
 L11
T  =  T
c
ljj
b
L31 d
P33

 
L33

T
 L11


 

j

c
ljj



LT31 
T ,
d
LT33

(4.3)

где фрагменты j-й строки и j-го столбца обозначены как векторы-столбцы
выделенными символами a, b, c и d, а заглавные буквы обозначают матрицы.
Нулевые элементы треугольных матриц не показаны.
Перемножение матриц (4.3), выполняемое поблочно, дает девять соотношений относительно блок-элементов матриц P и L. Пользуясь этим, рассмотрим
два основных способа разложения матрицы P методом окаймления.
Окаймление известной части разложения. Из указанных девяти
соотношений возьмём только те, что окаймляют блок P11 = L11LT11, считая,
что в этой части разложение уже сделано, т. е., что блок L11 уже вычислен. В
силу симметрии P из трёх окаймляющих произведений имеем только два:
2
a = L11c и pjj = cT c + ljj
.

(4.4)

Отсюда сначала находим c как решение нижнетреугольной системы уравнений L11c = a; затем находим ljj = (pjj − cT c)1/2.
Окаймление неизвестной части разложения. Из указанных соотношений возьмём те, что окаймляют блок P33, считая, что до этого блока разложение уже сделано, т. е., что блоки L11, L31 и c уже найдены. В силу симметрии
P из трёх окаймляющих произведений имеем только два:
2
pjj = cT c + ljj

и b = L31c + dljj .

(4.5)

Отсюда сначала находим ljj = (pjj − cT c)1/2; затем d = (b − L31c)/ljj .
Существует два естественных способа реализации окаймления известной части в LLT -разложении.
144

4.5 Разложение Холесского: алгоритмы окаймления

В первом варианте треугольная система в (4.4) решается с помощью строчного алгоритма (аналог алгоритма на рис. 8.1 слева), во втором – с помощью алгоритма скалярных произведений (аналог алгоритма на рис. 8.1 справа).
Псевдокоды этих двух вариантов приведены на рис. 4.1.


l11 = p11
l11 = p11
Для j = 2 до n
Для j = 2 до n
Для k = 1 до j − 1
Для i = 2 до j
ljk = pjk /lkk
lj,i−1 = pj,i−1/li−1,i−1
Для i = k + 1 до j
Для k = 1 до i − 1
pji = pji − ljk lik
pji = pji − ljk lik


ljj = pjj
ljj = pjj
Рис. 4.1. Алгоритмы окаймления известной части LLT -разложения: строчный (слева);
алгоритм скалярных произведений (справа)

Для окаймления неизвестной части в LLT -разложении также существуют
два естественных способа реализации выражений (4.5). Здесь основной операцией является умножение вектора на прямоугольную матрицу.
Можно реализовать такие умножения посредством скалярных произведений
или линейных комбинаций, что приводит к двум различным формам алгоритма, показанным на рис. 4.2, которые аналогичны алгоритмам Донгарры–
Айзенштата на рис. 8.4.
Для j = 1 до n
Для k = 1 до j − 1
pjj = pjj − ljk ljk

ljj = pjj
Для k = 1 до j − 1
Для i = j + 1 до n
pij = pij − lik ljk
Для s = j + 1 до n
lsj = psj /ljj

Для j = 1 до n
Для i = j + 1 до n
Для k = 1 до j − 1
pij = pij − lik ljk
Для k = 1 до j − 1
pjj = pjj − ljk ljk

ljj = pjj
Для s = j + 1 до n
lsj = psj /ljj

Рис. 4.2. Алгоритмы окаймления неизвестной части LLT -разложения: алгоритм линейных комбинаций (слева); алгоритм скалярных произведений (справа)

Таким образом, выше показано, что алгоритмы окаймления в LU разложении (см. разд. 8.1) легко модифицируются для случая симметрической
145

Лабораторный проект № 2

положительно определённой матрицы P . Тогда мы имеем 4 варианта разложения Холесского (4.2), 2 способа окаймления и 2 схемы вычислений для каждого
алгоритма окаймления. Всего получается 16 вариантов алгоритмов окаймления
для разложения Холесского симметрической положительно определённой матрицы. Добавляя к ним 24 разновидности ijk-форм, получаем 40 различных
вычислительных схем разложений Холесского, которые и составляют весь набор вариантов (см. подразд. 4.8) задания на лабораторный проект № 2 (см. подразд. 4.7).

4.6

Особенности хранения ПО-матрицы P

Как уже отмечалось (см. стр. 141), особенностью данного проекта является
использование линейных (одномерных) массивов для хранения матрицы P . Так
как матрица P симметрическая, то достаточно хранить только нижнюю (или
верхнюю) треугольную часть этой матрицы вместе с диагональю. Причём для
хранения заполненной матрицы используется один одномерный массив, а для
хранения разреженной – два.
Хранение матрицы P может быть организовано по столбцам или по строкам
в зависимости от используемого алгоритма разложения.
Рассмотрим строчный вариант хранения нижней треугольной части
заполненной матрицы P . В этом случае все элементы нижней треугольной
матрицы записываются построчно в одномерный массив. Так как для хранения
первой строки матрицы требуется один элемент массива, для хранения второй
строки – два элемента и т. д., то для хранения симметрической матрицы размера n требуется одномерный массив размера n(n + 1)/2. Положение (i, j)-го
элемента матрицы P в массиве определяется по формуле
k = (i − 1)i/2 + j .
Аналогичным образом организуется хранение матрицы P по столбцам.
Как уже отмечалось, для хранения разреженной матрицы P используются
два одномерных массива. Так, хранение нижней треугольной части матрицы
P по строкам можно организовать следующим образом. В массиве a хранятся
построчно элементы матрицы от первого ненулевого до диагонального включительно. В массиве b на i-м месте стоит положение i-го диагонального элемента
матрицы P в массиве a. Для определения положения (i, j)-гo элемента матрицы P в массиве a надо воспользоваться следующим алгоритмом. Сначала
вычисляем k = b(i) − (i − j). Затем, если k > b(i − 1), то этот элемент стоит на
146

4.7 Задание на лабораторный проект № 2

k-м месте. В противном случае (i, j)-й элемент стоит левее первого ненулевого
элемента i-й строки, поэтому он равен нулю и в массиве a не хранится. Способ хранения по столбцам строится аналогичным образом, но в этом случае
хранятся все элементы от диагонального до последнего ненулевого элемента
столбца включительно.
Таким образом, существуют 4 варианта хранения разреженной ленточной
матрицы P , и выбор конкретного варианта должен соответствовать заданному
варианту разложения Холесского и разновидности ijk-форм.
Замечание 4.7. С учётом положительной определённости матриц этой
лабораторной работы, процедура выбора главного элемента, а также процедуры
перестановки строк и столбцов матрицы P отсутствуют как для заполненных,
так и для разреженных матриц.

4.7

Задание на лабораторный проект № 2

Написать и отладить программу, реализующую заданный вариант алгоритма
разложения Холесского, для решения системы P x = f , где P – симметричная положительно определённая матрица (ПО-матрица P , или кратко, матрица
P > 0). Отделить основные части программы:
а) подпрограмму генерации ПО-матрицы P ;
б) подпрограмму разложения Холесского;
в) подпрограмму решения систем линейных алгебраических уравнений;
г) подпрограмму решения систем линейных алгебраических уравнений с ленточной матрицей P ;
д) сервисные подпрограммы, включая демонстрацию разложения на экране,
подпрограмму контроля правильности разложения и др.
Уделить особое внимание эффективности программы (в смысле экономии
оперативной памяти). Для этого в одномерном массиве достаточно хранить
только нижнюю (или верхнюю) треугольную часть и диагональ матрицы P .
Результат разложения замещает исходную матрицу. Предусмотреть пошаговое
выполнение алгоритма исключения с выводом результата на экран.
Выполнить следующие пункты задания:
1. Дать формулировку и доказательство теоремы о заданном варианте
разложения Холесского как утверждение о том, что предлагаемый студентом
алгоритм даёт единственное разложение Холесского. Для иллюстрации дать
численный пример работы алгоритма по шагам для матрицы P размера (4×4).
147

Лабораторный проект № 2

2. Провести подсчёт количества операций:
а) извлечения квадратного корня;
б) умножения и деления.
Подсчёт выполнить тремя способами:
а) фактически – при конкретном расчёте разложения;
б) теоретически точно в зависимости от размерности матрицы n;
в) теоретически приближенно в зависимости от n при n → ∞.
3. Определить скорость решения задач (решение систем линейных алгебраических уравнений), для чего спроектировать и провести эксперимент, который
охватывает сгенерированные случайным образом ПО-матрицы P порядка от 5
до 100 (через 5 порядков). Результаты представить в виде таблицы и графика
зависимости времени выполнения от порядка матриц. Сравнить со своим
вариантом из лабораторного проекта № 1.
4. Оценить точность решения систем линейных алгебраических уравнений с
матрицами из п. 3. Для этого выбрать точное решение x∗ и образовать правые
части f = P x∗ . В качестве точного решения взять вектор x∗ = (1, 2, . . . , n).
Для оценки точности использовать норму вектора (3.20), с. 110 из лабораторного проекта № 1. Провести анализ точности вычисленного решения x в
зависимости от порядка матрицы. Результаты представить в виде таблицы и
графика. Сравнить со своим вариантом из проекта № 1.
5. Для заполнения матрицы P использовать случайные числа из диапазона
от −100 до 100. Сначала заполнить треугольную часть матрицы P , т. е., элементы pij , где i > j Затем заполнить диагональ. В качестве диагонального
элемента pii, i = 1, 2, . . . , n, выбрать случайное число из интервала


X
X

|pij | + 101 ,
(4.6)
|pij | + 1,
j6=i

j6=i

чтобы обеспечить выполнение условия
X
|pij | + 1,
pii ≥
j6=i

гарантирующего положительную определённость матрицы P .
148

4.7 Задание на лабораторный проект № 2

6. Определить скорость и точность решения систем линейных алгебраических уравнений с разреженными ленточными матрицами. Для этого
спроектировать и провести эксперимент для систем порядка от 100 до 200
(через 5). Результаты представить в виде таблиц и графиков зависимости
скорости и точности решения от порядка матриц. Для этих же систем найти
аналогичные зависимости для обычного метода Холесского. Pезультаты сравнить.
7. Для случайного заполнения разреженной ленточной матрицы P
использовать следующий алгоритм:
а) случайным образом заполнить половину матрицы (верхнюю или нижнюю), включая диагональ;
б) в случае заполнения нижней треугольной части матрицы P в i-й строке,
i = 1, 2, . . . , n, случайным образом определить количество ненулевых элементов (от 1 до 10), их местоположение (номер столбца oт max{1, i − 50} до i − 1)
и значение (ненулевые целые числа, лежащие в интервале от −100 до 100);
в) при заполнении верхней треугольной части матрицы P применять тот
же алгоритм, что и в п. б), с той лишь разницей, что номер столбца лежит в
интервале от i + 1 до min{i + 50, n};
г) диагональный элемент в i-й строке, i = 1, 2, . . . , n, определить случайным
образом на интервале (4.6).
В качестве точного решения взять вектор x∗ = (1, 2, . . . , n), n – порядок
матрицы P . В случае, если при решении системы P x = f выяснится, что
матрица P вырождена (плохо обусловлена), то сгенерировать новую матрицу
того же порядка и решить систему линейных алгебраических уравнений с
новой матрицей P и новой правой частью. Для оценки точности решения
использовать норму вектора (3.20), с. 110 из лабораторного проекта № 1.
Замечание 4.8. По ходу проведения всех численных экспериментов на
экран дисплея должны выводиться следующие таблицы.
Число вычислительных операций:
Порядок
матрицы

Квадратные корни
а

б

Умножение и деление
с

а

б

в

где а, б, в означает способ вычисления числа действий (см. п. 2).
149

Лабораторный проект № 2

Решение систем линейных алгебраических уравнений
с заполненной матрицей P :
Порядок
матрицы

Время
метод
Гаусса

метод
Холесского

Точность
метод
Гаусса

метод
Холесского

Таким образом, в данный проект следует включить работу, выполненную
ранее в проекте № 1, чтобы иметь возможность сравнения метода Холесского
с методом Гаусса как по времени, так и по точности вычислений.
Решение систем линейных алгебраических уравнений
с разреженной матрицей P :
Порядок
матрицы

Время
Заполненная
матрица

Разреженная
матрица

Точность
Заполненная
матрица

Разреженная
матрица

Это означает, что для каждого текущего значения n порядка матрицы P
необходимо решать две системы: одну – с заполненной матрицей P (см. п. 5
задания), другую – с разреженной матрицей P (см. п. 7 задания).
Замечание 4.9.

Необходимо вывести на экран следующие графики:

Графики решения систем с заполненной матрицей P :



зависимость времени решения от порядка матриц для методов Гаусса и
Холесского;
зависимость точности решения от порядка матриц для методов Гаусса и
Холесского.
Графики решения систем с разреженной матрицей P :




150

зависимость времени решения от порядка матриц для обычного метода
Холесского и с учётом разреженности матрицы P ;
зависимость точности решения от порядка матриц для обычного метода
Холесского и с учётом разреженности матрицы P . При построении графиков использовать данные из соответствующей таблицы. Для этого их
необходимо записать в текстовый файл.

4.8 Варианты задания на лабораторный проект № 2

4.8

Варианты задания на лабораторный проект № 2

Как отмечалось в конце подразд. 4.5, всего по данной теме предлагается 40
различных вычислительных схем разложений Холесского, которые и составляют весь набор вариантов задания на лабораторный проект № 2 (см. подразд. 4.7)
В табл. 4.1 каждому номеру варианта соответствует своя разновидность
разложения Холесского и свой способ организации вычислений.

Таблица 4.1. Варианты задания на лабораторный проект № 2
Окаймление

ijk-формы
Вид
разложения

b
c

kji

jki

jik

ikj

ijk

неизвестной
части

a

b

c

b

P = L DL T

1

2

3

4

5

6

7

8

9

10

P = LLT

11

12

13

14

15

16

17

18

19

20

P = U DU T

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

36

39

40

P = UU
a

kij

известной
части

T

– строчный алгоритм;
– алгоритм скалярных произведений;
– алгоритм линейных комбинаций.

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

4.9

Методические рекомендации для проекта № 2

Рассмотрим следующие пункты задания последовательно с точки зрения их
реализации в проекте.
1. Система меню для взаимодействия пользователя с программой.
2. Функция генерации ПО-матрицы P .
3. Функция разложения Холесского.
4. Функция решения системы линейных алгебраических уравнений.
151

Лабораторный проект № 2

5. Функция решения системы линейных алгебраических уравнений с ленточной матрицей P . Ленточную матрицу мы ниже называем также разреженной.
6. Эксперимент 1 «Количество арифметических операций».
7. Эксперимент 2 «Решение СЛАУ с заполненной матрицей P ».
8. Эксперимент 3 «Решение СЛАУ с разреженной матрицей P ».
С учётом положительной определённости матрицы P процедура выбора
главного элемента, а также процедуры перестановки строк и столбцов матрицы
P отсутствуют как для заполненных, так и для разреженных матриц.
Система меню для взаимодействия пользователя с программой
Действуйте так же, как вы строили меню на с. 115 при реализации п. 1 из
перечня заданий для проекта № 1 на с. 114.
Необходимо также реализовать следующие сервисные подпрограммы: демонстрация разложения на экране, подпрограмма контроля правильности разложения.
Функция генерации ПО-матрицы P
Для заполнения матрицы P нужно задать случайные числа из диапазона
от −100 до +100. Поскольку матрица P симметрическая, достаточно хранить
только нижнюю (или верхнюю) треугольную часть этой матрицы вместе с
диагональю.
Заполненная матрица P
Для строчного хранения заполненной симметрической матрицы размера n
требуется одномерный массив размера n(n + 1)/2. Хранить элементы можно
как по строкам, так и по столбцам. Положение (i, j)-го элемента матрицы P в
массиве можно определить по формуле k = (i − 1)i/2 + j.
Для генерации ПО-матрицы P необходимо:
1. Заполнить треугольную часть матрицы P , т. е., элементы pij , где i > j,
случайными числами из диапазона от −100 до +100.
152

4.9 Методические рекомендации для проекта № 2

2. Заполнить диагональ. В качестве диагонального элемента pii, 1 ≤ i ≤ n,
нужно выбрать случайное число из интервала


X
X

|pij | + 101 .
|pij | + 1,
j6=i

j6=i

Рассмотрим один из возможных вариантов генерации заполненной матрицы
P (для хранения по строкам):
Листинг 4.1.
// генерируем внедиагональные элементы матрицы (n - размер матрицы),
// вычисляем сумму элементов матрицы для j!=i
// вычисляем сумму элементов матрицы для j,i
int [] sum= new int[n];
Random r= new Random();
for (int j=1;j 0. Тогда метод Якоби сходится [5],
если A – матрица с диагональным преобладанием, т. е. при условии
X
| aij | ,
i = 1, 2, . . . , m .
(9.17)
aii >
j6=i

Следствие 9.2.

Пусть A = AT > 0. Тогда метод верхней релаксации

xn+1 − xn
+ Axn = f
(D + ωA1 )
ω
сходится при условии 0 < ω < 2. В частности, метод Зейделя сходится [5].
Следствие 9.3.

Пусть A = AT > 0. Тогда для метода простой итерации
xn+1 − xn
+ Axn = f
τ

356

9.9 Скорость сходимости итерационных методов

необходимым и достаточным условием сходимости является неравенство
0 < τ < 2/λmax ,
где λmax – наибольшее по абсолютному значению собственное число матрицы
A, называемое также спектральным радиусом ρ(A) матрицы A [5].
Сходимость итерационного метода (9.11) означает, что z n → 0 в некоторой
норме при n → ∞. Переписав уравнение (9.15), получим:
z n+1 = Sz n ,

n = 0, 1, . . . ,

(9.18)

где
S = I − τ B −1A

(9.19)

называют переходной матрицей погрешности от n-й итерации к (n + 1)-й.
Теорема 9.2 ([5]).

Итерационный метод

xn+1 − xn
+ Axn = f , n = 0, 1, . . . ,
(9.20)
τ
сходится при любом начальном приближении тогда и только тогда, когда все
собственные значения матрицы (9.19) по модулю меньше единицы.
B

9.9

Скорость сходимости итерационных методов

Теорема 9.2 о сходимости имеет принципиальное значение и накладывает
минимальные ограничения на матрицы A и B. Однако её непосредственное
применение к конкретным итерационным методам не всегда возможно, так как
исследование спектра матрицы (9.19) является более трудоемкой задачей, чем
решение исходной системы Ax = f .
Будем рассматривать решение x системы и последовательные приближения
n
x как элементы евклидова пространства, а матрицы A, B и другие – как
операторы, действующие в нём.
Замечание 9.1. Для двух симметрических матриц A и B неравенство
A ≥ B означает, что (Ax, x) ≥ (Bx, x) для всех x ∈ E. В случае некоторой
симметрической положительно определённой
матрицы D будем пользоваться
p
обобщённой нормой вектора kykD = (Dy, y) .

Теорема 9.3 ([5]). Пусть A и B – симметрические положительно определённые матрицы, для которых справедливы неравенства
γ1 B ≤ A ≤ γ2 B ,

(9.21)
357

9 Лабораторный проект № 6

где γ1 , γ2 – положительные константы и γ1 < γ2. При τ = 2/(γ1 + γ2 ) итерационный метод (9.20) сходится, и для погрешности справедливы оценки:

где

kxn − xkA ≤ ρn kx0 − xkA ,

n = 0, 1, . . . ,

kxn − xkB ≤ ρn kx0 − xkB ,

n = 0, 1, . . . ,

ρ=

1−ξ
,
1+ξ

ξ=

γ1
.
γ2

(9.22)

Пусть
Aµ = λBµ .

(9.23)

Тогда
γ1(Bµ, µ) ≤ (Aµ, µ) = λ(Bµ, µ) ≤ γ2 (Bµ, µ)

и

γ1 ≤ λmin (B −1A) ,

γ2 ≥ λmax (B −1A) ,

(9.24)

где λmin (B −1A) и λmax (B −1A) – минимальное и максимальное по абсолютному значению собственные числа в обобщённой задаче (9.23) на собственные
значения.
Таким образом, наиболее точными константами, с которыми выполняются
неравенства (9.21), являются константы
γ1 = λmin (B −1A) ,

γ2 = λmax (B −1A) .

В этом случае параметр
τ=

2
λmin (B −1A) + λmax (B −1A)

(9.25)

называется оптимальным итерационным параметром, минимизирующим
ρ=

1−ξ
,
1+ξ

ξ=

γ1
γ2

на множестве всех положительных γ1, γ2, удовлетворяющих условиям (9.24).
В случае метода простой итерации (B = I) получаем два следствия.
Следствие 9.4.

Если AT = A > 0, то для метода простой итерации
xn+1 − xn
+ Axn = f
τ

358

9.9 Скорость сходимости итерационных методов

при
τ = τ0 =

2
λmin (A) + λmax (A)

справедлива оценка
где [5]

kxn − xk ≤ ρn0 kx0 − xk ,
ρ0 =

1−ξ
,
1+ξ

ξ=

λmin (A)
.
λmax (A)

Следствие 9.5. Для симметрической матрицы A и τ0 = 2/(λmin(A) +
+ λmax (A)) справедливо равенство
kI − τ0 Ak = ρ0 ,
где [5]
ρ0 =

1−ξ
,
1+ξ

ξ=

λmin (A)
.
λmax (A)

В приложениях часто встречаются задачи с плохо обусловленной матрицей
A, когда соотношение λmax (A)/λmin(A) велико. В этом случае число ρ0 близко
к единице, и метод простой итерации сходится медленно. Число итераций n0(ε),
которое требуется в случае малых ξ для достижения заданной точности ε, т. е.
для достижения оценки
kxn − xk ≤ εkx0 − xk ,
получается из условия ρn0 < ε в виде n ≥ n0 (ε), где
n0(ε) =

ln(1/ε)
.
ln(1/ρ0)

Отсюда при малых ξ имеем
ln(1/ε)
n0 (ε) ≈
=O


 
1
.
ξ

Это свидетельствует о том, что метод простой итерации в случае малых ξ является медленно сходящимся методом. Ускорить сходимость можно двумя способами: применяя неявный итерационный метод и/или делая τ = τn+1 зависящим
от номера итерации.
359

9 Лабораторный проект № 6

9.10

Итерационные методы вариационного типа

Найти минимальное и максимальное по абсолютному значению собственные
числа в обобщённой задаче (9.23) на собственные значения бывает сложно,
а без них невозможно задать наилучшее значение итерационного параметра
(9.25). В таких случаях можно использовать другой класс итерационных методов – методы вариационного типа. Здесь на каждой итерации
xk+1 − xk
B
+ Axk = f ,
τk+1

(9.26)

для параметра τk+1 выбирают то значение, которое минимизирует предопределенный критерий качества, связанный с погрешностью kxk+1 − xkD , при условии, что предыдущая итерация уже состоялась с погрешностью kxk − xkD .
В зависимости от выбора матриц D и B получают различные методы этого
типа.
Метод минимальных невязок
Рассмотрим уравнение Ax = f с A = AT > 0. Разность
rk = Axk − f ,

(9.27)

которая получается при подстановке приближённого значения xk в это уравнение, называют невязкой. Погрешность zk = xk − x и невязка rk связаны
равенством Azk = rk . Представим явный итерационный метод
xk+1 − xk
+ Axk = f
τk+1

(9.28)

xk+1 = xk − τk+1rk .

(9.29)

в виде
Метод минимальных невязок есть метод (9.28), в котором параметр τk+1
минимизирует krk+1k при заданной норме krk k невязки текущего шага. Найдём
это значение. Из (9.29) получаем:
Axk+1 = Axk − τk+1Ark ,
rk+1 = rk − τk+1Ark .

Возводя обе части уравнения (9.30) скалярно в квадрат, получим
2
krk+1k2 = krk k2 − 2τk+1(rk , Ark ) + τk+1
kArk k2.

360

(9.30)

9.10 Итерационные методы вариационного типа

Отсюда видно, что krk+1k достигает минимума при
τk+1 =

(Ark , rk )
.
kArk k2

(9.31)

Таким образом, в методе минимальных невязок переход от k-й итерации к
(k + 1)-й осуществляется по следующему алгоритму:
по найденному значению xk вычисляют вектор невязки rk = Axk − f ,
по формуле (9.31) находят параметр τk+1,
по формуле (9.29) определяют вектор xk+1.
Теорема 9.4 ([5]).
Пусть A – симметрическая положительно определённая матрица. Для погрешности метода минимальных невязок справедлива
оценка
kA(xn − x)k ≤ ρn0 kA(x0 − x)k ,
n = 0, 1, . . . ,
где

1−ξ
λmin (A)
,
ξ=
.
1+ξ
λmax (A)
Иными словами, метод минимальных невязок сходится с той же скоростью,
что и метод простой итерации с оптимальным параметром τ .
ρ=

Метод минимальных поправок
Запишем неявный итерационный метод (9.26) в виде
xk+1 = xk − τ B −1rk ,
где rk = Axk − f – невязка. Вектор ωk = B −1rk называют поправкой итерационного метода на (k + 1)-й итерации. Поправка ωk удовлетворяет тому же
уравнению, что и погрешность zk = xk − x неявного метода, т. е. уравнению
B

ωk+1 − ωk
+ Aωk = 0 .
τk+1

(9.32)

Пусть B – симметрическая положительно определённая матрица. Тогда метод минимальных поправок – это метод (9.26), в котором параметр τk+1 минимизирует норму kωk+1kB = (Bωk+1, ωk+1)1/2 при ранее полученном векторе
ω k . В случае B = I метод минимальных поправок совпадает с методом минимальных невязок.
Перепишем (9.32) в виде
ωk+1 = ωk − τk+1B −1Aωk
361

9 Лабораторный проект № 6

и вычислим
2
kωk+1k2B = kωk k2B − 2τk+1(Aωk , ωk ) + τk+1
(B −1Aωk , Aωk ) .

Мининум kωk+1k2B достигается, если и только если
τk+1 =

(Aωk , ωk )
.
(B −1Aωk , Aωk )

(9.33)

Для реализации метода минимальных поправок требуется на каждой итерации решать систему уравнений Bωk = rk относительно поправки ωk и затем
решать систему уравнений Bvk = Aωk , откуда находят вектор vk = B −1Aωk ,
необходимый для вычисления параметра τk+1.
Теорема 9.5 ([5]). Пусть A и B – симметрические положительно определенные матрицы и λmin (B −1A), λmax(B −1A) – наименьшее и наибольшее собственные значения в задаче Ax = λBx. Для погрешности метода минимальных
поправок справедлива оценка
kA(xn − x)kB −1 ≤ ρn0 kA(x0 − x)kB −1 ,
где
1−ξ
ρ0 =
,
1+ξ

n = 0, 1, . . . ,

λmin (B −1A)
ξ=
.
λmax (B −1A)

Метод скорейшего спуска
Возьмём явный метод (9.13) и выберем итерационный параметр τk+1 из
условия минимума kzk+1 kA при заданном векторе zk , где zk+1 = xk+1 − x.
Поскольку погрешность zk удовлетворяет уравнению
zk+1 = zk − τk+1Azk ,
имеем
2
kzk+1k2A = kzk k2A − 2τk+1(Azk , Azk ) + τk+1
(A2zk , Azk ) .

(Azk , Azk )
.
(A2zk , Azk )
Величина zk = xk − x неизвестна, но Azk = rk = Axk − f . Поэтому вычисление τk+1 проводят по формуле
Минимум нормы kzk+1k2A достигается при τk+1 =

τk+1 =
362

(rk , rk )
.
(Ark , rk )

9.10 Итерационные методы вариационного типа

Теорема 9.6 ([5]).
справедлива оценка

Для погрешности явного метода скорейшего спуска

kxn − xkA ≤ ρn0 kx0 − xkA ,

n = 0, 1, . . . ,

где

1−ξ
λmin (A)
, ξ=
.
1+ξ
λmax (A)
Если вместо (9.13) взять неявный метод (9.26) и параметр τk+1 выбирать из
условия минимума kzk+1kA , то получим неявный метод наискорейшего спуска.
Для него
ρ0 =

2
kzk+1k2A = kzk k2A − 2τk+1(Azk , B −1Azk ) + τk+1
(AB −1Azk , B −1Azk ) ,

или
2
kzk+1k2A = kzk k2A − 2τk+1(rk , ωk ) + τk+1
(Aωk , ωk ) .

Следовательно, норма kzk+1k2A будет минимальной при
τk+1 =

(rk , ωk )
.
(Aωk , ωk )

Теорема 9.7 ([5]). Для неявного метода скорейшего спуска справедлива
оценка
kxn − xkA ≤ ρn0 kx0 − xkA , n = 0, 1, . . . ,
где

λmin (B −1A)
ξ=
.
λmax (B −1A)

1−ξ
ρ0 =
,
1+ξ
Метод сопряжённых градиентов

Этот метод исходит из задачи минимизации функции
1
J(x) = (Ax, x) − (b, x) ,
2
решение которой совпадает с решением системы
Ax = f ,

A = AT > 0 .

(9.34)

(9.35)

Полный вывод метода сопряжённых градиентов можно найти в [5]. Опуская
детали, приведём окончательный результат.
363

9 Лабораторный проект № 6

Метод сопряжённых градиентов для решения системы Ax = f состоит в
вычислениях по следующим формулам:

rk = b − Axk , k = 0, 1, . . . ,




k+1
k
k
1
0

p
= r + βk+1p , k = 1, 2, . . . , p = r ,


k+1
k
k+1
0
(9.36)
x
= x + αk+1p
, k = 0, 1, . . . , x = 0 ,



αk+1 = (rk , pk+1)/(pk+1, Apk+1) , k = 0, 1, . . . , 



k k
k k
βk+1 = −(Ap , r )/(Ap , p ) , k = 1, 2, . . . .
Теорема 9.8 ([5]).
ливо

Для метода сопряжённых градиентов (9.36) справед-

h
ik
p
p
kx − xkA ≤ 2 (1 − λmin /λmax )/(1 + λmin /λmax) kxkA ,
k

где λmin и λmax – минимальное и максимальное собственные значения матрицы
A.
Следуя [5], преобразуем соотношения (9.36). В этих соотношениях наиболее
трудоёмкими являются две операции: вычисление векторов Axk и Apk . Однако
операцию вычисления вектора Axk можно исключить. Поскольку этот вектор
нужен только для вычислении невязки rk , то можно заменить первую из формул (9.36) на
rk = rk−1 − αk Apk ,

k = 1, 2, . . . ,

r0 = b .

(9.37)

Преобразуем формулы для вычисления параметров αk+1 и βk+1. Подставляя
второе из соотношений (9.36) в четвёртое, найдём
αk+1 = (rk , rk )/(pk+1, αpk+1) ,

k = 0, 1, . . . .

(9.38)

Заменяя здесь k + 1 на k и подставляя полученное выражение для (pk , Apk ) в
последнее из соотношений (9.36), получим
βk+1

(Apk , rk )
= −αk k−1 k−1 .
(r , r )

Теперь подставим сюда вместо Apk его выражение из (9.37).
Теорема 9.9 ([5]).
После k шагов метода сопряжённых градиентов
невязки r0 , r1, ..., rk взаимно ортогональны.
Принимая это во внимание, найдём
βk+1
364

(rk , rk )
= k−1 k−1 ,
(r , r )

k = 1, 2, . . . .

(9.39)

9.11 Другие методы

С учётом (9.37)–(9.39) формулы метода сопряжённых градиентов (9.36) преобразуются к виду

rk = rk−1 − αk Apk , k = 1, 2, . . . , r0 = b , 



k+1
k
k
1
0

p
= r + βk+1 p
k = 1, 2, . . . , p = r ,


k+1
k
k+1
0
(9.40)
x
= x + αk+1p , k = 0, 1, . . . , x = 0 ,




αk+1 = krk k2/(pk+1, Apk+1) , k = 0, 1, . . . ,



k 2
k−1 2
βk+1 = kr k /kr k , k = 1, 2, . . . .
Легко проверить, что эти вычисления проводят в следующем порядке:
r0 = b ,
r1 , β2 ,

9.11

p1 = r0 , Ap1 , α1 , x1 ,
p2 , Ap2 , α2 , x2 , . . .

Другие методы

Область итерационных методов решения систем линейных алгебраических
уравнений обширна. Она включает гораздо большее количество методов, чем
то, что приведено выше.
В итерационных методах нашли применение полиномы Чебышёва, благодаря
которым можно решать задачу оптимального выбора итерационных параметров
как для явных ИМ, так и для неявных ИМ [5].
Стационарные методы, широко применявшиеся в 1950–1980 годах, сейчас
чаще применяются [23] как средство сглаживания в многосеточных алгоритмах
[21, 22, 31] или для предобусловливания в алгоритмах Крылова [26].
Идея сопряжённых градиентов [25] оказалась очень плодотворной, и наиболее широкое воплощение она нашла при опоре на метод подпространств
Крылова, который является одним из методов решения проблемы собственных значений и собственных векторов для очень больших разреженных матриц [30]. Переход к методу подпространств Крылова в этой проблеме вызван
тем, что преобразования подобия, лежащие в основе её решения для небольших матриц, выполнять для очень больших матриц практически невозможно.
В то же время достаточно легко выполнять однотипные операции умножения
матрицы на вектор: взять вектор x и затем, умножая слева на A, построить
последовательность Крылова x, Ax, A2x, A3x, . . . и, соответственно, получить
пространства Крылова

Kj (A, x) = span x, Ax, A2x, A3x, . . . , Aj−1x .
365

9 Лабораторный проект № 6

В настоящее время алгоритмы Крылова с предобусловливанием применяются в
большинстве итерационных методов решения больших разреженных линейных
систем [23]. Успешной альтернативой методам Крылова являются многосеточные методы, по которым за последние 30–40 лет появилось огромное число
публикаций [21, 22, 23, 31].
Вместе с этими мощными ветвями роста, в практике решения линейных
систем итерационными методами встречаются решения, которые могут быть
классифицированы как Inventive Math. Это решения, по которым пока не найдено строгих доказательств, но которые подтверждают свою работоспособность методом широкого вычислительного эксперимента. Примером такого
подхода является метод делинеаризации для линейных систем [27, 28, 29].

9.12

Задание на лабораторный проект № 6

Написать и отладить программу, реализующую ваш вариант задания в соответствии с табл. 9.1 (см. ниже стр. 369), включающий два итерационных метода
для численного решения систем линейных алгебраических уравнений Ax = f
с квадратной матрицей A и отыскания обратной матрицы A−1. Предусмотреть
сообщение о невозможности решения указанных задач из-за превышения допустимого числа итераций. Отделить основные части программы:
а) подпрограмму решения систем линейных алгебраических уравнений;
б) подпрограмму обращения матриц;
в) сервисные подпрограммы.
Уделить особое внимание эффективности программы (в смысле экономии
оперативной памяти и скорости решения указанных выше задач). Предусмотреть пошаговое выполнение алгоритма с выводом xk на каждой итерации (для
тестовой задачи небольшой размерности, см. ниже п. 4).
В качестве ε (см. критерий остановки в подразд. 9.2) для обоих итерационных методов использовать погрешность решения данной системы линейных
алгебраических уравнений (СЛАУ) методом исключения переменных из лабораторной работы № 1.
Выполнить следующие пункты задания:
1. Провести подсчёт фактического количества операций умножения и деления, выполняемых при решении системы линейных алгебраических уравнений
c выводом результата на экран. Сравнить с методом исключения переменных
из лабораторной работы № 1. Вывести таблицу и график.
2. Оценить скорость решения задач, т. е. определить время, затраченное на
366

9.12 Задание на лабораторный проект № 6

решение СЛАУ, и время, затраченное на обращение матриц. Для этого спроектировать и провести эксперимент, который охватывает матрицы порядка от
10 до 200 (через 10 порядков). Представить результаты в виде таблицы и графика зависимости времени выполнения от порядка матриц для трёх алгоритмов
(двух итерационных методов, соответствующих варианту, и методу исключения переменных из лабораторной работы № 1). Таблицу и графики вывести на
экран.
3. Оценить точность решения систем линейных алгебраических уравнений,
указанных в п. 2. Для этого сгенерировать случайные матрицы A, задать точное
решение x∗ и образовать правые части f = Ax∗. Провести анализ точности
вычисленного решения x от порядка матрицы для трёх алгоритмов (аналогично
п. 2). В качестве точного решения взять вектор x∗ = (1, 2, . . . , m)T , где m –
порядок матрицы. Для оценки точности решения использовать норму вектора
kxk = max | xi | .
i

Результаты по п. 3 представить в виде таблицы и графиков.
Замечание 9.2.
Для проведения вычислительного эксперимента по
пп. 2 и 3 применять симметрические положительно определённые матрицы A с
диагональным преобладанием. Для заполнения матрицы A использовать случайные числа из диапазона от −100 до 100. Сначала заполнить нижнюю треугольную часть матрицы A, т. е., элементы aij , где i > j. Верхнюю трегольную часть, где i < j, заполнить симметрично нижней части. Затем заполнить
диагональ. В качестве диагонального элемента aii , i = 1, 2, . . . , m, выбрать
случайное число из интервала


X
X

|aij | + 101 ,
|aij | + 1,
j6=i

j6=i

чтобы обеспечить выполнение условия
X
|aij | + 1,
aii ≥
j6=i

гарантирующего положительную определённость матрицы A.
4. До проведения вычислительного эксперимента по пп. 2 и 3 выполнить
отладку программы. Для отладки программы, а также для сравнительного тестирования двух заданных итерационных методов использовать следующую тестовую задачу [20]:
367

9 Лабораторный проект № 6



4
0
A=
1
1

0
4
0
1

1
0
4
0


1
1
,
0
4


1
2

f =
 3 ,
4





−41/209 = −0.196172
 53/209 = 0.253589 


x =
 167/209 = 0.799043  .
206/209 = 0.985646

5. Для тех вариантов задания, в которых присутствует метод Юнга (верхней релаксации), провести специальный вычислительный эксперимент решения тестовой задачи по п. 4. Цель этого эксперимента – исследование скорости
сходимости метода в зависимости от коэффициента релаксации ω в формуле
(9.14).
Изменение параметра ω организовать с шагом ∆ω = 0.05 равномерно
в интервале теоретической сходимости метода: 0 < ω < 2, т. е., по алгоритму:
ω0 := ωstart
Для i = 0, 1, . . . , 20 выполнять
ωi+1 := ωi + ∆ω
Стартовое значение задавать с клавиатуры, например, ωstart = 0.50.
6. Повторить п. 3 задания для плохо обусловленных матриц (см. подразд. 3.6
лабораторной работы № 1), имеющих порядок от 4 до 40.
7. Вычислить матрицу A−1 двумя способами:
1) через решение системы AX = I на основе метода исключения Гаусса из
лабораторной работы № 1 (в соответствии со своим вариантом);
2) через решение системы AX = I на основе любого из двух заданных
итерационных методов.
Сравнить затраты машинного времени и точность обращения способами 1)
и 2). Эксперименты провести для матриц порядков от 10 до 100 через 10, сгенерированных согласно замечанию 9.2. Для оценки точности в обоих способах
воспользоваться формулой из лабораторной работы (проекта) № 1.

9.13

Варианты задания на лабораторный проект № 6

По теме «Итерационные методы» студентам предлагается 15 вариантов лабораторной работы № 7, сведённых в табл. 9.1.
Если нет других указаний преподавателя, выбирайте ваш вариант из табл. 9.1
по вашему номеру в журнале студенческой группы.
368

9.14 Тестовые задачи для проекта № 6

Таблица 9.1. Варианты задания на лабораторный проект № 7
Варианты
итерационных
методов

a

b

c

d

e

f

g

a

-

13

14

1

2

3

4

b

-

-

15

5

6

7

8

c

-

-

-

9

10

11

12

a
b
c
d
e
f
g









метод
метод
метод
метод
метод
метод
метод

9.14

Якоби;
Зейделя;
Юнга;
минимальных невязок;
минимальных поправок;
скорейшего спуска;
сопряженных градиентов.

Тестовые задачи для проекта № 6

Используйте приводимые ниже задачи в двух режимах:
• для контроля собственного понимания алгоритма,
• для контроля правильности вашего программирования.
Задача 1
Для системы алгебраических уравнений вида
Ax = b,
где матрица



10
A =  −1
1


1 −1
5 0.5 
1 −10

и вектор b = (−18, 1, 18)T , выполнить следующее:

а. Сформулировать метод Якоби в координатном и каноническом виде.
б. Определить, является ли он сходящимся с нулевым начальным приближением, т.е. x0 = (0, 0, 0)T ? Ответ обосновать.
369

9 Лабораторный проект № 6

в. Вычислить две итерации по методу Якоби и найти апостериорную оценку
ошибки на каждой из них в норме k · k∞ = max {|xi|}, x ∈ R3 .
i=1,2,3

Задача 2
Для системы алгебраических уравнений вида
Ax = b,
где матрица



5 −1

A=
−1 4
0 1


0
1
2

и вектор b = (4, 2, −1)T , выполнить следующее:

а. Сформулировать метод Зейделя в координатном и каноническом виде.
б. Определить, является ли он сходящимся с нулевым начальным приближением, т. е. x0 = (0, 0, 0)T ? Ответ обосновать.
в. Вычислить две итерации по методу Зейделя и найти апостериорную оценку
ошибки на каждой из них в норме k · k∞ = max {|xi|}, x ∈ R3 .
i=1,2,3

Задача 3
Для системы алгебраических уравнений вида
Ax = b,
где матрица




−10 3 −1
A=
1 −5 1 
1 1 10

и вектор b = (5, −7, −19)T , выполнить следующее:

а. Сформулировать метод Якоби в координатном и каноническом виде.
б. Определить, является ли он сходящимся с нулевым начальным приближением, т.е. x0 = (0, 0, 0)T ? Ответ обосновать.
370

9.14 Тестовые задачи для проекта № 6

в. Вычислить две итерации по методу Якоби и найти апостериорную оценку
ошибки на каждой из них в норме k · k∞ = max {|xi|}, x ∈ R3 .
i=1,2,3

Задача 4
Для системы алгебраических уравнений вида
Ax = b,
где матрица



4

A=
0
−1


0 −1
5 2
2 10

и вектор b = (−3, −2, −9)T , выполнить следующее:
а. Сформулировать метод Зейделя в координатном и каноническом виде.
б. Определить, является ли он сходящимся с нулевым начальным приближением, т.е. x0 = (0, 0, 0)T ? Ответ обосновать.
в. Вычислить две итерации по методу Зейделя и найти апостериорную оценку
ошибки на каждой из них в норме k · k∞ = max {|xi|}, x ∈ R3 .
i=1,2,3

Задача 5
Для системы алгебраических уравнений вида
Ax = b,
где матрица




10 2 0
A =  2 5 −1 
0 −1 2

и вектор b = (8, −4, 3)T , выполнить следующее:

а. Сформулировать метод Зейделя в координатном и каноническом виде.
б. Определить, является ли он сходящимся с нулевым начальным приближением, т.е. x0 = (0, 0, 0)T ? Ответ обосновать.
371

9 Лабораторный проект № 6

в. Вычислить две итерации по методу Зейделя и найти апостериорную оценку
ошибки на каждой из них в норме k · k∞ = max {|xi|}, x ∈ R3 .
i=1,2,3

Задача 6
Для системы алгебраических уравнений вида
Ax = b,
где матрица



10

A=
−1
1


1 −1
5 0.5 
110

и вектор b = (−9, 6, 0)T , выполнить следующее:

а. Сформулировать метод минимальных невязок в каноническом виде.
б. Определить оптимальный параметр τ1 для нулевого начального приближения, т.е. x0 = (0, 0, 0)T ?
в. Вычислить одну итерацию и найти апостериорную оценку ошибки в норме
k · k∞ = max {|xi |}, x ∈ R3 .
i=1,2,3

Задача 7
Для системы алгебраических уравнений вида
Ax = b,
где матрица



10

A=
−1
1


1 −1
5 0.5 
1 10

и вектор b = (−9, 6, 0)T , выполнить следующее:

а. Сформулировать явный метод скорейшего спуска в каноническом виде.
б. Определить оптимальный параметр τ1 для нулевого начального приближения, т.е. x0 = (0, 0, 0)T ?
372

9.14 Тестовые задачи для проекта № 6

в. Вычислить одну итерацию и найти апостериорную оценку ошибки в норме
k · k∞ = max {|xi |}, x ∈ R3 .
i=1,2,3

Задача 8
Для системы алгебраических уравнений вида
Ax = b,
где матрица



10

A=
1
2


3 −1
5 1
1 10

и вектор b = (11, 0, −8)T , выполнить следующее:

а. Сформулировать метод минимальных невязок в каноническом виде.
б. Определить оптимальный параметр τ1 для нулевого начального приближения, т.е. x0 = (0, 0, 0)T ?
в. Вычислить одну итерацию и найти апостериорную оценку ошибки в норме
k · k∞ = max {|xi |}, x ∈ R3 .
i=1,2,3

Задача 9
Для системы алгебраических уравнений вида
Ax = b,
где матрица



10

A=
1
2


3 −1
5 1
1 10

и вектор b = (11, 0, −8)T , выполнить следующее:

а. Сформулировать явный метод скорейшего спуска в каноническом виде.
б. Определить оптимальный параметр τ1 для нулевого начального приближения, т.е. x0 = (0, 0, 0)T ?
373

9 Лабораторный проект № 6

в. Вычислить одну итерацию и найти апостериорную оценку ошибки в норме
k · k∞ = max {|xi |}, x ∈ R3 .
i=1,2,3

Задача 10
Для системы алгебраических уравнений вида
Ax = b,
где матрица



4

A=
0
−1


0 −1
5 2
2 10

и вектор b = (−3, −2, −9)T , выполнить следующее:
а. На основе метода Зейделя сформулировать метод минимальных поправок в
каноническом виде.
б. Определить оптимальный параметр τ1 для нулевого начального приближения, т.е. x0 = (0, 0, 0)T ?
в. Вычислить одну итерацию и найти апостериорную оценку ошибки в норме
k · k∞ = max {|xi |}, x ∈ R3 .
i=1,2,3

Задача 11
Для системы алгебраических уравнений вида
Ax = b,
где матрица



4

A=
0
−1


0 −1
5 2
2 10

и вектор b = (−3, −2, −9)T , выполнить следующее:
а. На основе метода Зейделя сформулировать неявный метод скорейшего
спуска в каноническом виде.
б. Определить оптимальный параметр τ1 для нулевого начального приближения, т.е. x0 = (0, 0, 0)T ?
374

9.14 Тестовые задачи для проекта № 6

в. Вычислить одну итерацию и найти апостериорную оценку ошибки в норме
k · k∞ = max {|xi |}, x ∈ R3 .
i=1,2,3

Задача 12
Для системы алгебраических уравнений вида
Ax = b,
где матрица




10 2 0
A =  2 5 −1 
0 −1 2

и вектор b = (8, −4, 3)T , выполнить следующее:

а. На основе метода Зейделя сформулировать метод минимальных поправок в
каноническом виде.
б. Определить оптимальный параметр τ1 для нулевого начального приближения, т.е. x0 = (0, 0, 0)T ?
в. Вычислить одну итерацию и найти апостериорную оценку ошибки в норме
k · k∞ = max {|xi |}, x ∈ R3 .
i=1,2,3

Задача 13
Для системы алгебраических уравнений вида
Ax = b,
где матрица




10 2 0
A =  2 5 −1 
0 −1 2

и вектор b = (8, −4, 3)T , выполнить следующее:

а. На основе метода Зейделя сформулировать неявный метод скорейшего
спуска в каноническом виде.
б. Определить оптимальный параметр τ1 для нулевого начального приближения, т.е. x0 = (0, 0, 0)T ?
375

9 Лабораторный проект № 6

в. Вычислить одну итерацию и найти апостериорную оценку ошибки в норме
k · k∞ = max {|xi |}, x ∈ R3 .
i=1,2,3

Задача 14
Для системы алгебраических уравнений вида
Ax = b,
где матрица



5 −1
A =  −1 4
0 1


0
1
2

и вектор b = (4, 2, −1)T , выполнить следующее:

а. На основе метода Зейделя сформулировать неявный метод скорейшего
спуска в каноническом виде.
б. Определить оптимальный параметр τ1 для нулевого начального приближения, т. е. x0 = (0, 0, 0)T ?
в. Вычислить одну итерацию и найти апостериорную оценку ошибки в норме
k · k∞ = max {|xi |}, x ∈ R3 .
i=1,2,3

9.15

Заключение по разделу 9

В данном разделе рассмотрены алгоритмы решения систем линейных алгебраических уравнений иного – по сравнению с предшествующими разделами –
класса, а именно, итерационные, т. е., приближённые методы решения СЛАУ.
В проекте № 6 предлагается выполнить программирование семи различных
итерационных методов и на этой основе решить две задачи вычислительной линейной алгебры: (1) найти решение СЛАУ и (2) найти обратную матрицу. При
этом матрицу системы предлагается формировать двумя различными способами: вводить «вручную» с клавиатуры компьютера или генерировать случайным образом из числа положительно определённых матриц.
Этот проект кардинально отличается по применяемым в нём методам от всех
предшествующих проектов этого учебного пособия. Он может рассматриваться
как (дополнительный) проект повышенной сложности для освоения студентами
дисциплин «Вычислительная математика» или «Численные методы».
376

IV
СПЕЦИАЛЬНЫЙ КУРС

10
Проект № 7 «Разреженные формы
LU -разложения»
10.1

Упакованные формы хранения матриц

Для решения систем линейных алгебраических уравнений с разреженными
матрицами используются те же самые методы гауссова исключения, что и для
линейных систем с заполненными матрицами. Отличие состоит только в выборе главного элемента и в способе хранения матрицы коэффициентов системы
уравнений [11].
Так как разреженные матрицы имеют небольшое число ненулевых элементов, в целях экономии оперативной памяти ЭВМ такие матрицы хранят в упакованном виде. Рассмотрим четыре наиболее употребимых способа упаковки,
используемых для хранения произвольных разреженных матриц.
Пример 10.1. В качестве примера возьмём квадратную матрицу A порядка 6 с тринадцатью ненулевыми элементами: a11 = 1, a13 = 3, a14 = −2,
a21 = 1, a25 = 5, a33 = 7, a34 = 2, a42 = −3, a46 = −1, a51 = 1, a54 = 3,
a65 = 2, a66 = 2.
В излагаемых ниже схемах хранения разреженной матрицы A упаковка
осуществляется по строкам.
Схема 1. Каждому ненулевому элементу матрицы A ставится в соответствие запись, состоящая из двух полей. Первое поле записи содержит номер
столбца, а второе – значение элемента. Нуль во втором поле означает начало
новой строки. В этом случае первое поле содержит номер новой строки. Нули в
обоих полях записи указывают на конец массива, хранящего данную разреженную матрицу A. В соответствии с этой схемой матрица A примера 10.1 будет
храниться в виде следующего массива:

10 Лабораторный проект № 7

1 0 1 1.0 3 3.0 4 −2.0 2 0 1 1.0 5 5.0 ⇒
3 0 3 7.0 4 2.0 4 0 2 −3.0 6 −1.0 5 0 ⇒
1 1.0 4 3.0 6 0 5 2.0 6 2.0 0 0
Схема 2. Информация о матрице хранится в трёх массивах. В массиве
a хранятся ненулевые элементы матрицы A. В массиве b хранятся индексы
столбцов, а в массиве c – указатели индексов строк, т. е., на k-м месте в массиве
c хранится местоположение первого ненулевого элемента k-й строки в массиве
a. В соответствии с этой схемой матрица A примера 10.1 будет храниться в
виде трёх массивов
a = (1.0, 3.0, −2.0, 1.0, 5.0, 7.0, 2.0, −3.0, −1.0, 1.0, 3.0, 2.0, 2.0),
b = (1, 3, 4, 1, 5, 3, 4, 2, 6, 1, 4, 5, 6),
c = (1, 4, 6, 8, 10, 12).
Схема 3. Каждому ненулевому элементу данной матрицы однозначно ставится в соответствие целое число вида
λ(i, j) = (i − 1)n + j ,

aij 6= 0 .

(10.1)

Хранение ненулевых элементов разреженной матрицы обеспечивается двумя
массивами. В массиве a хранятся ненулевые элементы матрицы, в массиве
b хранятся соответствующие им числа λ(i, j). В соответствии с этой схемой
матрица A примера 10.1 будет храниться в виде двух массивов:
a = (1.0, 3.0, −2.0, 1.0, 5.0, 7.0, 2.0, −3.0, −1.0, 1.0, 3.0, 2.0, 2.0),
b = (1, 3, 4, 7, 11, 15, 16, 20, 24, 25, 28, 35, 36).
Исходная матрица по этой схеме хранения может быть восстановлена следующим образом. Сначала определяем i как такое наименьшее целое число, что
i ≥ λ(i, j)/n .
Затем, зная i, с учётом (10.1) находим j
j = λ(i, j) − (i − 1)n .

(10.2)

Схема 4. Для хранения каждого ненулевого элемента матрицы используется запись, состоящая из трёх полей. В первом поле хранится номер столбца,
в котором стоит этот ненулевой элемент. Во втором поле хранится значение
элемента, а в третьем – указатель на следующий ненулевой элемент строки
380

10.2 Выбор ведущего элемента

или nil, если это последний ненулевой элемент в строке. Таким образом, разреженная матрица хранится в виде массива указателей на списки, а каждый
список содержит все ненулевые элементы одной строки. Упакованную форму
матрицы A примера 10.1 в этом случае можно схематично изобразить следующим образом.
1
2
3
4
5
6

10.2








1 1.0
1 1.0
3 7.0
2 −3.0
1 1.0
5 2.0








3 3.0
5 5.0
4 2.0
6 −1.0
4 3.0
6 2.0

→ 4 −2.0
→ nil
→ nil
→ nil
→ nil
→ nil

→ nil

Выбор ведущего элемента

Способы 1–4 упаковки матриц позволяют компактно хранить матрицу A коэффициентов системы Ax = f . Однако при использовании метода Гаусса (или
ему подобных) в результате модификации элементов матрицы A может значительно возрасти число ненулевых элементов. С одной стороны, это требует
дополнительной памяти для хранения новых ненулевых элементов, а с другой
приводит к возрастанию числа арифметических операций, что влечёт накопление ошибок округления. В связи с этим обстоятельством были предложены
стратегии выбора главного элемента, позволяющие минимизировать число новых ненулевых элементов на каждом шаге метода Гаусса.
Назовём локальным заполнением на (k +1)-м шаге метода Гаусса число элементов матрицы A, которые были нулевыми после k-го шага и стали ненулевыми после (k + 1)-го шага метода Гаусса. Таким образом, задача заключается
в выборе в качестве главного элемента такого элемента матрицы A(k) , который минимизирует локальное заполнение матрицы A на (k + 1)-м шаге (как
и прежде, A(k) – активная подматрица матрицы A). При этом, чем больше
множество элементов, среди которых выбирается главный, тем меньше локальное заполнение. Но, с другой стороны, в качестве главного можно брать только
ненулевой элемент. Поэтому вводится понятие допустимого элемента.
Допустимым элементом на (k + 1)-м шаге метода Гаусса называется такой
элемент активной подматрицы A(k) , который удовлетворяет неравенству
(k)

aij

> ε,
381

10 Лабораторный проект № 7

где ε – некоторое наперёд заданное положительное число. В лабораторном проекте № 4, описание которого дано ниже, надо взять ε = 10−3, если используется
тип real, или ε = 10−5, если используется тип extended.
Итак, среди элементов активной подматрицы A(k) в соответствии с критерием (10.2) выбирается множество допустимых элементов, а затем среди них
отыскивается элемент, минимизирующий локальное заполнение на текущем
шаге. Для этого используются следующие две стратегии выбора оптимального
ведущего элемента.
Стратегия I. Локальное заполнение на (k + 1)-м шаге метода Гаусса будет
(k)
минимальным, если в качестве главного (ведущего) выбрать элемент ast на
позиции s = α + k, t = β + k, где α и β определяются из формулы
(k+1)

gαβ

= min{eTi Gk+1 ej } для всех
i,j

(k)

ai+k,j+k > ε.

Здесь Gk+1 = Bk B Tk Bk , где Bk – матрица, полученная из A(k) путем замены
ненулевых элементов единицами, а B k = M − Bk (M – матрица, состоящая
из единиц). Согласно стратегии I, в качестве главного берётся тот из числа
допустимых элементов активной подматрицы A(k) , которому в матрице Gk+1
соответствует наименьший элемент.
Стратегия II. Локальное заполнение на k + 1-м шаге метода Гаусса бу(k)
дет небольшим, если в качестве главного (ведущего) выбрать элемент ast , на
позиции s = α + k, t = β + k, где α и β определяются из формулы
(k+1)

gαβ

= min{eTi Ĝk+1 ej } для всех
i,j

(k)

ai+k,j+k > ε.

Здесь Ĝk+1 = (Bk − In−k )M(Bk − In−k ), где матрицы M и Bk имеют тот
же самый смысл, что и в стратегии I, а In−k обозначает единичную матрицу
размера n − k. Хотя стратегия II не обеспечивает минимальное заполнение
на текущем шаге, она очень просто реализуется на практике, и её применение
приводит к сравнительно небольшому числу новых ненулевых элементов.
Использование упакованной формы хранения матрицы A и более сложной
процедуры выбора главного элемента требует значительного увеличения затрат машинного времени, поэтому перенос процедур и функций из лабораторного проекта № 1, осуществляющих решение системы линейных алгебраических
уравнений, не даст оптимальный по времени результат. Это связано с тем, что
поиск (i, j)-гo элемента матрицы A в упакованной форме требует существенных затрат машинного времени. Следовательно, при написании оптимальной по
382

10.2 Выбор ведущего элемента

времени счёта программы таких действий надо избегать. Это можно сделать,
если применить метод Гаусса непосредственно к упакованной форме хранения
матрицы A, т. е., только к её ненулевым элементам.
Поскольку стандартный метод Гаусса (см. подразд. 7.1) оперирует со строками матрицы A, разреженные матрицы удобно хранить по строкам. Это позволит эффективно организовать такие операции, как нормировка строки, умножение строки на число, вычитание строки, потому что в этом случае все ненулевые элементы каждой строки матрицы A в упакованной форме хранения
образуют непрерывную последовательность. Следовательно, операции нормировки, умножения и вычитания строки можно проводить только для ненулевых
элементов.
Такой подход подразумевает, что ненулевые элементы матрицы A модифицируются в том порядке, в котором они хранятся в упакованной форме, что
исключает затраты на поиск нужного элемента. Модификация происходит следующим образом. Берётся очередной ненулевой элемент матрицы A. Определяется его местоположение в матрице, т. е., индексы i и j. Затем с помощью
дополнительных массивов обратных перестановок определяется местоположение этого элемента в матрице с переставленными столбцами и строками. Если
в результате этот элемент лежит в активной подматрице, то он изменяется
по известным формулам метода Гаусса. Здесь надо предусмотреть процедуру
вставки элемента на случай появления нового ненулевого элемента и процедуру удаления элемента из упакованной формы, если ненулевой элемент стал
нулевым. затем обрабатывается следующий ненулевой элемент матрицы A.
Оптимизация по времени процедуры решения системы линейных алгебраических уравнений позволяет значительно повысить эффективность программы.
Однако этого недостаточно. Оптимальной по быстродействию будет лишь та
программа, где дополнительно оптимизирована процедура выбора главного элемента. Во-первых, надо подумать над эффективным вычислением элементов
bk ). Во-вторых, надо организовать вычисление этой матматрицы Gk (или G
рицы так, чтобы исключить поиск элементов в упакованной форме. Только
учёт всех этих особенностей решения систем линейных алгебраических уравнений с разреженной матрицей коэффициентов позволит написать эффективную
по затратам машинного времени программу.
383

10 Лабораторный проект № 7

10.3

Задание на лабораторный проект № 7

Написать и отладить программу, реализующую заданный вариант метода исключения с заданной схемой хранения разреженных матриц и заданной стратегией выбора главного элемента, для численного решения систем вида Ax = f .
Отделить основные части программы:
а) подпрограмму упаковки матрицы A;
б) подпрограмму метода исключения;
в) подпрограмму выбора главного элемента;
г) сервисные подпрограммы.
Уделить особое внимание эффективности программы (в смысле скорости
счёта). Программа должна решать систему линейных алгебраических уравнений порядка n = 200 не более чем за 3 минуты (для персонального компьютера
486 AT с сопроцессором). Предусмотреть пошаговое выполнение алгоритма исключения с выводом результата на экран.
Выполнить следующие пункты задания:
1. Для заданной матрицы A выдать на экран упакованную форму в соответствии со своим вариантом, построить таблицу зависимости оценочного и
реального локального заполнения от номера шага исключения (для этого предусмотреть ввод матрицы с экрана).
2. Оценить точность решения систем линейных алгебраических уравнений,
имеющих порядок n от 100 до 200 (через 5). Для этого сгенерировать случайные матрицы A (не более 10 ненулевых элементов в строке), выбрать x∗ –
точное решение и образовать правые части f = Ax∗. Провести анализ точности
решения как функцию от n. Результаты вывести в таблицу и на график.
Для случайного заполнения матрицы A использовать алгоритм:
(а) Ненулевыми целыми числами, выбранными случайным образом из интервала [−100; 100], заполнить обратную диагональ матрицы A.
(б) В каждой строке случайным образом выбрать количество ненулевых элементов (от 1 до 10 с учётом элементов по пункту (а)), их местоположение
(номер столбца от 1 до n) и значение (ненулевые целые числа, лежащие в
интервале от −100 до 100).
В качестве точного решения взять вектор x∗ = (1, 2, . . . , n). Если при решении системы Ax = f выяснится, что матрица A вырождена (плохо обусловлена), сгенерировать новую матрицу того же порядка и решить систему
линейных алгебраических уравнений с новой матрицей A и новой правой частью. Для оценки точности решения использовать норму вектора по формуле
(8.5), c 345.
384

10.3 Задание на лабораторный проект № 7

3. Определить скорость решения систем из пункта 2. Результаты вывести в
таблицу и на график.
4. Системы из пункта 2 решить методом исключения переменных двумя способами: способ 1 – из лабораторного проекта № 1, способ 2 – из лабораторного
проекта № 4 (в соответствии со своим вариантом по лабораторному проекту
№ 1 или № 4). В этом случае разреженная матрица должна размещаться в
памяти ЭВМ полностью (в распакованном виде). Сравнить точность решения
и затраты машинного времени, получаемые, с одной стороны, в лабораторном
проекте № 1 (или № 4) и, с другой стороны, в лабораторном проекте № 6.
Замечание 10.1.
По ходу проведения численных экспериментов на
экран дисплея должны выводиться таблицы следующего вида.
Решение систем линейных алгебраических уравнений
Порядок
матрицы

Время
Заполненная
матрица

Разреженная
матрица

Точность
Заполненная
матрица

Разреженная
матрица

Замечание 10.2.
Некоторые результаты экспериментов необходимо
сохранять в текстовый файл, чтобы затем вывести на экран в виде графиков.
Графики решения систем линейных алгебраических уравнений:


зависимость точности решения от порядка матриц для способа 1 решения
(см. п. 4);



зависимость точности решения от порядка матриц для способа 2 решения
(см. п. 4);



зависимость времени решения от порядка матриц для способа 1 решения
(см. п. 4);



зависимость времени решения от порядка матриц для способа 2 решения
(см. п. 4).
385

10 Лабораторный проект № 7

Таблица 10.1. Варианты задания на лабораторный проект № 6
Вид
разложения

a
b
c
d

10.4

Стратегия I

Стратегия II

a

b

c

d

a

b

c

d

A = LU

1

2

3

4

5

6

7

8

A = LU

9

10 11 12 13 14

15 16

A=UL

17 18 19 20 21 22

23 24

A = UL

25 26 27 28 29 30

31 32

A = LU в виде L, U −1

33 34 35 36 37 38

39 40

A = UL в виде L −1 , U

41 42 43 44 45 46

47 48






схема
схема
схема
схема

1
2
3
4

хранения
хранения
хранения
хранения

разреженной
разреженной
разреженной
разреженной

матрицы
матрицы
матрицы
матрицы

A;
A;
A;
A.

Варианты задания на лабораторный проект № 7

Студент определяет номер свого варианта по табл. 10.1 (см. выше) соответственно своему порядковому номеру в списке учебной группы. В таблице
приведены 48 номеров вариантов задания на лабораторный проект № 6. Все
варианты различаются по следующим признакам:


стратегии I или II выбора главного элемента;



четыре схемы упаковки и хранения разреженной матрицы A;



шесть вариантов метода исключения, определяемых видом разложения
матрицы.

10.5

Заключение по разделу 10

В данном разделе рассмотрены стандартные алгоритмы LU -разложения
матрицы, численно эквивалентные методу Гаусса последовательного исключения неизвестных в системе линейных алгебраических уравнений, но
применительно к особому виду матриц – разреженным матрицам. В таких
матрицах много нулевых элементов, и их хранить в памяти не надо. Однако в
процессе вычислений, например, по методу LU -разложения, нулевые элементы
386

10.5 Заключение по разделу 10

то исчезают, то появляются в других местах матрицы. Это создаёт дополнительные сложности в схеме доступа к элементам в процессе вычислений.
В проекте № 7 предлагается выполнить программирование LU -разложения
для разреженных матриц и на этой основе решить основную задачу вычислительной линейной алгебры – найти решение СЛАУ. При этом требуется
сравнить по быстродействию традиционный метод лабораторного проекта № 1
и метод для разреженных матриц.
Этот проект является специальным для освоения студентами дисциплин
«Вычислительная математика» или «Численные методы».

387

11
Проект № 8 «Одновременные
наименьшие квадраты»
11.1

Линейная задача наименьших квадратов

Во многих приложениях, связанных с обработкой экспериментальных данных, необходимо отыскивать такой вектор x ∈ Rn , линейные комбинации компонент которого, Ax, где A = A(m, n) – матрица размера (m × n), как можно
более близки или, ещё лучше, равны данным значениям, образующим вектор
z ∈ Rm , т. е. Ax ≈ z. Если мерой близости двух векторов считать квадрат
евклидовой нормы разностного вектора, в данном случае, вектора v , z − Ax,
то указанная задача есть линейная задача о наименьших квадратах.
Возможность сделать равным нулю вектор невязок v = z − Ax существует
тогда и только тогда, когда z ∈ R(A), где R(A) – пространство столбцов матрицы A. В этом случае имеем совместную систему уравнений Ax = z. Однако
z – вектор наблюдений, то есть экспериментальных данных и A – матрица,
которую задают до того, как получат z и которую в различных приложениях
называют либо матрицей регрессоров, либо матрицей наблюдений, либо матрицей плана эксперимента. Совсем не обязательно, что условие z ∈ R(A) будет
выполнено, например, из-за случайных погрешностей v во время регистрации
экспериментальных данных. Тогда
z = Ax + v,

(11.1)

и решение по методу наименьших квадратов (для краткости, МНК-решение)
есть вектор x̄, доставляющий минимум функционалу качества (см. рис. 11.1):
T

J(x) = (z − Ax) (z − Ax) =

m
X
j=1

v(j)2 = v T v.

(11.2)

11.1 Линейная задача наименьших квадратов
вход A

выход z

Объект

Модель
x

+

Ax



v = z − Ax

min kvk2
x

Рис. 11.1. Линейная задача наименьших квадратов

Требуя минимум этого критерия, для искомого x̄ получаем так называемые
нормальные уравнения:
AT Ax̄ = AT z.
(11.3)
Их решение всегда существует (обе части равенства (11.3) принадлежат одному и тому же пространству R(AT ) столбцов матрицы AT ), но может быть
не единственным (если rank A < n). В последнем случае из всех x̄ выбирают
то единственное, x̄0, которое имеет минимальную норму kx̄0k. Этот вектор называют нормальным псевдорешением. Известно (см. [6]), что
x̄0 = A+z,

(11.4)

где A+ – псевдообратная матрица к A. Как уже отмечалось, в качестве определения A+ применяют различные формулировки. Здесь для этого используем
геометрический подход: A+ есть такая матрица в выражении (11.4), что для
любого z ∈ Rm вектор x̄0 ∈ Rn удовлетворяет двум условиям:
Ax̄0 = p,

p ∈ R(A),

z − p ⊥ R(A).

(11.5)

x̄0 ∈ R(AT ).

(11.6)

x̄0 = (AT A)−1AT z.

(11.8)

Условие (11.5) требует, чтобы x̄0 отвечал совместной системе Ax̄0 = p, где
p – проекция вектора z на R(A), а условие (11.6) требует, чтобы этот x̄0 был
взят из пространства R(AT ) строк матрицы A. Условие (11.5), таким образом,
выбирает x̄0 = x̄, чтобы минимизировать функционал (11.2), а условие (11.6)
среди всех таких x̄ выбирает единственный x̄0 с минимальной нормой.
Часто матрицу A выбирают так, чтобы она имела полный столбцовый ранг,
rank A = n. Тогда m ≥ n, x̄ единственно и равно x̄0, A+ = (AT A)−1AT и
389

11 Лабораторный проект № 8

Однако иногда такое условие не выполняется, и тогда x̄0 = A+z, где A+ –
псевдообратная матрица.

11.2

Метод нормальных уравнений

Нормальные уравнения (11.3) показаны выше (см. стр. 389). Довольно часто их используют для отыскания МНК-решения x̄ [19]. Этот подход противоположен последовательным методам, берущим начало от идеи расщепления
исходной переопределённой системы на априорную и текущую части (см. подразд. 12.3). Поэтому иногда его называют «одновременным решением» всех
нормальных уравнений, характеризующих всю исходную переопределённую систему Ax ≈ z (см. стр. 388 и выражение (11.1)).
Метод нормальных уравнений. Алгоритм использует полный вектор
наблюдений z ∈ Rm и всю матрицу плана эксперимента A ∈ Rm×n, имеющую
rank(A) = n. По матрице A и вектору z алгоритм позволяет найти решение x̄
задачи наименьших квадратов, доставляющее min kz − Axk2.
Алгоритм:
1.
2.
3.
4.

Вычисляют нижний треугольник матрицы Λ = AT A.
Вычисляют d = AT z.
Вычисляют разложение Холесского Λ = SS T .
Решают сначала систему Sy = d и затем систему S T x̄ = y.

Здесь в качестве разложения Холесского может быть взято либо нижнее треугольное разложение (S = L), либо верхнее треугольное разложение (при
S = U ) – см. подразд. 4.2, стр. 136. Оба эти варианта требуют многократного применения операции извлечения квадратного корня. Если в п. 3 алгоритма вычислять разложение Холесского без операции квадратного корня: либо
Λ = S̄DS̄ T c S̄ = L̄, либо S̄ = Ū , то п. 4 заменится на последовательное решение трёх систем: S̄w = d ⇒ Dy = w ⇒ S̄ T x̄ = y.

11.3

Формирование матрицы A

Используйте следующие четыре варианта формирования матрицы A для
оценки скорости и точности двух методов решения переопределённых систем
линейных алгебраических уравнений, как указано в пп. В и Г задания (см.
задание ниже в подразд. 11.4).
390

11.4 Задание на лабораторный проект № 8

Для n = 2 до 12 с шагом 5 выполнять
Для m = n + 1 до 26 с шагом 3 выполнять
Для i = 1 до m выполнять
Для j = 1 до n выполнять


(i − 1)j
Вариант 1: aij = sin
,
m
1
Вариант 2: aij =

4 ,
(i − 1)j
1 + 66
m
Вариант 3: aij = 1/(i + j) ,

Вариант 4: aij = 100(RAN − 1/2) ,

где RAN – равномерно распределённая в интервале [0, 1] случайная величина,
получаемая независимо для каждого элемента aij матрицы A.

11.4

Задание на лабораторный проект № 8

А. Спроектировать и отладить подпрограмму решения несовместной системы Ax = z, A = A(m, n), m > n, rank(A) = n, в смысле наименьших
квадратов при помощи заданного метода ортогонального приведения. Обосновать проект и дать набор инструкций для пользователей подпрограммы. Сделать подсчёт операций (отдельно сложения, умножения, деления и извлечения
квадратного корня) в зависимости от m и n, где m – число строк матрицы
A, а n — число столбцов. Рекомендуется в качестве основы вашего проекта
использовать ту программу, которая была вами написана и отлажена в рамках лабораторного проекта № 3 для решения совместной системы уравнений
Ax = f с квадратной матрицей A методом ортогонального приведения. Для
этого в указанной программе достаточно осуществить небольшие изменения.
Б. Повторить п. А задания на основе метода нормальных уравнений AT Ax̄ =
= AT z, которым удовлетворяет искомое решение x̄ в смысле наименьших
квадратов, называемое нормальным псевдорешением несовместной системы
Ax ≈ z. Для этого применить вашу программу решения системы уравнений
с симметричной положительно определенной матрицей методом квадратного
корня (разложение Холесского) из лабораторной работы № 2.
В. Спроектировать и провести вычислительный эксперимент для сравнения
скорости выполнения двух программ по пп. А. и Б. Использовать четыре различных варианта генерации n векторов длины m для формирования матрицы A
391

11 Лабораторный проект № 8

(см. подразд. 11.3) при 2 ≤ n ≤ 12, n +1 ≤ m ≤ 26. Результаты представить
в виде таблиц и графиков, которые иллюстрируют поведение каждого метода
на каждом варианте генерации матрицы A. Дать обобщённую (по вариантам
матрицы) картину зависимости времени выполнения от значений параметров
m и n матрицы. Проанализировать соотношение между фактическим временем выполнения и числом операций, рассчитанным по пп. А и Б. Правые части
уравнений формировать, как указано в следующем пункте задания.
Г. Подобно п. В, сравнить точность нахождения нормального псевдорешения переопределённой системы линейных уравнений для методов из пп. А и
Б. Для этого также четырьмя способами сгенерировать матрицу A (см. подразд. 11.3), выбрать (принудительно задать) точное нормальное псевдорешение
x∗ и образовать вектор z ∗ = Ax∗. К элементам этого вектора добавить случайные числа vi , чтобы образовать правые части zi = zi∗ + avi , i = 1, 2, . . . , m.
Написать подпрограмму генерации псевдослучайных чисел vi так, чтобы каждое vi , имело стандартное нормальное распределение (с нулевым средним значением и единичной дисперсией). При этом любые случайные величины vi,
vj (i 6= j) должны моделироваться как попарно независимые. Предусмотреть
множитель-переключатель a, чтобы по желанию включать или отключать добавление случайных чисел vi, или же регулировать их уровень.
В качестве точного нормального псевдорешения взять вектор x∗ =
= [1, 2, . . . , m]T . Для оценки точности оценивания использовать норму вектора
kxk∞ = max(|xi|).
i

При использовании программы, где выполняется ортогональное приведение
QA = B, для проверки правильности метода убедиться в справедливости равенства AT A − B T B = 0. Для этого использовать норму матрицы
n

X
|aij | .
kAk∞ = max
i

j=1

Д. Представить обобщённую аттестацию двух подпрограмм и соответствующих методов, основанную на проведённых наблюдениях. Обсудить любые сравнительные достоинства и недостатки, поддающиеся количественной оценке, и
предложить план дальнейших вычислительных экспериментов, которые могли
бы помочь уточнить различия между рассмотренными выше методами решения переопределённых систем уравнений.

392

11.4 Задание на лабораторный проект № 8

Е. Решить следующую прикладную задачу [14]. Для i = 1, 2, . . . , m (m
кратно четырём) имеем
yi = x1wi + x2wi−1, wi = sin(2πi/m),

di = 2 cos(2πi/m).

Найти оптимальное значение x̄ = (x̄1, x̄2)T вектора коэффициентов x =
= (x1, x2)T , доставляющее минимум средней квадратической ошибке
m

1 X
J(x) =
(yi − di )2.
m i=1

Решение выполнить двумя способами: аналитически и численно. Аналитическое решение должно включать:
1) эквивалентную постановку задачи решения переопределённой системы
Ax ≈ z ,
2) решение для неё нормальных уравнений, дающее
h
iT
x̄ = 2 ctg(2π/m)
− cosec(2π/m) ,

3) представление критерия качества для общего случая в виде
J(x) = Jmin + (x − x̄)T Λ(x − x̄) ,

где Λ = AT A – информационная матрица, x̄ = (AT A)−1AT z – нормальное псевдорешение ,
4) доказательство того, что в данном конкретном случае
Jmin = min(J(x)) = J(x̄) = 0 ,
x

5) вычисление собственных значений (λ1, λ2 ) матрицы Λ, дающее
i
i
1h
1h
λ1 = 1 − cos(2π/m) , λ2 = 1 + cos(2π/m) ,
2
2

6) вычисление соответствующих собственных векторов (v1, v2) матрицы Λ ,
7) представление критерия качества для общего случая в виде
J(x) = Jmin + eT QΛ̄QT e ,
где e = x − x̄ – отклонение x от оптимального значения x̄, Q – матрица
ортонормированных собственных векторов матрицы Λ, диагональная матрица Λ̄ = diag [λ1, λ2 ] составлена из собственных значений матрицы Λ,
так что Λ = QΛ̄Q−1 = QΛ̄QT .
393

11 Лабораторный проект № 8

Таблица 11.1. Варианты задания на лабораторный проект № 8
Вариант
заполнения
матрицы R

0

0

a
b
c
d
e







Отражения
Хаусхолдера

Вращения
Гивенса

Ортогонализация
Грама-Шмидта

a

b

a

b

c

d

e

, Rne

1

2

3

4

5

6

7

0 , Rnw

8

9

10

11

12

13

14

, Rse

15

16

17

18

19

20

21

0 , Rsw

22

23

24

25

26

27

28

столбцово-ориентированный алгоритм;
строчно-ориентированный алгоритм;
классическая схема;
модифицированая схема;
модифицированая схема с выбором ведущего вектора.

Изобразите на экране в системе координат [x1, x2] = xT линии постоянных
уровней критерия J(x) = const для шести значений const = {1, 2, 3, 4, 5, 6}
в окрестности точки минимума критерия для одного из значений m =
= 4, 8, 12, 16, 20, 24, 28 или 32 (по выбору). Объяснить геометрический смысл
матриц Q и Λ̄ в последнем представлении критерия.
Численное решение должно включать вычисление решения x̄ с помощью
двух методов (по пп. А и Б) и сравнительную оценку точности двух решений
для нормы вектора kx̄k∞ (в зависимости от m = 4, 8, 12, 16, 20, 24, 28, 32). Эту
зависимость необходимо представить таблицей и графиком.

11.5

Варианты задания на лабораторный проект № 8

По теме «Одновременное решение нормальных уравнений» студентам
предлагается выполнение лабораторной работы – проекта № 8.
Задание на этот проект содержит 28 вариантов, которые аналогичны вариантам, приведённым в табл. 5.2 (см. с. 199) для проекта № 3. Все варианты
различаются по следующим признакам:
394

11.6 Заключение по разделу 11




четыре варианта заполнения треугольной матрицы R;
три вида ортогональных преобразований:
1) отражения Хаусхолдера,
2) вращения Гивенса,
3) ортогонализация Грама–Шмидта,



две разновидности алгоритма ортогонализации по методу Хаусхолдера и
по методу Гивенса:
1) столбцово-ориентированный алгоритм,
2) строчно-ориентированный алгоритм,



три разновидности ортогонализации по методу Грама–Шмидта:
1) классическая схема,
2) модифицированная схема,
3) модифицированная схема с выбором ведущего вектора.

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

11.6

Заключение по разделу 11

В данном разделе рассмотрен классический метод наименьших квадратов
для решения несовместных (переопределённых) систем линейных алгебраических уравнений. Он назван «классическим», потому что появился первым и
давно известен. Он сводится к решению так называемой нормальной системы
уравнений, при этом все уравнения этой системы решаются одновременно.
В проекте № 8 предлагается выполнить программирование одновременного
метода нормальных уравнений. При этом решение должно отыскиваться на основе ортогональных преобразований: метода отражений (Хаусхолдера), метода
плоских вращений (Гивенса), либо метода ортогонализации Грама–Шмидта.
Этот проект является специальным для освоения студентами дисциплин
«Вычислительная математика» или «Численные методы» и подготовительным к заключительному проекту № 9 в следующем разделе.
395

12
Проект № 9 «Рекуррентные
наименьшие квадраты»
12.1

Статистическая интерпретация

Предположим, что вектор ошибок v в уравнении (11.1) образован из случайных величин с нулевым средним и известной матрицей ковариации

(12.1)
E {v} = 0,
E vv T = Pv ,

где E {·} — оператор математического ожидания (среднего) над ·, и Pv — ПО
(положительно определённая) матрица. Найдём квадратно-корневое разложение Pv = SS T (например, разложение Холесского). Если теперь умножить вектор z (11.1) на S −1, то данные z̄ = S −1z получают представление
z̄ = Āx + v̄

(12.2)

с матрицей Ā = S −1 A и ошибками v̄ = S −1v. Этот вектор ошибок всегда имеет
единичную ковариацию:



E v̄v̄ T = E S −1vv T S −T = S −1 E vv T S −T = S −1SS T S −T = Im ,

где Im — единичная матрица размера (m × m). Вследствие этого данные z̄
называют нормализованными экспериментальными данными. Значение представления (12.2) заключается в том, что оно демонстрирует, как сконструировать вектор некоррелированных между собой измерений с единичной дисперсией из вектора, элементы которого произвольно взаимно коррелированы (декоррелировать и нормализовать его). Ниже предполагаем, что данные z (11.1)
уже декоррелированы и нормализованы, так что

(12.3)
E {v} = 0,
E vv T = Im,

12.2 Включение априорных статистических данных

где Im — единичная матрица размера (m × m). При этом из (11.3) находим
AT Ax̄ = AT z = AT Ax + AT v,
AT A(x̄ − x) = AT v.

Отсюда, если det(AT A) 6= 0, имеем

E {x̄} = x,



(AT A) E (x̄ − x)(x̄ − x)T (AT A) = AT E vv T A = AT A.

(12.4)
(12.5)

Соотношение (12.4) выражает собой свойство несмещенности решения (оценки)
x̄ относительно неизвестного (постоянного) вектора x, измеряемого в виде экспериментальных данных z, (11.1) или (12.2). Соотношение (12.5) даёт выражение для ковариации оценки x̄ в виде

(12.6)
Px̄ = E (x̄ − x)(x̄ − x)T = (AT A)−1.
при определении x̄ по нормализованным экспериментальным данным.
Обратная матрица Px̄−1 от ковариации Px̄ называется информационной матрицей. Её обозначение будет Λx̄ или просто Λ. При использовании нормализованных данных она равна AT A, а в более общем случае (12.1) она равна
Λ = AT Pv−1 A.

12.2

Включение априорных статистических данных

Предположим, что в добавление к линейной системе (11.1) мы имеем априорную несмещённую оценку неизвестного вектора x в виде x̃ и соответствующую априорную информационную матрицу Λ̃. Это означает, что E {x̃} = x
и

(12.7)
Λ̃−1 = E (x̄ − x)(x̄ − x)T = P̃ ,

где P̃ – ковариация оценки x̃. Найдём какой-нибудь квадратный корень Λ̃1/2 из
матрицы Λ̃, например, по одному из разложений Холесского (см. подразд. 4.2):
Λ̃ = Λ̃1/2Λ̃T /2 = R̃T R̃,

где Λ̃1/2 = R̃T . Образуем вектор ṽ = (Λ̃1/2)T (x̃ − x) = R̃(x̃ − x). Этот вектор
имеет смысл нормализованной ошибки для априорной оценки x̃ вектора x.
Действительно, его ковариация равна единичной матрице размера (n × n):


E ṽṽ T = R̃ E (x̃ − x)(x̃ − x)T R̃T = Λ̃T /2Λ̃−1 Λ̃1/2 = In .
397

12 Лабораторный проект № 9
A

Объект

z

+

v = z − Ax


Модель
x

Ax

min(kṽk2 + kvk2 )
x

R̃x



Априорная
модель x̃


z̃ = R̃x̃

+

ṽ = z̃ − R̃x

Рис. 12.1. Включение априорных данных в линейную задачу НК

Так как о векторе x, кроме экспериментальных данных z, (11.1), известна
априорная оценка x̃ с ковариацией P̃ = Λ̃−1 , эту информацию целесообразно
включить в контекст задачи о наименьших квадратах, рассматривая модифицированный функционал качества J1 (x) = ṽ T ṽ + v T v вместо (11.2). Он соединяет
в себе квадрат нормы нормализованной ошибки (невязки) априорной оценки
ṽ = R̃(x̃ − x) = Λ̃T /2(x̃ − x),
с квадратом нормы нормализованной ошибки (невязки) экспериментальных
данных v = z − Ax. Так как
J1 (x) = (x̃ − x)T Λ̃(x̃ − x) + (z − Ax)T (z − Ax) =
= (z̃ − R̃x)T (z̃ − R̃x) + (z − Ax)T (z − Ax),

(12.8)

где z̃ = R̃x̃, то J1 (x) может быть интерпретирован просто как критерий качества метода наименьших квадратов применительно к расширенной системе
(рис. 12.1)
   
 



=
,
(12.9)
x+
z
v
A
включающей, помимо текущих экспериментальных данных z, «дополнительные» экспериментальные данные z̃, соответствующие имеющейся в наличии
априорной информации x̃, Λ̃.
Обозначим через x̂ МНК-решение расширенной системы (12.9), доставляющее минимум функционалу (12.8). Из этого критерия для x̂ получаем, анало398

12.3 Включение предшествующего МНК-решения

гично (11.3), нормальные уравнения
(Λ̃ + AT A)x̂ = Λ̃x̃ + AT z.

(12.10)

Простая модификация данной в п. 12.1 статистической интерпретации приводит к выражению
Λ̂(x̂ − x) = Λ̃(x̃ − x) + AT v.
(12.11)

Так как E {x̃ − x} = 0 и E {v} = 0, то и E {x̂ − x} = 0, то есть x̂ есть также
несмещённая оценка: E {x̂} = x. Если 
ошибка априорной оценки и ошибка измерения взаимно некоррелированы, E (x̃ − x)v T = 0, то после «возведения
в квадрат» обеих частей (12.11) и осреднения получим ковариацию

(12.12)
Px̂ = E (x̂ − x)(x̂ − x)T = (Λ̃ + AT A)−1 = Λ̂−1 ,
где через Λ̂ обозначена информационная матрица апостериорной оценки x̂,
Λ̂ = Λ̃ + AT A.

Замечание 12.1. Матрица Λ̃ не обязана быть невырожденной, хотя
в (12.7) это формально предполагалось. В действительности, априорное знание некоторых (или всех) компонент вектора x может быть исчезающе мало,
так что соответствующие строки и столбцы в информационной матрице Λ̃ заполняются исчезающе малыми числами или даже нулями. При этом соотношение (12.7) сохраняет силу в пределе, в том смысле, что в ковариационной
матрице P̃ соответствующие диагональные элементы стремятся к +∞, в то
время как другие остаются ограниченными. Заметьте, что (12.10) как условие
минимума функционала (12.8) получается при произвольной неотрицательно
определённой матрице Λ̃. Если Λ̃ = 0, то (12.10) сводится к (11.3) и (12.12)
сводится к (12.6). Таким образом, информационная и ковариационная матрицы
взаимно обратны не только формально в силу определения (12.7), но и по существу как меры достоверности и, соответственно, недостоверности априорной
оценки x̃ вектора x.

12.3

Включение предшествующего МНК-решения

Расширенная система (12.9) показала, что априорные статистические сведения о векторе x, поступающие в виде несмещённой оценки x̃ и её ковариации
P̃ , могут быть интерпретированы как воображаемые добавочные результаты
z̃ = R̃x̃ некоего эксперимента. Это наводит на мысль, что и чисто алгебраическую задачу отыскания МНК-решения системы уравнений можно решать
399

12 Лабораторный проект № 9

последовательно: предварительно найти x̃ как МНК-решение части системы,
а затем включить это x̃ в полную систему, чтобы найти её МНК-решение x̂.
Такое разделение системы на две части – априорную и текущую – можно назвать её «расщеплением». Пусть система уравнений произвольно расщеплена
на эти две подсистемы:
   
 
f
w

=
x+
.
(12.13)
z
v
A
МНК-решение x̂ этой полной системы, доставляющее минимум функционалу
J1(x) = wT w + v T v, есть решение нормальных уранений




T

A

T






A



x̂ =





T

A

T





f
z



.

(12.14)

Допустим, найдено МНК-решение x̃ для подсистемы f = R̃x + w из критерия минимума функционала J(x) = wT w. Как отмечено в (11.5)–(11.6), оно
удовлетворяет двум условиям:
z̃ ∈ R(R̃) ,

R̃x̃ = z̃ ,

f − z̃ ⊥ R(R̃) ,

x̃ ∈ R(R̃T ) .
Разностный вектор r = f − z̃ ортогонален пространству столбцов R(R̃) матрицы R̃ и, следовательно, лежит в левом нуль-пространстве N (R̃T ), определяемом как все векторы y, удовлетворяющие уравнению R̃T y = 0. Поэтому
R̃T f = R̃T (z̃ + r) = R̃T z̃ + R̃T r = R̃T z̃ .
Следовательно, уравнения (12.14) совпадают с уравнениями


R̃T AT






A



x̂ =



R̃T AT






z



,

которые, в свою очередь совпадают с уранениями (12.10), так как R̃T R̃ = Λ̃.
Тем самым доказано, что МНК-решение x̂ данной системы (12.13) совпадает с
МНК-решением системы (12.9), отличающейся от(12.13) тем, что в неё вместо
f включен вектор z̃, равный проекции f на R(R̃), z̃ = R̃x̃, где x̃ – МНКрешение левой подсистемы в (12.13).
400

12.4 Рекурсия МНК в стандартной информационной форме

12.4

Рекурсия МНК в стандартной информационной
форме

Интерпретация априорных статистических данных как дополнительных наблюдений, или, что равносильно, учёт имеющегося МНК-решения подсистемы
после добавления в систему новой порции уравнений, является краеугольным
камнем рекурсии для МНК. Это дает возможность обрабатывать экспериментальные данные по мере их поступления, то есть решать задачу о наименьших квадратах по мере поступления новых уравнений. Это равносильно также
тому, что исходную большую совокупность экспериментальных данных можно
«расщеплять» произвольно на порции и последовательно включать их в обработку. Результат такой последовательной обработки, как доказано выше (подразд. 12.3), будет равносилен результату обработки всей совокупности экспериментальных данных целиком.
Результаты при статистической интерпретации рекурсивны потому, что текущие величины – оценка x̂ и ковариация Px̂ – становятся априорными и комбинируются с новыми данными, чтобы образовать обновлённые оценку и ковариацию. При этом существенно, что результаты (12.10) и (12.12) не зависят
(теоретически) от того, какой квадратный корень R̃ в разложении Λ̃ = R̃T R̃
использован. Эта свобода позволяет выбирать R̃ из соображений большей вычислительной точности. Кроме того, если лишь окончательная оценка (МНКрешение) необходима, то лучше не находить промежуточных оценок, а просто
P T
P T
Aj zj , и лишь в
накапливать информационную матрицу
Aj Aj и сумму
нужный момент (например, в самом конце) вычислить решение.
Информационную форму последовательного МНК запишем, вводя матрицу
(Λ | d) .
I. Инициализация. Устанавливают начальные значения x0, Λ0 :


d0 = Λ0 x0,
Λ d := Λ0 d0 .

Эти начальные значения берут из априорных данных: x0 = x̃, Λ0 = Λ̃.

II. Обработка наблюдений. Вводят очередную «порцию» наблюдений z =
= Ax + v:



Λ d := Λ d + AT A z .
(12.15)
В общем случае ненормализованных статистических данных z вместо (12.15) используют алгоритм:



(12.16)
Λ d := Λ d + AT R−1 A z .
401

12 Лабораторный проект № 9

III. Выдача результата. После последовательной обработки всех порций наблюдений или в нужный момент, когда Λ−1 существует, вычисляют
x̂ = Λ−1d,

12.5

Px̂ = Λ−1.

Рекурсия МНК в стандартной ковариационной
форме

Пусть априорная и апостериорная оценки, x̃ и x̂, характеризуются невырожденными информационными матрицами Λ̃ и Λ̂, соответственно. Тогда существуют обратные к ним ковариационные матрицы, (12.7) и (12.12). Разрешим (12.10) относительно x̂:
x̂ = (Λ̃ + AT A)−1Λ̃x̃ + (Λ̃ + AT A)−1AT z .
Обозначим
L = (Λ̃ + AT A)−1Λ̃,

K = (Λ̃ + AT A)−1AT

(12.17)

и преобразуем:
x̂ = Lx̃ + Kz − KAx̃ + KAx̃ = x̃ + K(z − Ax̃) ,
так как L + KA = In . Для определения K воспользуемся в (12.17) следующей
важной леммой.
Лемма 12.1.
−1
−1
−1
−1
−1
(Λ1 − Λ12Λ−1
= Λ−1
2 Λ21 )
1 + Λ1 Λ12 (Λ2 − Λ21 Λ1 Λ12 ) Λ21 Λ1 ,

(12.18)

где предполагается, что все матрицы согласованы по размерам и требуемые
обращения матриц существуют.
Упражнение 12.1. Докажите лемму 12.1, рассматривая блочные матрицы


−1 
P1 P12
Λ1 Λ12
=
,
P21 P2
Λ21 Λ2
и выписывая поблочно равенства ΛP = I и P Λ = I.

Применим лемму 12.1 при Λ1 = Λ̃, Λ12 = AT , Λ21 = ΛT12 = A, Λ−1
2 = −I.
Получим
(Λ̃ + AT A)−1 = Λ̃−1 − Λ̃−1AT (AΛ̃−1AT + I)−1AΛ̃−1.
402

12.5 Рекурсия МНК в стандартной ковариационной форме

Обозначим: P̃ = Λ̃−1, P̂ = Λ̂−1 . Имеем из подразд. 12.3 выражение (12.15):
Λ̂ = Λ̃ + AT A. Следовательно, P̂ = P̃ − P̃ AT (AP̃ AT + I)−1AP̃ . Так как
K = P̂ AT , то
K = P̃ AT − P̃ AT (AP̃ AT + I)−1AP̃ AT =
= P̃ AT (AP̃ AT + I)−1[AP̃ AT + I − AP̃ AT ] = P̃ AT (AP̃ AT + I)−1.

Таким образом, при статистической интерпретации (см. подразд. 12.2) получаем возможность уточнять априорную несмещённую оценку x̃ и уменьшать её
ковариацию P̃ , благодаря включению в процесс обработки вновь поступивших
результатов наблюдений z = Ax + v и применяя к ним следующий алгоритм,
известный как стандартный алгоритм Калмана (рис. 12.2).
A

Объект

Априорная
модель

z

ẑ = Ax̃

x̃, P̃

Экстраполяция
модели
x̃ := x̂, P̃ := P̂

+

ν



Обновление
модели



+

Апостериорная
модель
x̂, P̂

Рис. 12.2. Рекурсия МНК в стандартной ковариационной форме (схема Калмана). Этап
1 – обновление модели по наблюдениям. Этап 2 – экстраполяция модели между наблюдениями. Априорная модель даёт предсказание ẑ для отклика z объекта. Разность
ν имеет смысл обновляющего процесса. Весовая матрица K, умноженная на ν, обеспечивает обновление априорной модели по наблюдению z, т. е. переход к апостериорной
модели

I. Инициализация. Начальные значения x0, P0 :
x̃ := x0 ,

P̃ := P0 .

(12.19)
403

12 Лабораторный проект № 9

II. Обработка наблюдений. Очередная порция наблюдений z = Ax + v :
K = P̃ AT (AP̃ AT + I)−1 ,
P̂ = P̃ − KAP̃ ,
x̂ = x̃ + K(z − Ax̃) .

(12.20)

III. Экстраполяция. Распространение оценки x̂ и её ковариации P̂ между наблюдениями, т. е. к моменту повторения этапа II со следующей порцией
наблюдений :
P̃ := P̂ ,
x̃ := x̂ .
(12.21)
Замечание 12.2. Первая и вторая формулы в (12.21) выражают правило экстраполяции только для статической МНК-задачи оценивания, т. е. для
случая, когда оцениваемый вектор x не изменяется в процессе наблюдения:
x = const.
Равным образом данный алгоритм пригоден и без статистической интерпретации (см. подразд. 12.3), когда алгебраическая задача отыскания МНКрешения переопределённой системы решается последовательно. Такое решение
может стартовать с условно «пустой» системы уравнений. Практически, это
должно отвечать условию Λ̃ = 0, которое легко реализовать в информационной форме (подразд. 12.3). В ковариационной форме данное условие можно
реализовать лишь приближенно, например, полагая P0 = ε−2I, где ε → 0.
При таком выборе величина x0 практически не имеет влияния на дальнейший процесс, так что она может быть взята равной нулевому вектору, x0 = 0.
После такой инициализации уравнения исходной переопределённой системы
могут вводиться в этап обработки измерений последовательными порциями,
и в порциях может содержаться любое, не обязательно одно и то же, число
уравнений, выражаемое в числе строк матрицы A.
Как следует из подразд. 12.3, от указанного числа МНК-решение всей алгебраической системы уравнений не зависит. В связи с этим, с вычислительной
точки зрения удобным оказывается добавление в очередной порции лишь по
одному уравнению. Тогда матрица A содержит всего одну строку, которую теперь обозначим как транспонированный вектор-столбец a, aT = (a1, a2 , . . . , an ).
В этом случае
z = aT x + v,
(12.22)
и обработка наблюдений (12.20) принимает особенно простой вид:
α = aT P̃ a+1,
404

K = P̃ a/α,

P̂ = P̃ −KaT P̃ ,

x̂ = x̃+K(z −aT x̃). (12.23)

12.5 Рекурсия МНК в стандартной ковариационной форме

Это алгоритм скалярной (последовательной) обработки. В нём вместо умножения на обратную матрицу (AP̃ AT + I)−1 применяется деление на скалярную
величину α.
Упражнение 12.2. С применением леммы 12.1 к выражению (12.16)
докажите, что в общем случае ненормализованных экспериментальных данных (11.1) при их статистической интерпретации с ковариацией ошибок v, равной R, матрица Калмана K в алгоритме (12.20) определяется выражением
K = P̃ AT (AP̃ AT + R)−1.

(12.24)

Упражнение 12.3. Статистическая интерпретация алгоритма (12.23)
дана в подразд. 12.1 для случая, когда экспериментальные данные (11.1) нормализованы, то есть характеризуются математическими ожиданиями (12.3).
Это выражается добавлением «+1»
 T в выражении для α, (12.23), причём эта
= 1 для ошибки v в (12.22). Докажите,
«+1» есть не что иное как E vv
что в более общем случае, когда матрица R в (12.24) является диагональной,
R = diag (r1, r2, . . . , rm ),

(12.25)

и только в этом случае матричный алгоритм (12.20) с матрицей K из (12.24)
эквивалентен m-кратному повторению скалярного алгоритма вида (12.23) с α =
= aT P̃ a + r, где aT – i-я строка матрицы A, r = ri и z – i-й элемент вектора
z, (11.1), при i = 1, 2, . . . , m.
Таким образом, скаляризованный алгоритм Калмана (12.23) имеет следующее общее представление:
α = aT P̃ a+r,

K = P̃ a/α,

P̂ = P̃ −KaT P̃ ,

x̂ = x̃+K(z −aT x̃), (12.26)

если наблюдения (11.1) в их статистической интерпретации составлены из m
отдельных, независимых друг от друга, скалярных данных вида (12.22), каждое
с ковариацией r = ri, i = 1, 2, . . . , m.
Ещё раз отметим, что в применении к решению переопределённой системы
алгебраических уравнений в (12.26) следует считать r = 1, то есть использовать (12.23).
Замечание 12.3.
Условие (12.25) не является ни в коей мере ограничительным для использования (12.26). Используя разложение Холесского без
квадратных корней (см. разд. 4.3), любую R > 0 можно представить в виде
R = U DU T или R = LDLT и затем перейти к измерениям z̄ = U −1z или
z̄ = L−1z, чтобы диагонализировать матрицу ковариаций ошибок наблюдений.
405

12 Лабораторный проект № 9

Упражнение 12.4. Докажите, что в алгоритме (12.20) с определением
K по выражению (12.24) вычисление P̂ может быть представлено в так называемой симметричной форме Джозефа:
P̂ = (I − KA)P̃ (I − KA)T + KRK T ,

которую иначе называют стабилизированным алгоритмом Калмана, так как она
предотвращает возможную потерю положительной определённости матрицы P̂ ,
присущую стандартному алгоритму (12.20) с P̂ = P̃ −KAP . При скалярной обработке наблюдений в алгоритме (12.26) это выражение для P̂ , соответственно,
заменяется на скаляризованный алгоритм Джозефа
P̂ = (I − KαT )P̃ (I − αK T ) + rKK T .

12.6

Ковариационный алгоритм Поттера для МНК

Вместо матриц P̃ и P̂ , по своей природе положительно определённых, далее
оперируем с квадратными корнями из них, соответственно, S̃ и Ŝ, отвечающими равенствам S̃ S̃ T и Ŝ Ŝ T . Перепишем выражение для P̂ в (12.26) в виде
Ŝ Ŝ T = S̃(In − f f T /α)S̃ T ,

f = S̃ T a,

α = r + f T f,

где n – размерность векторов x̂, x̃, и потребуем так выбрать число β, чтобы
обеспечить справедливость следующего разложения:
In − f f T /α = (In − βf f T )(In − βf f T ).

Отсюда для β получаем квадратное уравнение и из двух его решений выбираем
p
β = (1/α)/(1 + r/α),
поскольку выбор знака «+» обеспечивает меньший уровень относительных
ошибок при этих вычислениях. Обозначим
p
γ = 1/(1 + r/α),

тогда β = γ/α. В итоге вместо (12.26) получаем следующий ряд формул:

f = S̃ T a ,




T

α = f f +r,



p

γ = 1/(1 + r/α) , 
(12.27)

K = S̃f /α ,




T

Ŝ = S̃ − γKf ,




T
x̂ = x̃ + K(z − a x̃) ,
406

12.7 Задание на лабораторный проект № 9

который и составляет алгоритм Поттера. Он численно более устойчив, чем
стандартный ковариационный алгоритм Калмана (12.26), но ему эквивалентен.
В целом, для него характерно следующее.
Вычисление Ŝ в (12.27) равносильно счёту с двойной точностью матрицы
P̂ в (12.26) при использовании той же разрядности чисел в компьютере, или,
иначе, равносильная точность вычислений матрицы P̂ может быть достигнута
значительно быстрее. Для матрицы P̂ теперь отсутствует опасность потери
положительной определённости, присущая операции вычитания в (12.26), поскольку здесь вычисляют Ŝ, а P̂ = Ŝ Ŝ T и P̂ > 0 при det(Ŝ) 6= 0. Недостатком алгоритма (12.27) является наличие операции извлечения квадратного
корня, отдельной для каждого скалярного наблюдения z = aT x + v, и возможная потеря специального (желательно, треугольного) вида матрицы Ŝ в общем
случае. Действительно, для экономии памяти и объёма вычислений обычно
стремятся иметь матрицы Ŝ и S̃ в виде треугольных матриц (обе – нижние
треугольные или обе – верхние треугольные), что соответствует разложениям
Холесского: P̂ = Ŝ Ŝ T и P̃ = S̃ S̃ T . Однако, если стартовать с матрицы S̃
треугольного вида, выполняя инициализацию в соответствии с (12.19), то изза вычитания в (12.27) матрица Ŝ в общем случае не остается треугольной.
Например, пусть для Ŝ и S̃ выбрана верхняя треугольная форма. Тогда только
при a = λ(1, 0, . . . , 0)T , где λ – скаляр, для Ŝ в (12.27) будет сохранена та же
верхняя треугольная форма, благодаря чему выполнение этапа экстраполяции,
согласно (12.21), сводится к простому присваиванию: S̃ := Ŝ. Если же выбранная для S̃ треугольная форма будет утрачена, то этап экстраполяции матрицы
потребует предварительной триангуляризации матрицы Ŝ, то есть операции
S̃ := triang (Ŝ). Триангуляризация triang (·) должна быть выполнена ортогональным преобразованием матрицы (·), например, преобразованиями Хаусхолдера, Гивенса или же Грама-Шмидта.

12.7

Задание на лабораторный проект № 9

Введение
В данном лабораторном проекте мы предлагаем к изучению современные
методы построения численно устойчивых и экономичных по затратам ресурсов
ЭВМ алгоритмов метода наименьших квадратов (МHК), решающих актуальную задачу последовательного обновления оценок по измерениям. Как уже отмечалось, эта задача возникает во многих приложениях, например, при оценке
состояния (элементов движения) объекта по последовательно поступающим
407

12 Лабораторный проект № 9

данным наблюдения, при подгонке параметров модели под результаты продолжительных экспериментов, проводимых в физике, астрономии, экономике,
бизнесе, социологии, психологии и в других областях, где выявление регрессий, анализ и прогнозирование тенденций опирается на включение в обработку
данных наблюдения по мере их поступления, для того, чтобы постепенно идентифицировать модель объекта (процесса) или уточнять параметры модели.
1. Задание
A. Спроектировать, отладить и продемонстрировать в действии программу
решения несовместной системы уравнений Ax ≈ b, A = A(m, n), m > n,
rank A = n, в смысле наименьших квадратов в соответствии с вашим вариантом последовательного алгоритма (см. ниже подразд. 12.9).
Б. Оценить результаты решения по трем показателям:
(1) погрешность (абсолютная и относительная) решения;
(2) затраты основной памяти компьютера на хранение данных, необходимых
только для заданного алгоритма;
(3) теоретическое и реальное число основных операций компьютера для
выполнения заданного алгоритма.
Эти показатели определить в зависимости от следующих параметров задачи:
(1) размерность задачи, т. е. число неизвестных n;
(2) степень переопределённости задачи, т. е. число p, указывающее, во сколько
раз число уравнений m больше числа неизвестных, m = pn;
(3) степень несовместности системы, т. е. вещественное положительное число
c, показывающее среднеквадратическое значение элементов случайного
разностного вектора d = b − Ax̄, где x̄ – нормальное псевдорешение системы Ax ≈ b, относительно среднего (единичного) значения;
(4) способ генерации матрицы A.
В. Провести вычислительный эксперимент, используя в нём:
(1) десять значений n, n = 1, 2, . . . , 10;
(2) три значения p, p = 10, 100 и 1000;
(3) три значения c, c = 1/10, 1 и 10;
408

12.7 Задание на лабораторный проект № 9

(4) четыре способа генерации матрицы A (см. п. 2 в подразд. 12.7).
Результаты эксперимента вывести на экран в виде следующей таблицы:
Вычислительный эксперимент:
n

p=(значение), c=(значение), A=(способ)
Погрешность
Память
Число операций
абсолютная относительная КБайт теоретическое реальное

При подсчёте числа операций учитывать: сложение, умножение, деление
и извлечение квадратного корня. К отчёту о работе приложить расчётные
формулы числа операций отдельно по этим видам операций и их сумму.
В таблицу выводить только суммарное число операций.
Г. Выполнить отладку программы и продемонстрировать результаты на решении следующей тестовой задачи [14]:
h
i
.
.
Ax ≈ b , A = A(m, 2) = ai1 . ai2 , i = 1, 2, . . . , m ;
m = 4, 8, 12, 16, 20, 24, 28, 32, 36, 40 ;

ai1 = wi = sin(2πi/m), ai2 = wi−1 ;
bT = (b1, . . . , bm), bi = 2 cos(2πi/m) .
Известно (с. 393), что решением этой задачи является вектор x̄T = (x̄1, x̄2),
x̄1 = 2 ctg(2π/m),

x̄2 = −2 cosec(2π/m).

(12.28)

Для демонстрации процесса отладки вывести на экран ещё одну таблицу:
Отладка программы:
m

Погрешность
абсолютная относительная

Д. Во всех случаях для оценки абсолютной погрешности использовать норму
вектора e = x − x̄ вида
kek∞ = max |ei | ,
i

где x – вычисленное решение, а относительную погрешность определять по
формуле
δ = kek∞ /kx̄k∞ ,

в которой x̄ – точное МHК-решение (нормальное псевдорешение задачи).
В отладочной (тестовой) задаче по п. Г решением является вектор (12.28),
а в задачах вычислительного эксперимента по п. В – вектор x̄ = (1, 2, . . . , n).

409

12 Лабораторный проект № 9

2. Генерация задач для вычислительного эксперимента
Как отмечено, для этих задач точное МHК-решение следует задать в виде
вектора x̄ = (1, 2, . . . , n). Затем следует сгенерировать матрицу A (см. ниже)
и образовать вектор b̂ = Ax̄. К нему нужно добавить случайный вектор d = cξ,
где c – число (см. выше п. 1), а ξ ∼ N (0, 1) – вектор случайных чисел (от
подпрограммы псевдослучайных чисел), взятых из стандартного нормального
распределения с нулевым средним значением и единичной дисперсией. В результате получаем вектор b = Ax̄ + d для системы уравнений Ax ≈ b.
Для генерации матрицы A необходимо предусмотреть один из четырёх способов:
Способ 1 – матрица A = A(m, n) заполняется случайными числами из
равномерного распределения в диапазоне [−100, +100]. Условно запишем это
так:
A = [ Random(m × n) ] .
Способ 2 – верхняя часть матрицы A, а именно, её первые n строк, заполняются по способу 1, а остальные строки образуют подматрицу, в которой
только первые q столбцов, где q = [n/2] – ближайшее снизу целое число к
n/2, заполняются как в способе 1, а все остальные столбцы – нулевые. Таким
образом, матрица имеет вид:
A=

Random(n × n)
Random
0

Способ 3 – первая часть матрицы A должна формироваться как в способе 2, а остальная часть образуется располагающимися последовательно вниз
блоками из единичных матриц I размера n × n:
Random(n × n)
I(n × n)
A=
···
I(n × n)
Способ 4 – верхняя часть матрицы A должна формироваться как в способе 2, остальная же часть строится подобно способу 2, но ненулевые q столбцов
нижней подматрицы заполняются не случайными числами, а располагающимися последовательно вниз блоками из единичных матриц I размера (q × q):
410

12.8 Варианты задания на лабораторный проект № 9

Random(n × n)
I(q × q)
A=
···
0
I(q × q)
Замечание 12.4. Hе нужно генерировать всю матрицу A, так же как и
весь вектор b и весь вектор d, единовременно. Матрицу A нужно генерировать
построчно, а векторы b и d – поэлементно. Hапример, если aT = (a1 , a2, . . . , an )
есть текущая строка матрицы A, то z = aT x̄ + v, где z – текущий элемент вектора b, v – текущий элемент вектора d, v = cξ, ξ ∼ N (0, 1) – текущее случайное
число из стандартного нормального распределения. Таким образом, последовательно генерируемые данные (aT , z) нужно вводить в алгоритм решения, а
также использовать в нём значение r = c2 , имеющее смысл дисперсии ошибки
измерения вектора b̂ = Ax̄, исключительно последовательно.

12.8

Варианты задания на лабораторный проект № 9

Общее число вариантов составляет 16 (учитывая подварианты – различия
в методах ортогонализации в некоторых из вариантов).
Замечание 12.5. Для всех ковариационных алгоритмов (варианты 1–3)
в качестве начальных значений можно взять: x0 = 0, P0 = (1/ε2)I, ε → 0.
Вариант 1. Стандартный ковариационный алгоритм (Калмана).
Найдите его в подразд. 12.5.
Вариант 2. Стабилизированный ковариационный алгоритм (Джозефа).
Найдите его в подразд. 12.5:
(ii) Обработка наблюдений (очередные данные z = aT x̄ + v):
α = aT P̃ a + r,

K = P̃ a/α,

P̂ = (I − KaT )P̃ (I − aK T ) + rKK T .

(12.29)

Замечание 12.6.
Вычислительные затраты существенно зависят от
способа программирования выражений. Hапример, выражение (12.29) для P̂
411

12 Лабораторный проект № 9

может быть запрограммировано в следующей последовательности:
W1 = I − KaT ,

(n × n)-матрица

(n × n)-матрица

W2 = W1P̃ ,

P̂ = W2W1T + r(KK T )
или, эквивалентно, в виде:
v1 = P̃ a,

n-вектор

P1 = P̃ − Kv1T ,
v2 = P1 a,

(n × n)-матрица
n-вектор

P̂ = (P1 − v2K T ) + (rK)K T ,
и в обоих способах можно экономить вычисления, благодаря симметрии
матрицы P̂ . Однако второй способ имеет на порядок меньше вычислений: в
первом способе выполняется (1, 5n3 + 3n2 + n) умножений, а во втором только
(4n2 + 2n) умножений.
Вариант 3. Квадратно-корневой ковариационный алгоритм Поттера. Найдите его в подразд. 12.6, в следующем виде.
(i) Инициализация (начальные значения x0, P0 ):
x̃ := x0 ,

1/2

S̃ := P0 .

(ii) Обработка наблюдений (очередные данные z = aT x̄ + v):
p
T
T
f = S̃ a, α = f f + r, γ = 1/(1 + r/α) ,
K = S̃f /α,

Ŝ = S̃ − γKf T ,

x̂ = x̃ + K(z − aT x̃) .

(iii) Экстраполяция (между повторениями этапа (ii)):
S̃ := Ŝ,

x̃ := x̂ .

Замечание 12.7. Вариант 3, в котором вместо S̃ := Ŝ предусмотрена
процедура триангуляризации S̃ := triang Ŝ, даёт следующие версии:
– Версия 3.1 : обе матрицы, S̃ и Ŝ, – нижние треугольные (S ≡ L), или
412

12.8 Варианты задания на лабораторный проект № 9

– Версия 3.2 : обе матрицы, S̃ и Ŝ, – верхние треугольные (S ≡ U ).
Именно для этого этап (iii) должен содержать, вместо S̃ := Ŝ, процедуру триангуляризации S̃ := triang Ŝ, матрицы Ŝ. Возможны четыре алгоритма этой
процедуры: (1) отражения Хаусхолдера, (2) вращения Гивенса, (3) классическая
Грама–Шмидта ортогонализация и (4) модифицированная Грама–Шмидта ортогонализация (см. лабораторный проект № 6). Соответственно этому, всего
имеем 8 подвариантов для указанного варианта 3, сведённых в следующую
таблицу:
triang
S≡L S≡U
Хаусхолдер 3.1.1
3.2.1
Гивенс
3.1.2
3.2.2
ГШО
3.1.3
3.2.3
МГШО
3.1.4
3.2.4
Вариант 4. Стандартный информационный алгоритм (см. стр. 401).
(i) Инициализация (начальные значения x0, Λ0 ) :




.
.
.
.
d0 = Λ0 x0 ,
Λ . d := Λ0 . d0 .
(ii) Обработка наблюдений (очередные данные z = aT x̄ + v):






..
.
.
T
Λ . d := Λ .. d + a a .. z /r .
(iii) Выдача результата: x̂ = Λ−1 d .
В качестве начальных значений рекомендуется взять x0 = 0, Λ0 = 0.
Вариант 5. Квадратно-корневой информационный алгоритм. См. подразд. 5.3, стр. 169, формулу (5.7), здесь – её рекуррентная версия (12.30).
(i) Инициализация (начальные значения R̃0 , x0) :
i h
h
ẑ0 = R̃0
z̃0 = R̃0x0 ;
R̂0

i

z̃0 .

(ii) Обработка наблюдений (очередные скалярные данные z = aT x̄ + v):




R̂j ẑj
R̂j−1 ẑj−1
= Tj
, j = 1, 2, . . . , m ,
(12.30)
0 e
aT
z
413

12 Лабораторный проект № 9

где Tj – ортогональная матрица, которая выбираетсятак, чтобы
 привести
R̂j−1
, j – номер
к верхнетреугольному виду расширенную матрицу
aT
очередного измерения, все матрицы R здесь имеют размер (n × n), при
этом все Rj , j ≥ 1, – верхние треугольные.

(iii) Выдача результата: x̂ = R̂j−1 ẑj .

Hачальные значения рекомендуется взять в виде x0 = 0, R̃0 = 0. В качестве преобразований Tj возможны четыре процедуры, указанные в описании
варианта 3. Таким образом, всего имеем 4 разновидности данного варианта:
Tj
вариант
Хаусхолдер
15.1
Гивенс
15.2
ГШО
15.3
МГШО
15.4

12.9

Заключение по разделу 12

В данном разделе рассмотрен современный метод наименьших квадратов
для решения несовместных (переопределённых) систем линейных алгебраических уравнений. Он назван «современным», потому что появился относительно
недавно (известен с 1963 года). Он сводится к решению так называемой нормальной системы уравнений, при этом все уравнения этой системы решаются
не одновременно, а последовательно.
Этот метод имеет такую же алгоритмическую форму, как знаменитый, широко применямый фильтр Калмана. Это совпадение алгоритмов относится
лишь к этапу обработки измерений в фильтре: этап экстраполяции оценок здесь
отсутствует, так как оценивается «статический» вектор решения переопределённой алгебраической системы. Изучение этого метода крайне важно с прикладной точки зрения, но важно и с точки зрения вычислительной математики,
поскольку позволяет преодолевать проблему плохой обусловленности системы.
В проекте № 9 предлагается выполнить программирование нескольких (трёх
первоначальных) последовательных алгоритмов метода наименьших квадратов
и исследовать их. Этот проект является специальным для освоения студентами
дисциплин «Вычислительная математика» или «Численные методы».
Более широко алгоритмы этого раздела 12 представлены в базовом учебном
пособии [6], где для них дана полная статистическая интерпретация.
414

Заключение
Данное учебное пособие разработано с учётом современных тенденций
проекто-ориентированного преподавания и обучения. В рамках ПОО студент
не просто программирует метод, а создаёт академический программный продукт (АПП), который должен приближаться по качеству к профессиональным
программным продуктам.
Структурно данное пособие организовано в виде четырёх частей, в которые
помещены двенадцать разделов.
Часть I написана на материале, который предоставили доцент В. В. Угаров
и аспирант А. И. Афанасова, – ими разработаны методика оценивания качества АПП (В. В. Угаров, c. 39–43) и программа вычисления качественных характеристик совокупности АПП на основе метрик Холстеда (А. И. Афанасова,
c. 43–46). Эти методика и инструменты используются в Ульяновске, начиная с
1999 года, когда основным изучаемым языком программирования был Pascal и
среда Delphi. Теперь, когда студенты изучают и практически используют языки
С++, С# и MATLAB, инструменты этой методики (программы–анализаторы
качества АПП) обновляются. В них осреднённая оценка качества АПП выводится с применением статистических методов по большому количеству АПП,
сохраняемых в базе данных.
Доцент В. В. Воронина включила в часть I методические рекомендации по
использованию языка программирования высокого уровня С# при выполнении проектных заданий студентами. Ею собраны базовые сведения по С# и
написаны полезные фрагменты кодов (В. В. Воронина, с. 52–83).
Часть II, содержащую три проекта, написали профессор И. В. Семушин (теоретический материал, c. 87–114, 135–151, 166–198), доцент Ю. В. Цыганова
(методические рекомендации по выполнению проектов, c. 114–134, 151–165,
199–220) и студент И. Н. Куличенко, – ему принадлежит раздел 6, c. 221–314.
Раздел 6 предназначен для демонстрации всего рабочего процесса разработки
любого из вариантов не только первых трёх проектов, но и других шести, помещённых в следующие части данного пособия. Результат разработки одного
из вариантов проекта № 1 доступен на долговременном ресурсе Google.

Заключение

Распределение числа вариантов заданий на проектирование
Проект


Число
вариантов
задания

Указатель:
раздел ??
c. ??

Всего
вариантов

II

1
2
3

26
40
28

разд. 3.8, c. 112
разд. 4.8, c. 151
разд. 5.16, c. 198

94

III

4
5
6

40
16
15

разд. 7.7, c. 333
разд. 8.5, c. 347
разд. 9.12, c. 366

71

IV

7
8
9

48
28
16

разд. 10.4, c. 386
разд. 11.5, c. 394
разд. 12.9, c. 414

92

Часть №

II + III + IV

Суммарное число вариантов

257

Части III и IV пособия разработал профессор И. В. Семушин (c. 317–414).
Этот материал может быть полезен для углублённого изучения методов и алгоритмов Вычислительной линейной алгебры, включая начальные аспекты технологии разреженных матриц и метода обыкновенных наименьших квадратов.
Последнее особенно востребовано для современной реализации решений задач
регрессионного анализа, например, в эконометрике, где до сих пор распространено одновременное решение нормальных уравнений. Дальнейший материал по
этим важным вопросам может быть найден в книгах [6], [9] и [11].
Фронтально-состязательный подход и ПОО, которые мы реализуем в этом
образовательном процессе, нуждаются в большом разнообразии индивидуальных вариантов проекта по одной и той же изучаемой теме. Эта проблема «размножения» вариантов в данном пособии решена. В результате в данном учебном пособии мы имеем по всем девяти тематическим проектам 257 различных вариантов индивидуальных заданий на проектирование алгоритмов вычислительной линейной алгебры (см. таблицу выше) с реализацией проектов на
языке программирования высокого уровня C#. Это существенно отличается по
количеству проектов, по систематизации методики проектирования и по современности языка от тех учебных проектов, которые описаны в книге [12].
416

Список иллюстраций
2.1
2.2
2.3
2.4

Создание проекта . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Выбор вида проекта (a). Корректный результат (б) . . . . . . . . . . . . . . . . . .
Преобразование типов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Основная форма (a). Размещение текстовых полей: выбор элемента TextBox
CommonControls (б). Вкладка свойств основной формы (в) . . . . . . . . . . . . .
2.5 Первый этап создания интерфейса . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.6 Обработка нажатия на кнопку (a). Настройка параметров таблицы (б) . . . . . . .
2.7 Работа приложения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.8 Отображение графика . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.9 Отображение гистограммы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.10 Добавление класса . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1
4.2
5.1

5.2
5.3

5.4

5.5
5.6
5.7
5.8

6.1
6.2
6.3

. .
. .
. .
в
. .
. .
. .
. .
. .
. .
. .

56
57
59
66
67
68
71
75
76
78

Алгоритмы окаймления известной части LLT -разложения: строчный (слева); алгоритм скалярных произведений (справа) . . . . . . . . . . . . . . . . . . . . . . . . . . 145
Алгоритмы окаймления неизвестной части LLT -разложения: алгоритм линейных комбинаций (слева); алгоритм скалярных произведений (справа) . . . . . . . . . . . . . . 145
Алгебраически эквивалентные задачи, решаемые методом наименьших квадратов значений невязки v или среднего квадрата погрешности e: (a) – оптимальное моделирование неизвестной системы по экспериментальным условиям A и данным z; (b)
– оптимальное оценивание неизвестного вектора по наблюдениям
Ax в присутствии

случайных помех v с характеристиками E {v} = 0 и E vv T = I . . . . . . . . . . . .
Геометрия преобразования Хаусхолдера. Задача 1 (прямая): даны векторы u и y,
найти вектор yr , отражённый от гиперплоскости U⊥ . . . . . . . . . . . . . . . . . . .
Геометрия преобразования Хаусхолдера. Задача 2 (обратная): даны векторы y и
yr , найти вектор u, задающий отражающую гиперплоскость U⊥ ; здесь yr = se1 =

T
= s 0 · · · 0 . Докажите, что здесь показан вектор 21 u, а не u (см. Замечание 5.2) .
Представление возможных случаев применения теоремы 5.1 к матрице A(m, n); (a)
недоопределённая система: k = m − 1 ≤ n; (b) определённая система: k = n − 1,
m = n; (c) переопредёленная система: k = n < m; (d) k < n < m . . . . . . . . . . .
Вверху: Сохранение преобразования T и вычисление вектора y = T z, ∀y ∈ Rm . Внизу:
Вычисление матрицы A−1 после сохранения преобразования T . . . . . . . . . . . . .
Геометрия вращений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Вычисление матрицы P1,j . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Преобразование Гивенса: (a) столбцово ориентированная схема вычисления матрицы
P A, где P = P (j) при j = min (m − 1, n) (нижняя матрица слева); (б) вычисление
координаты r вектора (a, b)T , повёрнутого до совмещения с первой осью, а также
косинуса и синуса угла поворота и рабочего признака ζ; (в) строчно ориентированная схема вычисления матрицы P A (верхняя матрица слева); (г) восстановление
косинуса и синуса угла поворота из признака ζ; (д) получение вектора y теми преобразованиями Pj,i произвольного вектора z ∈ Rm , которые сохранены в рабочих
признаках ζj,i и восстанавливаются из них; (е) вследствие п. (б) векторы 1, 2, 3 и 4
поворачиваются к положительному направлению первой координатной оси, а векторы
5, 6, 7 и 8 – к отрицательному направлению этой оси . . . . . . . . . . . . . . . . . .

167
171

173

174
180
181
182

184

Вывод матрицы после компиляции процедуры факторизации . . . . . . . . . . . . . . 226
Вывод ошибки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
Вывод решения СЛАУ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238

Список иллюстраций
6.4
6.5
6.6
6.7
6.8
6.9
6.10

6.11

6.12
6.13
6.14
6.15
6.16
6.17
6.18
6.19
6.20
6.21
6.22
6.23
6.24
6.25
6.26
6.27

6.28

6.29

6.30

6.31
7.1
7.2
7.3
7.4
7.5
7.6

418

Вывод числа и времени операций . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Вывод определителя матрицы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Создание dll библиотеки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Вывод случайной матрицы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Вывод матрицы первого типа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Вывод матрицы второго типа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Вывод матрицы четвёртого типа. Иной вариант: вместо операции умножения “*” в
седьмой строке листинга 6.35 здесь применена операция деления “/”. Рекомендуем
использовать основной вариант листинга 6.35 . . . . . . . . . . . . . . . . . . . . . . .
Вывод матрицы пятого типа. Иной вариант: вместо операции умножения “*” в седьмой
строке листинга 6.37 здесь применена операция деления “/”. Рекомендуем использовать основной вариант листинга 6.37. Подобное замечание см. для рис. 6.10 . . . . .
Вывод матрицы шестого типа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Вывод матрицы седьмого типа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Вывод матрицы восьмого типа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Вывод матрицы девятого типа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Создание обработчика событий (a). Изменение элементов в ListBox (б) . . . . . . . .
Главная форма приложения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Скриншот главной формы приложения (ввод данных для решения СЛАУ) . . . . . . .
Скриншот главной формы приложения (ввод данных для обращения матрицы) . . . .
Скриншот главной формы приложения (ввод данных для вычисления определителя) .
Внешний вид формы HandInputSLAU . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Внешний вид формы HandInputINV . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Подключение библиотек . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Выбор библиотек . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ввод матриц для решения СЛАУ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Решение СЛАУ и отчёт в таблице для задачи из рис. 6.25 . . . . . . . . . . . . . . . .
Вывод таблиц результатов эксперимента: (a) в режиме «решение СЛАУ» при использовании матриц Гильберта и (б) в режиме «обратная матрица» при использовании
плохо обусловленных матриц девятого типа . . . . . . . . . . . . . . . . . . . . . . . .
Вывод графика зависимости числа операций от порядка матрицы: (a) в режиме «Решение СЛАУ» при использовании матриц Гильберта и (б) в режиме «Обратная матрица» при использовании плохо обусловленных матриц девятого типа . . . . . . . . .
Вывод графика зависимости времени выполнения от порядка матрицы: (a) в режиме
«Решение СЛАУ» при использовании матриц Гильберта и (б) в режиме «Обратная
матрица» при использовании плохо обусловленных матриц девятого типа . . . . . . .
Вывод графика зависимости погрешности от порядка матрицы: (a) в режиме «Решение СЛАУ» при использовании матриц Гильберта и (б) в режиме «Обратная матрица» при использовании плохо обусловленных матриц девятого типа . . . . . . . . . .
Эксперимент с вычислением определителя заданной матрицы: (a) Ввод матрицы и
(б) Результат вычисления определителя . . . . . . . . . . . . . . . . . . . . . . . . . .

238
240
247
253
253
255

Строчно ориентированная схема L U -разложения . . . . . . . . . . . . . . . . . . . . .
Столбцово ориентированная схема L U -разложения . . . . . . . . . . . . . . . . . . . .
Сложение n чисел методом сдваивания для n = 8 [9] . . . . . . . . . . . . . . . . . . .
ij (слева) и ji (справа) формы матрично-векторного умножения [9] . . . . . . . . . .
Операция сложения в компьютере типа «регистр–регистр» [9] . . . . . . . . . . . . .
Столбцово ориентированная схема L U -разложения с отложенными модификациями
(jki-алгоритм, см. с. 328) [9] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

318
318
321
323
324

256

258
261
262
263
265
268
269
280
280
281
282
285
300
301
307
307

309

310

311

312
313

325

Список иллюстраций
7.7

7.8

7.9
8.1
8.2

8.3

8.4

Способ доступа к данным для kij-формы (слева) и для kji-формы (справа) L U разложения. Обозначения: L , U – вычисление закончено, обращений больше нет; z
обозначает главный элемент (ГЭ); – деление на ГЭ (нормировка) [9] . . . . . . . . 329
Способ доступа к данным для jki-формы и для jik-формы (слева) и для ikj-формы
и для ijk-формы (справа) L U -разложения. Обозначения: L , U – вычисление закончено, обращения больше не производятся; z обозначает главный элемент (ГЭ);
обозначает деление на ГЭ (нормировка); ∅ – обращений не было [9] . . . . . . . . . . 329
Алгоритмы скалярных произведений (слева) и столбцовый для обратной подстановки
(справа) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
Алгоритмы окаймления известной части L U -разложения: столбцовый (слева) и алгоритм скалярных произведений (справа) . . . . . . . . . . . . . . . . . . . . . . . . .
Доступ к данным в алгоритмах окаймления известной части разложения. L , U здесь
вычисление закончено, но обращения происходят. A – обращений не было. Вычисляются: j-й столбец матрицы U и j-я строка матрицы L . . . . . . . . . . . . . . . . . .
Доступ к данным в алгоритмах окаймления неизвестной части разложения. L 11 , U11 –
вычисление закончено, обращений больше нет. L31 , U13 здесь вычисление закончено,
но обращения происходят. A33 – обращений не было. Вычисляются: j-й столбец l3j
матрицы L и j-я строка uTj3 матрицы U . . . . . . . . . . . . . . . . . . . . . . . . . .
Алгоритмы Донгарры–Айзенштата окаймления неизвестной части
L U -разложения: алгоритм линейных комбинаций (слева) и алгоритм скалярных
произведений (справа) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

340

341

342

343

11.1 Линейная задача наименьших квадратов . . . . . . . . . . . . . . . . . . . . . . . . . . 389
12.1 Включение априорных данных в линейную задачу НК . . . . . . . . . . . . . . . . . . 398
12.2 Рекурсия МНК в стандартной ковариационной форме (схема Калмана). Этап 1 –
обновление модели по наблюдениям. Этап 2 – экстраполяция модели между наблюдениями. Априорная модель даёт предсказание ẑ для отклика z объекта. Разность ν
имеет смысл обновляющего процесса. Весовая матрица K, умноженная на ν, обеспечивает обновление априорной модели по наблюдению z, т. е. переход к апостериорной
модели . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403

419

Список таблиц
1

Влияние неуважительных пропусков на оценку . . . . . . . . . . . . . . . . . . . . . . 20

2.1

Арифметические операции – иллюстрация для текста на c. 53 . . . . . . . . . . . . . 84

3.1
3.2
3.3
4.1

Свойства специальных элементарных матриц . . . . . . . . . . . . . . . . . . . . . . . 99
−1
−1 −1
Поэтапное перемножение L−1
4 (L3 (L2 L1
 )) . . . . . . . . . . . . . . . . . . . . . . . 105
−1 −1
U
U
. . . . . . . . . . . . . . . . . . . . . . . . . 107
Поэтапное перемножение U −1
2
3
4

5.1
5.2

Эффективное обращение верхней треугольной матрицы U := R−1 . . . . . . . . . . . 179
Варианты задания на лабораторный проект № 3 . . . . . . . . . . . . . . . . . . . . . 199

7.1

Вычисления по алгоритму jki-формы для примера 7.3. Позиции ГЭ
(без их реального выбора) показаны выделенным шрифтом . . . . .
Вычисления по алгоритму jik-формы для примера 7.3. Позиции ГЭ
(без их реального выбора) показаны выделенным шрифтом . . . . .
Вычисления по алгоритму ikj-формы для примера 7.3. Позиции ГЭ
(без их реального выбора) показаны выделенным шрифтом . . . . .
Вычисления по алгоритму ijk-формы для примера 7.3. Позиции ГЭ
(без их реального выбора) показаны выделенным шрифтом . . . . .
Варианты задания на лабораторный проект № 4 . . . . . . . . . . . .

7.2
7.3
7.4
7.5
8.1

Варианты задания на лабораторный проект № 2 . . . . . . . . . . . . . . . . . . . . . 151

. . . . . . . . . . 330
. . . . . . . . . . 330
. . . . . . . . . . 331
. . . . . . . . . . 332
. . . . . . . . . . 336

8.3

Вычисления по алгоритмам на рис. 8.1 для примера 7.3. Позиции элемента-делителя
столбца L показаны выделенным шрифтом . . . . . . . . . . . . . . . . . . . . . . . . 341
Вычисления по алгоритмам на рис. 8.4 для примера 7.3. Позиции элемента–делителя
столбца L показаны выделенным шрифтом . . . . . . . . . . . . . . . . . . . . . . . . 344
Варианты задания на лабораторный проект № 5 . . . . . . . . . . . . . . . . . . . . . . 347

9.1

Варианты задания на лабораторный проект № 7 . . . . . . . . . . . . . . . . . . . . . 369

8.2

10.1 Варианты задания на лабораторный проект № 6 . . . . . . . . . . . . . . . . . . . . . . 386
11.1 Варианты задания на лабораторный проект № 8 . . . . . . . . . . . . . . . . . . . . . 394

Библиографический список
Основная литература
1.

Бахвалов, Н. С. Численные методы / Н. С. Бахвалов, Н. П. Жидков, Г. М. Кобельков. – М.:
Наука, 1987.

2.

Вержбицкий, В. М. Основы численных методов: учебное пособие для вузов / В. М. Вержбицкий. – М.: Высш. шк, 2002, – 2-e изд., перераб. – М.: Высш. шк, 2005.

3.

Воеводин, В. В. Вычислительные основы линейной алгебры / В. В. Воеводин. – М.: Наука,
1977.

4.

Воеводин, В. В. Численные методы алгебры. Теория и алгоритмы / В. В. Воеводин. – М.:
Наука, 1966.

5.

Самарский, А. А. Численные методы / А. А. Самарский, А. В. Гулин. – М.: Наука, 1989.

6.

Семушин, И. В. Вычислительные методы алгебры и оценивания / И. В. Семушин. – Ульяновск:
УлГТУ, 2011.
Дополнительная литература

7.

Годунов, С. К. Решение систем линейных уравнений / С. К. Годунов. – Новосибирск: Наука,
1980.

8.

Икрамов, Х. Д. Численное решение линейных задач метода наименьших квадратов / Х. Д.
Икрамов // Математический анализ. Итоги науки и техники, Т. 23. – М.: ВИНИТИ, 1985.

9.

Ортега, Дж. Введение в параллельные и векторные методы решения линейных систем /
Дж. Ортега. – М.: Мир, 1991.

10.

Ортега, Дж. Введение в численные методы решения дифференциальных уравнений / Дж. Ортега, У. Пул. – М.: Наука, 1986.

11.

Писсанецки, С. Технология разреженных матриц / С. Писсанецки. – М.: Мир, 1988.

12.

Райс, Дж. Матричные вычисления и математическое обеспечение / Дж. Райс. – М.: Мир,
1984.

13.

Стренг, Г. Линейная алгебра и ее применения / Г. Стренг. – М.: Мир, 1980.

14.

Уидроу, Б. Адаптивная обработка сигналов / Б. Уидроу, С. Стирнз. – М.: Радио и Связь, 1989.

15.

Фаддеев, Л. К. Вычислительные методы линейной алгебры / Л. К. Фаддеев, В. Н. Фаддеева.
– М.: Физматгиз, 1963.

БИБЛИОГРАФИЧЕСКИЙ СПИСОК
16.

Bierman, G. J. Factorization methods for discrete sequential estimation / G. J. Bierman. – New
York, San Francisco, London: Academic Press, 1977.

17.

Dorf, R. C. Modern control systems, Fifth Edition / Richard C. Dorf. – Reading, Massachusetts •
Menlo Park, California • New York • Don Mills, Ontario • Wokingham, England • Amsterdam •
Bonn • Sydney • Singapore • Tokyo • Madrid • San Juan : Addison-Wesley Publishing Company,
1990.

18.

Duff, I. S. Direct Methods for Sparse Matrices / I. S. Duff, A. M. Erisman, J. K. Reid. — Oxford:
Clarendon Press, 1986.

19.

Farebrother, R. W. Linear Least Squares / R. W. Farebrother. — New York and Basel: Marcel Dekker,
Inc., 1988.

20.

Fröberg, C. E. Introduction to Numerical Analysis / C. E. Fröberg. — Reading, Massachusetts ·
Menlo Park, California · London · Don Mills, Ontario: Addison-Wesley, 1969.

21.

Hackbusch, W. Multi-grid methods and applications / W. Hackbusch. – New York: Springer Verlag,
1985.

22.

McCormick, S. F. (Ed.) Multigrid methods / S. F. McCormick. – New York: Marcel Dekker, 1988.

23.

Saad, Y. Iterative Solution of Linear Systems in the 20th Century / Y. Saad, H. Van der Vorst //
J. Comput. Appl. Math.. – 2000. – No. 123. – P. 1–33.

24.

Saad, Y. Iterative Methods for Sparse Linear Systems / Y. Saad. – 2nd ed. – SIAM, 2003.

25.

Shewchuk, J. An Introduction to the Conjugate Gradient Method without the Agonizing Pain /
J. Shewchuk. – Technical Report No. CMU-CS-94-125. – Carnegie Mellon University, 1994.

26.

Van der Vorst, H. Iterative Krylov Methods for Large Linear Systems / H. Van der Vorst. –
Cambridge: Cambridge University Press. – 2003.

27.

Verkhovsky, B. Algorithm with Nonlinear Acceleration for a System of Linear Equations /
B. Verkhovsky. – Research Report. – No. 76-WR-1. – Princeton University, 1976.

28.

Veroy (now Verkhovsky), B. Convergence and Complexity of Aggregation–Disaggregation Algorithm
/ B. Veroy (now Verkhovsky). – Research Report. – No. CS-87-04. – New Jersey Instituteof
Technology, 1987.

29.

Verkhovsky, B. Feedback Algorithm for the Single-facility Minisum Problem / B. Verkhovsky,
Yu. Polyakov // Annals of the European Academy of Sciences. – 2003. – P. 127–136.

30.

Watkins, D. S. The Matrix Eigenvalue Problem: GR and Krylov Subspace Methods / D. S. Watkins.
– SIAM, 2007.

31.

Wesseling, P. An Introduction to Multigrid Methods / P. Wesseling. – Chichester: John Wiley &
Sons, 1992.

422

БИБЛИОГРАФИЧЕСКИЙ СПИСОК
Литература по вопросам методики
32.

Агентство Стратегических Инициатив РФ (АСИ РФ http://www.asi.ru). А. Современные технологии проектно-ориентированного образования http://cdiorussia.ru/app/data/uploads/2013/12/Gusev ASI.pdf,
Б. Инициатива “Инженерного проектного образования CDIO” http://cdiorussia.ru/app/data/uploads/2013/12/Presentation CDIO Gusev
Glavnaya.pdf.

33.

Апостолова, Н. А. О программометрическом подходе к оценкам программного обеспечения /
Н. А. Апостолова, Б. С. Гольдштейн, Р. А. Зайдман // Программирование. – 1995. – С. 38–44.

34.

Джонс, Дж. К. Методы проектирования. Пер. с англ. 2-е изд., доп. / Дж. К. Джонс. – М.: Мир,
1986.

35.

Реньи, А. Трилогия о математике / А. Реньи. – М.: Мир, 1980.

36.

Семушин, И. В. Модификация поведения студента и преподавателя инженерных дисциплин /
И. В. Семушин, В. В. Угаров // Московское научное обозрение. – 2013. – № 9(37). – С. 3–8.

37.

Семушин, И. В. Опыт проектно-ориентированного обучения в университетах Ульяновска /
И. В. Семушин, В. В. Угаров, Ю. В. Цыганова, А. И. Афанасова, И. Н. Куличенко // Перспективные информационные технологии (ПИТ 2014): труды Международной научно-технической
конференции / под ред. С. А. Прохорова. – Самара: Издательство Самарского научного центра
РАН, 2014. – С. 436–438.

38.

Семушин, И. В. Практикум по методам оптимизации – Компьютерный курс / И. В. Семушин.
– Ульяновск: УлГТУ, 2003.

39.

Семушин, И. В. Практикум по методам оптимизации. Компьютерный курс: учебное пособие
для вузов / И. В. Семушин. – 3-е изд, перераб. и доп. – Ульяновск: УлГТУ, 2005.

40.

Семушин, И.В. Методы вычислений с использованием МАТЛАБ: учебно-методическое пособие / И. В. Семушин, Ю. В. Цыганова, А. И. Афанасова. – Ульяновск: УлГУ, 2014. – 88 с.

41.

Угаров, В. В. Компьютерные модели и пакеты программ в проектно-ориентированном обучении / В. В. Угаров. Диссертация канд. техн. наук. – Ульяновск: УлГУ, 2005.

42.

Холстед, М. Х. Начала науки о программах / М. Х. Холстед. Пер. с англ. В. М. Юфы. – М.:
Финансы и статистика, 1981.

43.

The CDIO Initiative http://www.cdio.org/. CDIO [Conceive - Design - Implement - Operate] –
Современный подход к инженерному образованию http://cdiorussia.ru/.

44.

Dewey, J. The school and society / J. Dewey. – Chicago: University of Chicago, 1900.

45.

Dumestre, J. Using computer gaming technologies to make training and education software more
effective / Jeanie Dumestre // Proceedings of SimTecT-97. – 1997. – P. 447–451.

46.

Fitzpatrick, J. M. Computer Programming with Matlab / J. Michael Fitzpatrick & Ákos Lédeczi. –
Fitzle LLC, 2013.

47.

Jonassen, D. H. Computers in the schools: Mindtools for critical thinking / D. H. Jonassen. – College
Park, PA: Penn State Bookstore, 1994.

423

БИБЛИОГРАФИЧЕСКИЙ СПИСОК
48.

Kilpatrick, W. H. The project method / W. H. Kilpatrick // Teachers College Record. – 1918. –
No. 19. – P. 319–335.

49.

Liu, M. Middle school students as multimedia designers: a project-based learning approach / Min
Liu, Yu-Ping Hsiao // Jl. of Interactive Learning Research. – 2002. – No. 13(4). – P. 311–337.

50.

McDermott, K. J., et al. Project-based Teaching in Engineering Programs / Kevin J. McDermott,
Andrew Nafalski and Özdemir Göl // 37th ASEE/IEEE Frontiers in Education Conference, Session
S1D-11, October 10–13, 2007, Milwaukee, WI.

51.

Measuring the Mathematics Problem / Report by • The Learning and Teaching Support Network
(Maths, Stats & OR) • The Institute of Mathematics and its Applications • The London
Mathematical Society • The Engineering Council, Published by the Engineering Council: June 2000.

52.

Semoushin, I. V. The frontal competitive approach to teaching computational mathematics /
Innokenti V. Semushin. Presented for The 9rmth International Congress on Mathematics Education
(ICME-9). July 31 – August 6, 2000, Tokyo/Makuhary, Japan.

53.

Semoushin, I. V. FCA + PBL = behavior modification in learning operations research / Innokenti
V. Semoushin. MAA Session on Teaching Operations Research in the Undergraduate Classroom.
January 7–10, 2004, Phoenix, Arizona.

54.

Semoushin, Innokenti V. Computational and soft skills development through the project based
learning / Innokenti V. Semoushin, Julia V. Tsyganova, and Vladimir V. Ugarov // Lecture Notes
in Computer Science. – 2003. – Vol. 2658, Pt. 2. – P. 1098–1106.

55.

Semoushin, I. V. The frontal competitive approach to teaching computational mathematics /
Innokenti V. Semoushin // The 2nd International Conference on the Teaching Mathematics (at
the undergraduate level), 1–6 July 2002, Crete, Greece. – 2002. – , CD-ROM Proceedings. – File
ID265.

56.

Semoushin, I. V. Project based learning in computational science and engineering / I. V. Semoushin,
Ju. V. Tsyganova, V.V. Ugarov // Математические методы и информационные технологии в
экономике, социологии и образовании. Сборник научных трудов: В. И. Левин (ред.) Международная конференция «Математические методы и информационные технологии в экономике,
социологии и образовании». – 2003. Пенза: Пензенский Дом Знаний. – С. 244–245.

57.

Tackling the Mathematics Problem / London Mathematical Society, Institute of Mathematics and
its Applications, Royal Statistical Society, October 1995.

58.

Thomas, J. W. (2000). A review of research on project-based learning / J. W. Thomas // – Retrieved
December, 10, 2000, from: http://www3.autodesk.com/adsk/index/0„327082-123112,00.html.

424

Предметный указатель
А
академический программный продукт, АПП
(academic software product) 41
алгоритм
– векторных сумм (vector sums algorithm) 331
– Джозефа скаляризованный (scalarized Joseph
algorithm) 406
– Донггарры–Айзенштата (Dongarra–Eisenstat
algorithm) 342
– Калмана скаляризованный (scalarized Kalman
algorithm) 405
– Калмана стабилизированный (stabilized Kalman
algorithm) 406
– Калмана стандартный (standard Kalman
algorithm) 403
– LŪ компактной схемы Краута (Crout compact
schemata, LŪ algorithm) 95, 97
– L̄U компактной схемы Краута (Crout compact
schemata, L̄U algorithm) 97
– Крылова с предобуславливанием (Krylov
algorithm with preconditioning) 366
– метода Жордана (Jordan method algotithm) 97,
99
– обратной подстановки (back substitution
algorithm) 331
– Поттера (Potter algorithm) 407
– прямой подстановки (forward substitution
algorithm) 333
– столбцовый (column algorithm) 331
– фильтра Поттера (Potter filter algorithm) 407
– Хаусхолдера столбцово ориентированный
(column based Hausholder algorithm) 175
– Хаусхолдера строчно ориентированный (row
based Hausholder algorithm) 175

В
вариационные методы (variation methods) 360
ведущий столбец
– в преобразовании Гивенса (leading column in
Givens transform) 181
– в преобразовании Хаусхолдера (leading column
in Hausholder transform) 173
векторные регистры (vector registers) 323
выбор ведущего (главного) элемента (pivoting) 93
– по активной подматрице (active submatrix based
pivoting) 92
– по столбцу (column based pivoting) 91, 318
– по строке (row based pivoting) 91
– разреженной матрицы оптимальный (optimal
sparse matrix pivoting) 382
Г
Галилей (Galilei) 5, 6
Гаусс (Gauss) 168
Грама–Шмидта (Gram–Schmidt)

ортогонализация
(Gram-Schmidt
orthogonalization) 190, 191
– – модифицированная (modified Gram-Schmidt
orthogonalization) 192
Д
Джебран (Gibran) 5, 6
диагональное преобладание (diagonal prevaling)
136
З

задача
– линейных наименьших квадратов (linear least
Б
squares problem) 168
– QR-разложения матрицы (problem of matrix
базовая арифметика C# (C# basic arithmetics) 53
QR-decomposition) 192
бидиагонализация квадратной матрицы (square заполнение локальное (local filling) 381
защита проекта (project defense) 50
matrix bidiagonalization) 188

ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ
И
инициатива CDIO (CDIO initiative) 30
исключение
– по столбцам (column based elimination) 92
– по строкам (row based elimination) 93
– гауссово по строкам (Gauss row based elimination
with row based pivoting) 93
– полное (full elimination) 97
итерационный метод (ИМ) (iterative method) 351,
360
– Зейделя (iterative Seidel method) 353
– многошаговый (multi step iterative methods) 354
– нестационарный (non-stationary IM) 352, 355
– неявный (indirect IM) 351
– одношаговый (one-step iterative methods) 354
– – стационарный в терминах погрешности (onestep stationary IM in terms of errors) 356
– стационарный (stationary IM) 352, 355
– явный (direct method) 351
– Якоби (iterative Jacobi method) 353
информационная форма последовательного
МНК (information form of sequential LS
method) 401
итерационная формула (iteration formula) 352
К
квадратичная (квадратическая) форма (quadratic
form) 135
квадратный корень матрицы (matrix square root)
136
каноническая
форма
одношагового
ИМ
(canonical form of one-step iterative
method) 355
ковариация (covariation) 397
компактная схема (compact schemata) 94
– Краута (Crout compact schemata) 94
конвейеризация (conveyerization) 320
коэффициенты
корреляции
(correlation
coeffitients) 136
критерий

качества
квадратический
(quadratic
performance criterion) 168
– остановки (stopping criterion) 352
– Сильвестера (Silvester criterion) 136
Л
Лежандр (Legendre) 168

426

М
матрица
– идемпотентная (idempotent matrix) 171
– информационная (information matrix) 397
– ковариационная (covariation matrix) 397
– лидирующая (leading matrix) 355
– обратная (inverse matrix) 101
– ортогональная (orthogonal matrix) 166
– перестановок (purturbation matrix) 90
– – элементарная (elementary purturbation matrix)
90
– переходная погрешности (error transition matrix)
357
– плохо обусловленная (ill-conditioned matrix)
107, 359
– положительно определенная (positive definite
matrix) 135
– псевдообратная (pseudo-inverse matrix) 168, 389
– симметрическая (symmetric matrix) 171
– Хаусхолдера (Hausholder matrix) 171
– элементарная (elementary matrix) 97
– – специальная (special elementary matrices) 98
метод
– верхней релаксации (Succesive Over-Relaxation,
SOR method) 355
– Гаусса, полный шаг (full step of Gauss method)
88
– Гаусса, прямой ход (forward move of Gauss
method) 89
– Гаусса, обратный ход (back move of Gauss
method) 90
– делинеаризации (delinearization method) 366
– минимальных невязок (minimum residual
method) 360
– – поправок (minimum correction method) 361
– многосеточный (multi-grid method) 366
– наименьших квадратов (МНК) (least squares
method) 168, 196
– проектов (project method) 29
– простой итерации (simple iteration method) 355
– Ричардсона (Richardson method) 355
– скорейшего спуска (quickest descent method)
363
– сопряженных градиентов (conjugate gradients
method) 363
– Юнга (Young method) 355
методика Холстеда (Halstead method) 43
миноры, главные (main minors) 88

ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ
модификации
– немедленные (immediate modifications) 327
– отложенные (delayed modifications) 328
Н
направляющий вектор (direction vector) 170
невязка (residual) 168, 360
норма вектора (vector norm) 357
– обобщенная (generalized vector norm) 357
норма
матрицы
типа
«бесконечность»
(«infinity» matrix norm) 111
нормализованная погрешность (normalized error)
397
нормализованные экспериментальные данные
(normalized experimental data) 396
нормальная система (normal system) 168, 196, 389
нормальное псевдорешение (normal pseudosolution) 169, 196, 389
нормальные уравнения (normal equations) 168,
196, 389
нормировка (norming) 87
О
обновление
– системы (system update) 88
обратная подстановка (back substitution) 331
обращение верхней треугольной матрицы
(inverting upper triangular matrix) 177
окаймление (bordering) 339
– известной части LU -разложения (bordering the
known part of LU decomposition) 340
– неизвестной части LU -разложения (bordering
the unknown part of LU decomposition)
342
оптимальный итерационный параметр (optimal
iteration parameter) 358
ортогонализация (orthogonalization) 190
отраженный вектор (reflected vector) 170
оценка
качества
программных
продуктов
(software project evaluation technique) 39

– округления (roundoff error) 352
– трансформированная (transform error) 352
подстановка
– прямая (forward substitution) 89, 317
– обратная (back substitution) 89, 170, 317, 331
поправка ИМ (correction of IM) 361
порядок оценивания проектов (instruction for
project evaluation) 49
предупреждение
– о термине LŪ −1 -«разложение» (LŪ −1
«decomposition» term precaution) 100
– о термине L̄−1 U -«разложение» (L̄−1 U
«decomposition» term precaution) 101
преобразование
– Хаусхолдера (Hausholder transform) 170
– Гивенса (Givens transform) 179
– – строчно-ориентированное (row based Givens
transform) 183
– – столбцово-ориентированное (column based
Givens transform) 183
проекто-ориентированная методика, преимущества (project based philosophy) 33
проекто-ориентированное обучение (project based
learning) 29, 30, 39
проекция вектора (vector projection) 170
пространство
– Крылова (Krylov space) 365
процедура ортогонализации системы векторов (vector system orthogonalization
procedure) 190
Р

разложение
– LU (LU -decomposition) 87
– LŪ (LŪ -decomposition) 89
– – гауссовым исключением по строкам (Gauss
LŪ decomposition with row based
elimination) 94
– – жордановым исключением, LŪ −1 «разложение» («LŪ −1 decomposition»
A = LŪ by Jordan method) 101
– – с выбором главного элемента (LŪ
decomposition with pivoting) 92
П
– L̄U (L̄U -decomposition) 89, 90
переопределенная
система
(overdetermined – – с выбором главного элемента (L̄U
system) 196
decomposition with pivoting) 92
перестановка неявная (indirect interchanging) 318 – Холесского (Cholesky decomposition) 137
– – нижнее треугольное (lower triangular Cholesky
погрешность
decomposition) 137
– методическая (method error) 351

427

ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ
– – – без квадратных корней (square root free
lower triangular Cholesky decomposition)
138
– – верхнее треугольное (upper triangular Cholesky
decomposition) 138
– – – без квадратных корней (square root free
upper triangular Cholesky decomposition)
139
расширенная система (extended system) 398
расщепление системы (system splitting) 400
решение
– задачи наименьших квадратов (МНК-решение)
(least squares solution) 388
– – одновременное (LS-simutaneous solution) 390
– – последовательное (LS-sequential solution) 400
С
свойство
– идемпотентности (idempotency feature) 91
– несмещенности (unbiasedness property) 397
– ортогональности (orthogonality feature 91
скалярное произведение (scalar product) 331
скалярный параметр (scalar parameter) 351
спектральный радиус матрицы (spectral radius of
matrix) 357
степень параллелизма (parallelization power) 320
– средняя (mean parallelization power) 320
специализированная программа для автоматического определения качественных
характеристик программных продуктов
(customized application for automatic
academic code review) 45
стратегии выбора ведущего (главного) элемента
(pivoting strategies) 91
сходимость итерационного метода (convergence
of iterative method) 357
Т
таблица множителей (table of multipliers) 99
теорема
– о верхнем треугольном разложении Холесского
(upper triangular Cholesky decomposition)
138
– о нижнем треугольном разложении Холесского
(lower triangular Cholesky decomposition)
137
– о триангуляризации матрицы по методу
Хаусхолдера (matrix triangularization by

428

Hausholder transform) 172, 173
– о триангуляризации матрицы по методу Гивенса (matrix triangularization by Givens
transform) 181
требование к реализации (implementation
requirement) 93
триада (triada) 318
триангуляризация матрицы
– метод Хаусхолдера (Hausholder) 172, 173
– метод Гивенса (Givens) 181
тридиагонализация симметрической матрицы
(symmetric matrix tridiagonalization) 187
У
упакованная форма матрицы (packed matrix
forms) 379
уравнение
– ведущее (pivot equation) 87
условие полного столбцового ранга (full column
rank condition) 168
Ф
фильтр
– Калмана (Kalman filter) 403
– – обыкновенный (the conventional Kalman filter)
403
– – стандартный ковариационный (standard
Kalman covariance filter, SCF) 403
– Поттера квадратно-корневой (Potter Square
Root Filter) 407
фронтально-состязательный
подход (frontal
competitive approach) 34
Х
хранение матриц одномерное (linear
dimension) matrix storing) 146

(one

Э
элиминативная форма обратной матрицы
(eliminative form of inverse matrix) 102
экономия памяти (saving memory) 89
элемент
– ведущий (pivot) 87
– главный (pivot) 90
– допустимый (feasible element) 381

Учебное издание
Семушин Иннокентий Васильевич
Цыганова Юлия Владимировна
Воронина Валерия Вадимовна
Угаров Владимир Васильевич
Афанасова Анастасия Игоревна
Куличенко Илья Николаевич
ВЫЧИСЛИТЕЛЬНАЯ ЛИНЕЙНАЯ АЛГЕБРА
В ПРОЕКТАХ НА C#
Учебное пособие
Редактор М. В. Теленкова
ЛР № 020640 от 22.10.97
Оригинал-макет изготовлен И. В. Семушиным в системе LATEX2ε
Подписано в печать 16.12.2014. Формат 60×84/16. Усл. печ. л. 25,11.
Гарнитура Computer Modern. Тираж 150 экз. Заказ № 6. ЭИ № 366.
Ульяновский государственный технический университет
432027, г. Ульяновск, ул. Северный Венец, д. 32.
ИПК «Венец» УлГТУ, 432027, г. Ульяновск, ул. Северный Венец, д. 32.

2