- •Содержание
- •1. Основные понятия и определения
- •1.1. Структура персональной ЭВМ
- •1.2. Размещение данных и программ в памяти ПЭВМ
- •1.3. Программные модули
- •1.4. Ошибки
- •1.5. Функциональная и модульная декомпозиции
- •1.6. Файловая система хранения информации
- •1.7. Операционная система
- •2. Понятие алгоритмов и способы их описания
- •2.1. Свойства алгоритмов
- •2.2. Способы описания алгоритмов
- •3. Базовые элементы языка Cи
- •3.1. Алфавит языка
- •3.2. Лексемы
- •3.3. Идентификаторы и ключевые слова
- •3.4. Знаки операций
- •3.5. Литералы (константы)
- •3.6. Комментарии
- •4. Базовые типы объектов
- •4.1. Простейшая программа
- •4.2. Основные типы данных
- •4.3. Декларация объектов
- •4.4. Данные целого типа (int)
- •4.5. Данные символьного типа (char)
- •4.6. Данные вещественного типа (float, double)
- •5. Константы в программах
- •5.1. Целочисленные константы
- •5.2. Константы вещественного типа
- •5.3. Символьные константы
- •5.4. Строковые константы
- •6. Обзор операций
- •6.1. Операции, выражения
- •6.2. Арифметические операции
- •6.3. Операции присваивания
- •6.4. Сокращенная запись операции присваивания
- •6.5. Преобразование типов операндов арифметических операций
- •6.6. Операция приведения типа
- •6.7. Операции сравнения
- •6.8. Логические операции
- •6.9. Побитовые логические операции, операции над битами
- •6.10. Операция «,» (запятая)
- •7. Обзор базовых инструкций языка Си
- •7.1. Стандартная библиотека языка Си
- •7.2. Стандартные математические функции
- •7.3. Функции вывода данных
- •7.4. Функции ввода информации
- •7.5. Ввод - вывод потоками
- •8. Синтаксис операторов языка Cи
- •8.1. Условные операторы
- •8.2. Условная операция «? :»
- •8.3. Оператор выбора альтернатив (переключатель)
- •9. Составление циклических алгоритмов
- •9.1. Понятие цикла
- •9.2. Оператор с предусловием while
- •9.3. Оператор цикла с постусловием do – while
- •9.4. Оператор цикла с предусловием и коррекцией for
- •10. Операторы передачи управления
- •10.1. Оператор безусловного перехода goto
- •10.2. Оператор continue
- •10.3. Оператор break
- •10.4. Оператор return
- •11.1. Операции над указателями (косвенная адресация)
- •11.2. Ссылка
- •12. Массивы
- •12.1. Одномерные массивы
- •12.2. Многомерные массивы
- •12.3. Операция sizeof
- •12.4. Применение указателей
- •12.5. Указатели на указатели
- •13. Работа с динамической памятью
- •13.1. Пример создания одномерного динамического массива
- •13.2. Пример создания двухмерного динамического массива
- •14. Строки в языке Си
- •14.1. Русификация под Visual
- •15. Функции пользователя
- •15.1. Декларация функции
- •15.2. Вызов функции
- •15.3. Операция typedef
- •15.4. Указатели на функции
- •16. Классы памяти и области действия объектов
- •16.1. Автоматические переменные
- •16.2. Внешние переменные
- •16.3. Область действия переменных
- •17. Структуры, объединения, перечисления
- •17.1. Структуры
- •17.2. Декларация структурного типа данных
- •17.3. Создание структурных переменных
- •17.4. Вложенные структуры
- •17.5. Массивы структур
- •17.6. Размещение структурных переменных в памяти
- •17.7. Объединения
- •17.8. Перечисления
- •18. Файлы в языке Си
- •18.1. Открытие файла
- •18.2. Закрытие файла
- •18.3. Запись – чтение информации
- •18.4. Текстовые файлы
- •18.5. Бинарные файлы
- •Литература
- •Приложение 1. Таблицы символов ASCII
- •Приложение 2. Операции языка Си
- •Приложение 3. Возможности препроцессора
- •1. Вид рабочего стола консольного приложения Visual C++
- •2. Создание нового проекта
- •3. Добавление к проекту файлов с исходным кодом
- •4. Компиляция, компоновка и выполнение проекта
- •5. Конфигурация проекта
- •6. Открытие существующего проекта
- •Приложение 5. Некоторые возможности отладчика Visual C++
- •1. Установка точки прерывания
- •2. Пошаговое выполнение программы
- •3. Проверка значений переменных во время выполнения программы
- •4. Окна Auto и Watch 1
- •5. Программные средства отладки
- •ЧАСТЬ 2
- •1. Системы счисления
- •1.1. Общие определения
- •1.2. Алгоритмы перевода из одной системы счисления в другую
- •2. Организация памяти и структуры данных
- •3. Линейные списки и рекурсия
- •4. Динамическая структура данных – СТЕК
- •5. Динамическая структура данных – ОЧЕРЕДЬ
- •6. Двунаправленный линейный список
- •7. Построение обратной польской записи
- •8. Нелинейные структуры данных
- •Пояснение к программе
- •9. Понятие хеширования
- •9.1. Хеш-функция и хеш-таблица
- •9.2. Схемы хеширования
- •10. Элементы теории погрешностей
- •10.1. Методы реализации математических моделей
- •10.2. Источники погрешностей
- •10.3. Приближенные числа и оценка их погрешностей
- •10.4. Прямая задача теории погрешностей
- •10.5. Обратная задача теории погрешностей
- •10.6. Понятия устойчивости, корректности и сходимости
- •11. Вычисление интегралов
- •11.1. Формулы численного интегрирования
- •11.2. Формула средних
- •11.3. Формула трапеций
- •11.4. Формула Симпсона
- •11.5. Схема с автоматическим выбором шага по заданной точности
- •12. Методы решения нелинейных уравнений
- •12.1. Итерационные методы уточнения корней
- •12.2. Метод Ньютона
- •12.3. Метод секущих
- •12.4. Метод Вегстейна
- •12.5. Метод парабол
- •12.6. Метод деления отрезка пополам
- •13. Решение систем линейных алгебраических уравнений
- •13.1. Прямые методы решения СЛАУ
- •13.2. Метод Гаусса
- •13.3. Метод прогонки
- •13.4. Метод квадратного корня
- •13.5. Итерационные методы решения СЛАУ
- •13.6. Метод простой итерации
- •14. Поиск и сортировка
- •14.1. Последовательный поиск в массиве
- •14.2. Барьерный последовательный поиск
- •14.3. Сортировка вставками (включениями)
- •14.4. Двоичный поиск
- •14.5. Сортировка выбором
- •14.6. Алгоритмы сортировки выбором
- •14.7. Сортировка обменом
- •14.8. Быстрая сортировка
- •15. Обработка статистических данных
|
|
|
Начало |
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
А |
B |
C |
|
|
|
|
n, A, br |
|
|
|
|||
I цикл |
2 |
|
k = 1, n-1 |
|
|
IV цикл |
14 |
m = k+1, n |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
3 |
p = k |
максимальногоПоиск ведущегоэлемента |
|
15 |
c = amk /akk |
|
|
II цикл |
4 |
|
6 |
p = m |
|
16 bm = bm - c bk |
||||
|
m = k+1, n |
|
|
|
||||||
нет |
5 |
|apk|<|amk| |
|
|
V цикл |
17 |
i = k, n |
|
||
|
|
|
|
|
||||||
|
|
|
|
|
|
18ami = ami - c aki |
||||
|
|
|
|
да |
|
|
|
|||
III цикл |
7 |
|
|
|
|
|
|
19 xn = bn / ann |
|
|
|
|
j = k, n |
|
|
VI цикл |
20 k = n-1,1,(-1) |
||||
|
|
|
8 |
|
|
|||||
|
|
|
r = akj |
Перестановка |
|
|
|
21 s = 0 |
|
|
|
|
|
10 apj = r |
|
|
|
|
|||
|
|
|
9 akj = apj |
|
|
VII цикл |
22 |
i = k+1, n |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23 s = s + aki xi |
||
|
|
|
11 |
r = bk |
Перестановка |
членовсвободных |
|
24 xk = (bk - s)/akk |
||
|
|
|
12 bk = bp |
|
||||||
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
||
|
|
|
13 bp = r |
|
|
|
25 |
Решение xr |
|
|
|
А |
|
B |
C |
|
|
|
Конец |
|
|
|
|
|
|
|
|
|
||||
|
|
Рис. 8. Блок-схема модифицированного метода Гаусса |
13.3. Метод прогонки
Приведение матрицы к верхнему треугольному виду
Обратный ход метода Гаусса
Данный метод является модификацией метода Гаусса для частного случая разреженных систем − систем с матрицей трехдиагонального типа (краевая задача ДУ). Каноническая форма их записи
181
|
|
; a1 = cn = 0, |
(13.9) |
aixi−1 + bixi + cixi+1 = di; i=1,n |
или в развернутом виде
b1x1 + c1x2
a2x1 + b2x2 + c2x3
a3x2 + b3x3 + c3x4
=d1;
=d2;
=d3;
. . .
(13.10)
an−1xn−2 + bn−1xn−1 + cn−1xn= dn−1; |
|
anxn−1 + bnxn |
= dn . |
При этом, как правило, все коэффициенты bi ≠ 0.
Метод реализуется в два этапа − прямой и обратный ходы.
Прямой ход. Каждое неизвестное xi выражается через xi+1 |
|
xi = Ai xi+1 + Bi для i = 1,2, ..., n−1, |
(13.11) |
посредством прогоночных коэффициентов Ai и Bi. Определим алгоритм их вычисления.
Из первого уравнения системы (13.10) находим x1
x1 =− c1 x2 + d1 . b1 b1
Из уравнения (13.11) при i=1:
A1 =− c1 ; b1
x1 = A1 x2 |
+ B1 . Следовательно |
||
B = |
d1 |
. |
(13.12) |
|
|||
1 |
b |
|
|
|
1 |
|
|
Из второго уравнения системы (10) определяем x2 через x3, подставляя найденное значение x1
а2 ( A1 x2 + B1) + b2 x2 + c2 x3 = d2 , |
|
||||
откуда |
|
− c2 x3 +d2 −a2 B1 |
|
|
|
x2 |
= |
; |
(13.13) |
||
|
|||||
|
|
a2 A1 +b2 |
|
и согласно (13.11) при i=2:
A2 =− c2 ; e2
x2 = A2 x3 + B2 , следовательно
B = |
d2 −a2 B1 |
, где е2 = а2 А1 + b2 . |
|
||
2 |
e2 |
|
|
|
Ориентируясь на соотношения индексов при коэффициентах (13.12) и
(13.13) |
можно получить эти соотношения для общего случая |
||||||||
A =− |
ci |
; |
B |
= |
di −ai Bi−1 |
, где еi = аi Аi−1 + bi (i=2,3, ..., n−1) . (13.14) |
|||
|
|
||||||||
i |
|
ei |
i |
|
ei |
||||
|
|
|
|
||||||
Обратный ход. Из последнего уравнения системы (13.10) с использованием |
|||||||||
(13.11) |
при i=n−1 |
|
|
|
|
dn −an Bn−1 |
|
||
|
|
|
|
|
|
|
xn = |
. |
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
bn + an An−1 |
182
Далее посредством (13.11) и прогоночных коэффициентов (13.12), (13.13) последовательно вычисляем xn−1, xn−2, ..., x1.
При реализации метода прогонки нужно учитывать, что при условии
| bi | ≥ | ai | + | ci | , |
(13.15) |
или хотя бы для одного bi имеет место строгое неравенство (13.15), деление на «0» исключается и система имеет единственное решение.
Заметим, что условие (13.15) является достаточным, но не необходимым. Схема алгоритма метода прогонки может иметь вид, представленный на
рис. 9.
Начало |
A |
n,ar,br,cr,dr |
xn = (dn - an Bn-1)/ |
|
(bn + an An-1) |
A1 = -c1/b1 |
i = n-1, 1,(-1) |
|
|
|
B1 = d1/b1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
xi = Ai xi+1 +Bi |
|
|||||
|
|
|
|
|
|
|
|
|
||||
|
|
i = 2, |
n-1, 1 |
|
||||||||
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
z = bi + ai Ai-1 |
|
|
|
|
|
|
|
r |
|
|
|
|
|
|
|
|
|
|
Решение x |
|
|||
|
|
|
|
|
|
|
||||||
|
|
Ai = -ci/z |
|
|
|
|
Конец |
|
||||
|
|
|
|
|
|
|
|
|
||||
|
|
Bi = (di - ai Bi-1)/z |
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
A
Рис. 9. Блок-схема метода прогонки
13.4. Метод квадратного корня
Данный метод используется для решения линейной системы
A x = |
|
, |
(13.16) |
b |
|||
у которой матрица А симметрическая, т.е. АТ = А, |
aij = aji (i=j=1,...,n). |
Решение системы (13.16) осуществляется в два этапа.
Прямой ход. Преобразование матрицы А и представление ее в виде произ-
ведения двух взаимно транспонированных треугольных матриц: |
|
А = S Т S, |
(13.17) |
где |
|
183
|
s11 s12 Ls1n |
|
|
S = |
0 |
s22 Ls2n |
; |
|
|
L |
|
|
0 |
0 Lsnn |
|
Перемножая SТ и S, и приравнивая лы для определения sij :
s |
= |
a |
, s |
=a |
11 |
|
11 |
1 j |
1 j |
|
|
|
i−1 |
|
sii |
= |
aii −∑ski2 , |
||
|
|
|
k=1 |
|
|
|
i−1 |
|
|
|
|
|
|
|
|
|
aij − ∑ski skj |
||
sij |
= |
|
k=1 |
, |
|
sii |
|||
|
|
|
|
|
|
=0, |
|
|
|
sij |
|
|
|
s11 |
0 |
L 0 |
|
ST = |
s21 |
s22 |
L 0 |
. |
|
|
L |
|
|
|
sn1 |
sn2 |
Lsnn |
|
матрице А, получим следующие форму-
/ s11 , ( j >1); (1≤i ≤ n);
(13.18)
(i < j); (i > j).
После нахождения матрицы S системы (13.16) заменяем двумя ей эквивалентными системами с треугольными матрицами (13.17)
ST y = |
|
, |
S x = y . |
b |
Обратный ход. Записываем системы (13.19) в развернутом виде:
s |
y |
=b |
|
; |
|
|
|
|
|
|
|
|
||
|
11 |
1 |
1 |
|
|
|
|
|
|
|
|
|
|
|
s |
y |
+s |
22 |
y |
2 |
=b ; |
|
|
|
|||||
|
12 |
1 |
|
|
|
2 |
|
|
|
|||||
|
|
|
|
|
L |
|
|
|
|
|
|
|||
|
|
|
+s2n y2 +...+snn yn =bn ; |
|||||||||||
s1n y1 |
||||||||||||||
s |
x |
+s |
|
|
x |
2 |
+...+s |
x |
n |
= y ; |
||||
|
11 |
1 |
12 |
|
|
|
1n |
|
1 |
|||||
|
|
|
s22 x2 +L+ s2n xn = y2 ; |
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
L |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
snn xn = yn . |
|||
|
|
|
|
|
|
|
|
|
|
|
Используя (13.20) и (13.21) последовательно находим
|
|
b1 |
|
|
i−1 |
|
||
y1 |
= |
, |
|
yi =(bi −∑ski yk ) / sii ; |
(i >1); |
|||
|
|
|||||||
|
|
s11 |
k=1 |
|
||||
|
|
|
yn |
|
n |
|
||
|
xn = |
, |
xi =( yi − ∑sik xk ) / sii ; |
(i < n). |
||||
|
|
|||||||
|
|
|
snn |
k=i+1 |
|
(13.19)
(13.20)
(13.21)
(13.22)
Метод квадратных корней дает большой выигрыш во времени по сравнению с рассмотренными ранее прямыми методами, так как, во-первых, существенно уменьшает число операций умножения и деления, во-вторых, позволяет накапливать сумму произведений без записи промежуточных результатов.
184
Машинная реализация метода предусматривает его следующую трактовку. Исходная матрица А системы (13.16) представляется в виде произведения трех матриц
A = S Т D S ,
где D − диагональная матрица с элементами dii = ±1; S − верхняя треугольная (sik = 0, если i > k , причем sii > 0); S T − транспонированная нижняя треугольная.
Требование выполнения условия sii > 0 необходимо для полной определенности разложения, определяющее введение диагональной матрицы D с элемента-
ми di = ±1.
Матрицу S можно по аналогии с числами трактовать как корень квадратный из матрицы А, отсюда и название метода.
Итак, если S и D известны, то решение исходной системы A xr=ST D S xr=b сводится к последовательному решению трех систем − двух треугольных и одной диагональной:
r |
r |
r |
ST zr=b; |
D yr=zr; |
S xr= yr. |
(13.23) |
|
=S x . |
|
|
|
|
|||
Здесь z |
=D S x; |
y |
|
|
|
|
|
Нахождение элементов матрицы S (извлечение корня из А) осуществляется |
|||||||
по рекуррентным формулам: |
|
|
|
||||
|
|
|
dk |
|
k−1 |
|
|
|
|
|
= sign akk −∑di sik2 ; |
|
|||
|
|
|
|
|
i=1 |
|
|
|
|
|
|
|
k−1 |
|
|
|
|
|
skk = |
akk −∑di sik2 ; |
|
(13.24) |
|
|
|
|
|
|
i=1 |
|
|
|
|
|
skj |
|
k−1 |
|
|
|
|
|
= akj −∑di sik sij / (skk dk ) ; |
|
|||
|
|
|
|
|
i=1 |
|
|
k = 1, 2, ..., n; |
j = k+1, k+2, ..., n. |
|
В этих формулах сначала полагаем k = 1 и последовательно вычисляем |
||
|
d1 = sign (a11); |
s11 = |a11 | |
и все элементы первой строки матрицы S (s1j, j>1), затем полагаем k = 2, вычисля-
ем s22 и вторую строку матрицы s1j для j>2 и т.д.
Решение систем (13.23) ввиду треугольности матрицы S осуществляется по формулам, аналогичным обратному ходу метода Гаусса:
|
|
b1 |
|
|
i−1 |
|
y1 = |
|
|
, |
yi =(bi −∑dk ski yk ) / (sii di ( ); i =2,3,...,n; |
||
s11d1 |
|
|||||
|
, |
k=1 |
||||
xn = yn |
xi =( yi − ∑sik xk ) / sii ; i = n −1,n − 2,...,1. |
|||||
|
|
|
|
|
|
n |
|
|
snn |
|
|
|
k=i+1 |
Метод квадратного корня почти вдвое эффективнее метода Гаусса, т.к. полезно использует симметричность матрицы.
Схема алгоритма метода квадратного корня представлена на рис. 10 [4].
185
Проиллюстрируем метод квадратного корня, решая систему трех уравне-
ний:
x1 +x2 +x3 = 3; |
1 1 1 |
|
br |
3 |
|||||||
x1 +2x2 +2x3 = 5; |
A = 1 |
2 |
2 |
, |
= 5 . |
||||||
x +2x |
|
+3x |
|
= 6; |
|
2 |
|
|
|
|
|
2 |
3 |
1 |
3 |
|
|
6 |
|||||
1 |
|
|
|
|
|
|
|
|
|
Нетрудно проверить, что матрица А есть произведение двух треугольных матриц (здесь dii = 1):
|
|
|
|
|
|
|
1 1 1 1 0 0 1 1 1 |
|
|
|
|
||||||||||||||||||
|
|
A = 1 2 2 |
= 1 1 0 |
|
× 0 1 1 |
= |
ST S . |
|
|||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
1 2 3 1 1 1 0 0 1 |
|
|
|
|
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Исходную систему запишем в виде |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
1 0 0 |
|
1 1 1 |
|
x |
|
|
|
3 |
|
|||||||||
|
|
S |
T |
|
|
r |
= |
|
|
|
× |
|
|
|
|
|
|
|
× |
|
1 |
|
= |
|
|
||||
|
|
|
|
S x |
1 1 0 |
0 1 1 |
|
x2 |
5 . |
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
1 1 1 |
|
0 0 1 |
|
x |
|
|
|
6 |
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
|
|
|
|
Обозначим |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 1 1 |
|
x |
|
|
|
y |
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
r |
= |
|
0 1 1 |
|
× |
|
1 |
|
= |
|
1 |
|
. |
|
|
|
|||
|
|
|
|
|
|
|
|
|
S x |
|
|
|
x |
2 |
|
|
y |
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
0 0 1 |
|
x |
3 |
|
|
y |
3 |
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Тогда для вектора yr получим систему ST yr = b : |
|
|
|
|
|
|
|
||||||||||||||||||||||
1 0 0 |
|
|
y |
|
|
|
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
1 |
0 |
|
× |
|
1 |
|
= |
|
|
, |
откуда |
|
|
|
y1 = 3; |
|
y2 = 2; |
y3 = 1. |
||||||||||
1 |
|
y2 |
|
5 |
|
|
|
|
|||||||||||||||||||||
1 1 1 |
|
|
|
y |
3 |
|
|
6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Зная yr, решаем систему S x = y : |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
1 1 1 |
|
|
x1 |
|
|
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
0 |
1 |
1 |
|
× |
x |
2 |
|
= |
2 |
, |
откуда |
|
|
|
х1 = 1; |
|
х2 = 1; |
х1 = 1. |
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
0 0 1 |
|
|
x |
3 |
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
186
|
Начало |
|
|||
|
1 |
|
|
|
|
|
|
n, A, br |
|
||
2 |
k = 1, n |
|
|||
|
|
||||
3 |
|
|
= akk |
|
|
|
|
|
|
|
|
4 |
|
k ≠ 1 |
|
нет |
|
|
|
|
|||
|
|
|
|
||
5 |
|
|
да |
|
|
i = 1, k-1 |
|
||||
|
|
||||
6 |
|
= |
- di |
s2ik |
|
7 dk |
= sign( |
) |
|
||
8 |
s |
|
= √| |
| |
|
|
ik |
|
|
|
|
9 |
j = k+1, n |
|
|||
|
|
||||
10 |
|
= akj |
|
|
|
|
|
|
|
|
|
11 |
|
k ≠ 1 |
|
нет |
|
|
|
|
|||
|
|
|
|
||
12 |
|
|
да |
|
|
i = 1, k-1 |
|
||||
|
|
||||
13 |
= |
- di |
sik |
sij |
|
|
|||||
14 |
= |
|
/ (skk dk) |
||
skj |
|
|
|
A |
|
15 y1 = b1 / ( s11 b1) |
|||
16 |
i = 2, n |
|
|
|
17 |
= bi |
|
|
|
|
|
18 |
k = 1, i-1 |
|
|
|
|
||
19 |
= |
- dk yk |
ski |
20 yi = / (skk dk) |
|||
21 xn = yn / snn |
|||
22 i = n-1,1,(-1) |
|
||
|
23 |
= yi |
|
|
|
|
24 |
k = i+1, n |
|
25
= - xk sik
|
|
|
|
|
|
|
|
26 |
|
|
|
|
|
x = |
/ s |
|
|
|
|
|
|
||
|
|
|
i |
ii |
|
|
|
|
|
|
|
27 Решение xr
Конец
A
Рис. 10. Блок-схема метода квадратного корня
187