- •Работает
- •1.1. История создания эвм.
- •1.3. Размещение данных и программ в памяти пэвм.
- •1.4.Файловая система хранения информации
- •1.5.Операционная система.
- •Лекция 2. Как составляются и выполняются программы в системе delphi
- •2.1. Понятие алгоритма и способы его записи
- •2.2. Общая характеристика языка Паскаль
- •2.3. Как составляется программа в системе Delphi
- •2.4. Наша первая программа реализует линейный алгоритм
- •3.1. Данные и их типы.
- •3.2. Операции над переменными основных скалярных типов
- •Алгоритмов
- •4.1. Понятие разветвляющегося алгоритма
- •4.2. Оператор условия if
- •4.3. Оператор выбора Case
- •4.4. Некоторые возможности, предоставляемые Delphi для организации разветвлений
- •Лекция 5. Составление и програмирование циклических алгоритмов
- •5.1. Понятие цикла
- •5.2. Оператор Repeat...Until
- •5.3. Оператор While...Do
- •5.4. Оператор For...Do
- •5.5. Вложенные циклы
- •5.6. Примеры некоторых часто встречающихся циклических алгоритмов Вычисление заданного члена рекуррентной последовательности
- •Вычисления сумм с использованием рекуррентной последовательности
- •6.1. Ошибки на этапе компиляции
- •6.4. Защищенные блоки
- •6.5. Некоторые стандартные типы исключительных ситуаций
- •6.6. Инициирование собственных исключительных ситуаций
- •6.7. Примеры фрагментов программ
- •Лекция 7. Составление программ с использованием массивов
- •7.1. Понятие массива
- •7.2. Некоторые возможности ввода-вывода в Delphi
- •7.3. Примеры часто встречающихся алгоритмов работы с массивами Сумма n элементов одномерного массива:
- •Произведение диагональных элементов квадратной матрицы:
- •Нахождение максимального элемента одномерного массива:
- •8.1. Статическое и динамическое распределение оперативной памяти
- •8.2. Понятие указателя
- •8.3. Наложение переменных
- •8.4. Динамическое распределение памяти
- •8.5. Организация динамических массивов
- •9.1. Понятие подпрограммы
- •9.2. Описание подпрограмм
- •9.3. Передача данных между подпрограммой и вызывающей ее программой
- •9.4. Оформление подпрограмм в библиотечный модуль
- •9.5. Примеры подпрограмм, оформленных в отдельные библиотечные модули
- •Пример программы, использующей модуль RabMas:
- •Множества
- •10.1. Понятие множества
- •10.2. Операции над множествами
- •10.3. Примеры работы с множествами
- •Interface
- •11.1. Зачем нужны строки
- •11.2. Описание переменных строкового типа «Короткие строки»
- •11.3. Основные операции над переменными строкового типа
- •11.4. Некоторые процедуры и функции обработки строк
- •11.5. Примеры алгоритмов обработки строк
- •Лекция 12. Программирование с использованием записей
- •12.1. Понятие записи
- •12.2. Операции над записями
- •12.3. Использование записей для работы с комплексными числами
- •13.1. Понятие файла
- •13.2. Операции над файлами
- •13.2.1. Типизированные файлы
- •13.2.2. Текстовые файлы
- •13.3. Подпрограммы работы с файлами
- •13.4. Компоненты tOpenDialog и tSaveDialog
- •Лекция 14. Программирование с отображением графической информации
- •14.1. Как рисуются изображения
- •14.2. Построение графиков с помощью компонента tChart
- •Лекция 15. Программирование с использованием рекурсии
- •15.1. Понятие рекурсии
- •15.2. Примеры рекурсивных вычислений
- •16.1. Организация работы с базами данных
- •16.2. Поиск в массиве записей
- •16.3. Сортировка массивов
- •16.3.1. Метод пузырька
- •16.3.2. Метод прямого выбора
- •16.3.3. Метод Шелла
- •16.3.4. Метод Хоара (Hoare)
- •17.1. Работа со списками
- •17.2. Добавление нового элемента в список на заданную позицию
- •17.3. Удаления элемента с заданным номером
- •17.4. Пример программы
- •Лекция 18. Связанные списки на основе рекурсивных данных
- •18.1. Что такое стек и очередь
- •18.2. Понятие рекурсивных данных и однонаправленные списки
- •18.3. Процедуры для работы со стеками
- •18.4. Процедуры для работы с односвязными очередями
- •18.5. Работа с двухсвязными очередями
- •18.6. Процедуры для работы с двусвязными очередями
- •19.1. Основные понятия и определения
- •19.2. Прямые методы решения слау
- •19.3. Итерационные методы решения слау
- •20.1. Зачем нужна аппроксимация функций?
- •20.3. Какие бывают многочлены и способы интерполяции?
- •20.4. Что такое среднеквадратичная аппроксимация?
- •20.5. Метод наименьших квадратов (мнк)
- •21.1. Формулы численного дифференцирования
- •21.2. Формулы численного интегрирования
- •22.1. Как решаются нелинейные уравнения
- •22.2. Итерационные методы уточнения корней
- •22.2.2. Метод Ньютона
- •23.1. Постановка задач оптимизации, их классификация
- •23.2. Методы нахождения минимума функции одной переменной
- •24.1. Задачи для обыкновенных дифференциальных уравнений
- •24.2. Основные положения метода сеток для решения задачи Коши
- •24.3. Многошаговые схемы Адамса
- •Литература
19.2. Прямые методы решения слау
19.2.1 Метод Гаусса
Метод основан на приведении с помощью преобразований, не меняющих решение, исходной СЛАУ (19.1) с произвольной матрицей к СЛАУ с верхней треугольной матрицей вида
aUxi + а12 x2 + ... + ainxn = b1
a22 x2 + ... + a2nxn = b2
(19.2)
aix
nn n
b'
Этап приведения к системе с треугольной матрицей называется прямым ходом метода Гаусса.
Решение системы с верхней треугольной матрицей (19.2), как легко видеть, находится по формулам, называемым обратным ходом метода Гаусса:
a
кк
i=к+1
akixi
к
n
1,
n
1.. (19.3)
Прямой ход метода Гаусса осуществляется следующим образом: вычтем из каждого /72-го уравнения (m=2..n) первое уравнение, умноженное на am1I a11, и вместо m-го уравнения оставим полученное. В результате в матрице системы исключаются все коэффициенты 1-го столбца ниже диагонального. Затем, используя 2-е полученное уравнение, аналогично исключим элементы второго столбца (m=3..n) ниже диагонального и т.д. Такое исключение называется циклом метода Гаусса. Проделывая последовательно эту операцию с расположенными ниже k-го уравнениями (к=1, 2 n-1), мы приходим
к системе вида (19.2). При указанных операциях решение СЛАУ не изменяется.
На каждом k-м шаге преобразований прямого хода элементы матриц изменяются по формулам прямого хода метода Гаусса:
a
ami = ami - aki—, k = 1 n - 1 i = k, n;
kk (19.4)
bm = bm - bh— , m = k + 1 n.
Элементы akk называются главными. Заметим, что если в ходе расчетов
по данному алгоритму на главной диагонали окажется нулевой элемент akk = 0, то произойдет сбой в ЭВМ. Для того чтобы избежать этого, следует
каждый цикл по k начинать с перестановки строк: среди элементов k-го столбца amk, k < m < n находят номер p главного, т.е. наибольшего по модулю, и меняют местами строки k и p. Такой выбор главного элемента значительно повышает устойчивость алгоритма к ошибкам округления, т.к. в формулах (19.4) при этом производится умножение на числа amk /akk меньшие
единицы и ошибка, возникшая ранее, уменьшается.
(19.5)
или коротко эту систему записывают в виде
(19.6)
piXi-1+qiXi + riXi+1=di
p x 1 + q x = d , 2 < i < n -1.
В этом случае расчетные формулы метода Гаусса значительно упрощаются. После исключения поддиагональных элементов в результате прямого хода метода Гаусса и последующего деления каждого уравнения на диагональный элемент систему (19.5) можно привести к виду
0
0
1
0
0
0
00 00
0 0
0 0
0 0
1
1 -6-
0
|
x1 |
|
1 |
|
x2 |
|
|
X |
|
= |
|
|
xn-1 |
|
nn-1 |
|
x n |
|
|
(19.7)
При этом формулы прямого хода для вычисления 6,1, как нетрудно получить, имеют вид
6 =-Гг + РЛгli = (di - Рг1г-1)1(Яг + РЛ-^ (19.8)
i = 2,3,..., n -1.
Когда такое преобразование (прямой ход) сделано, формулы обратного хода метода Гаусса получаются в виде
xn = (dn - pnnn-1)l(qn + Pn6n-1);
x =6ixt+1 + 1i , (19.9)
i = n -1, n - 2, 1.
Расчетные формулы (19.8), (19.9) получили название "метод прогонки". Достаточным условием того, что в формулах метода прогонки не произойдет деления на ноль и расчет будет устойчив относительно погрешностей округления, является выполнение неравенства |^|>|pt\ + (хотя бы для одного i
должно быть строгое неравенство).
19.2.3.Метод квадратного корня
Метод предназначен для решения СЛАУ с симметричной матрицей. Этот метод основан на представлении такой матрицы в виде произведения
трех матриц: A = S ■ D ■ S, где D - диаганальная с элементами di=±1; S - верхняя треугольная (sik = 0, если i>k, причем sii > 0), S - транспонированная
нижняя треугольная. Матрицу S можно по аналогии с числами трактовать как корень квадратный из матрицы A, отсюда и название метода.
Если S и D известны, то решение исходной системы
A ■ x = S ■ D ■ S ■ x = b сводится к последовательному решению трех систем -двух треуголь ных и одной диагональной:
ST ■ z = b; Dy = z; Sx = y . (19.10)
Здесь z = DSx, y = Sx .
Решение систем (19.10) ввиду треугольности матрицы S осуществляется по формулам, аналогичным обратному ходу метода Гаусса: i-1
У\ = bi 1 si A; yi = (bi - Z dkykski) 1 siidi; i = 2,3,..., n;
к=1
n
Xn = yn 1 Snn; Xi = (yi - Z Vk)ISii; i = П - 1 П - 2,...,1.
к=i +1
Нахождение элементов матрицы S (извлечение корня из А) осуществляется по рекуррентным формулам:
к-1 2
dk = sign(-Zdi\stk\ );
i=1
(19.11)
k-1
2
akk-
Z
dAsik\
i=1
i=1
к = 1, 2, n;
к-1
Skj = (akj - Z diSikSij)I(Skkdk ); i=1
j = к +1, к + 2, n.
В этих формулах сначала полагаем к=1 и последовательно вычисляем
d1 = sign(a11); s11 = ^|an| и все элементы первой строки матрицы S(s1 j, j > 1),
затем полагаем к=2, вычисляем s22 и вторую строку s1 j для j>2 и т.д.
Метод квадратного корня почти вдвое эффективнее метода Гаусса, т.к. полезно использует симметричность матрицы.
Функция sign(x) возвращает -1 для всех x<0 и +1 для всех x>0.