- •Оглавление
- •ВВЕДЕНИЕ
- •1. ОСНОВНЫЕ ПОНЯТИЯ СИСТЕМЫ ПРОГРАММИРОВАНИЯ ТУРБО ПАСКАЛЬ
- •1.1. Алфавит и словарь языка Паскаль
- •1.1.1. Величины в Паскале
- •1.1.2. Структура программы
- •1.2. Типы данных
- •1.2.1. Целочисленные типы данных
- •1.2.2. Вещественные типы данных
- •1.2.3. Символьный тип
- •1.2.4. Логический тип
- •1.3. Арифметические операции и стандартные функции
- •1.3.1. Арифметические операции
- •1.3.2. Операции отношения
- •1.3.3. Стандартные математические функции
- •1.3.4. Логические операции
- •1.3.5. Приоритет операций (в порядке убывания):
- •2. ОПЕРАТОРЫ ЯЗЫКА ПАСКАЛЬ
- •2.1. Оператор присваивания
- •2.2. Ввод и вывод данных
- •2.2.1. Вывод данных на экран
- •2.2.2. Ввод данных с клавиатуры
- •2.3. Оператор безусловного перехода
- •2.4. Пустой оператор
- •2.5. Структурные операторы
- •2.6. Составной оператор
- •2.7. Условные операторы
- •2.7.1. Условный оператор If
- •2.7.2. Оператор выбора
- •2.8. Операторы цикла (повтора)
- •2.8.1. Оператор цикла с параметром
- •2.8.2. Оператор цикла с предусловием
- •2.8.3. Оператор цикла с постусловием
- •2.8.4. Типовые задачи с использованием циклов
- •3. ПРОЦЕДУРЫ И ФУНКЦИИ
- •3.1. Функции
- •3.2. Примеры полезных функций
- •3.3. Процедуры
- •3.4. Оператор вызова процедуры
- •3.5. Механизм передачи параметров в подпрограммах
- •3.6. Стандартные библиотечные модули
- •4. РЕШЕНИЕ НЕЛИНЕЙНЫХ УРАВНЕНИЙ
- •4.1. Метод отделения корней
- •4.2. Метод половинного деления
- •4.3. Метод касательных
- •4.4. Модифицированный метод Ньютона
- •5. ЧИСЛЕННОЕ ИНТЕГРИРОВАНИЕ
- •5.1. Методы прямоугольников
- •5.2. Метод трапеций
- •5.3. Процедура вычисления интеграла
- •5.5. Основная часть программы
- •6. МАССИВЫ
- •6.1. Одномерные массивы
- •6.1.1. Заполнение массива
- •6.1.2. Вывод массива на экран
- •6.1.3. Работа с массивами
- •6.2. Двумерные массивы
- •6.2.1. Заполнение матрицы
- •6.2.2. Вывод матрицы на экран
- •6.2.3. Работа с матрицами
- •7. РАБОТА С ФАЙЛАМИ ДАННЫХ
- •7.1. Особенности работы с текстовыми файлами.
- •7.1.1. Общий алгоритм ввода из файла данных
- •7.1.2. Общий алгоритм вывода в файл результатов
- •8. РЕШЕНИЕ СИСТЕМ ЛИНЕЙНЫХ АЛГЕБРАИЧЕСКИХ УРАВНЕНИЙ
- •8.1. Прямые методы
- •8.2. Метод Гаусса
- •Реализация метода на языке Паскаль
- •8.3. Метод прогонки
- •8.4. Итерационные методы
- •8.5. Метод Зейделя
- •Реализация метода на языке Паскаль
- •8.6. Метод простых итераций
- •8.7. Вывод результатов и проверка
- •9.1. Процедура заполнения расширенной матрицы Грама
- •9.2. Алгоритм решения задачи
- •10. ГРАФИКА В СИСТЕМЕ ТУРБО ПАСКАЛЬ
- •10.1. Запуск и завершение работы в графической системе
- •10.2. Базовые процедуры и функции
- •10.2.1. Процедуры модуля Graph
- •10.2.2. Функции модуля Graph
- •10.3. Экран и окно в графическом режиме
- •10.4. Вывод простейших фигур
- •10.4.1. Вывод точки
- •10.4.2. Цветовая шкала
- •10.4.3. Вывод линии
- •10.4.4. Стандартные типы и толщина линий
- •10.4.5. Построение прямоугольников
- •10.4.6. Построение многоугольников
- •10.4.7. Построение дуг и окружностей
- •10.4.8. Стандартные стили заполнения
- •10.5. Построение графиков функций
- •10.6. Построение графика аппроксимирующей функции
- •11. ЛАБОРАТОРНЫЙ ПРАКТИКУМ
- •11.1. Решение нелинейных уравнений
- •Задание на выполнение лабораторной работы № 1.
- •Программа лабораторной работы.
- •Содержание отчета.
- •Контрольные вопросы.
- •Варианты:
- •Задания.
- •11.2. Численное интегрирование
- •Задание на выполнение лабораторной работы N2.
- •Программа лабораторной работы.
- •Содержание отчета.
- •Контрольные вопросы
- •Варианты:
- •Задания.
- •11.3. Решение систем линейных алгебраических уравнений
- •Задание на выполнение лабораторной работы N3.
- •Программа лабораторной работы.
- •Содержание отчета.
- •Варианты:
- •Задания.
- •11.4. Аппроксимация функцией. Метод наименьших квадратов
- •Задание на выполнение лабораторной работы N4
- •Программа лабораторной работы.
- •Содержание отчета.
- •Варианты и исходные данные.
- •ЗАКЛЮЧЕНИЕ
- •СПИСОК ЛИТЕРАТУРЫ
r:=a[i,k];
for j:=k to n+1 do a[i,j]:=a[i,j]-a[k,j]*r;
end;
end;
Обратный ход метода Гаусса (вычисление вектора значений переменных) может выглядеть так:
if s<>0 then
for i:=n downto 1 do begin s:=a[i,n+1];
for j:=i+1 to n do s:=s-a[i,j]*x[j]; x[i]:=s;
end;
Остаётся только вывести результат и сделать проверку.
8.3. Метод прогонки
Он является модификацией метода Гаусса для частного случая разреженных систем – системы уравнений с трехдиагональной матрицей. Такие системы получаются при моделировании некоторых инженерных задач, а также при численном решении краевых задач для диф-
ференциальных уравнений. |
|
Запишем систему уравнений в виде |
|
b1x1 + c1x2 = d1 ; |
|
a2x1 + b2x2 + c2x3 = d2 ; |
|
a3x2 + b3x3 + c3x4 = d3 ; |
(8.3) |
………………………………. |
|
an-1xn-2+bn-1xn-1+cn-1xn = dn-1 ;
anxn-1 + bnxn = dn. .
На главной диагонали матрицы этой системы стоят элементы
b1, b2,...,bn, над ней – элементы c1, c2,..., cn-1, под ней – элементы a2,a3,an. При этом обычно все коэффициенты bi не равны нулю.
Метод прогонки состоит из двух этапов – прямой прогонки (аналога прямого хода метода Гаусса) и обратной прогонки (аналога обратного хода метода Гаусса). Прямая прогонка состоит в том, что каждое неизвестное xi выражается через xi+1 с помощью прогоночных коэффициентов ai, bi:
xi=ai-xi+1+bi, i=1, 2,..., n – 1. |
(8.4) |
Из первого уравнения системы (8.3) найдем |
x1=(–c1/b1) x2 + d1/b1. |
С другой стороны, по формуле (8.4) x1=a1x2+b1.
67
Приравнивая коэффициенты в обоих выражениях для x1,получаем
a1= – c1/b1, b1=d1/b1. (8.5)
Из второго уравнения системы (8.3) выразим x2 через x3, заменяя x1 по формуле (8.4):
|
a2(a1x2 + b1) + b2x2 + c2x3 = d2. |
|
|
Отсюда найдем x2 = (– c2x3 + d2 – a2b1) / (a2a1 + b2), |
|
или |
x2=a2x3 + b2 ; |
|
|
a2= – c2/e2 ; |
|
|
b2=(d2 – a2b1)/e2 ; |
|
|
e2=a2a1+b2 . |
|
|
Аналогично можно вычислить прогоночные коэффициенты для |
|
любого номера i: |
|
|
|
ai = – ci/ei , bi=(di – aibi-1)/ei ; |
(8.6) |
|
ei = aiai-1 + bi , i = 2, 3,..., n – 1 . |
|
|
Обратная прогонка состоит в последовательном вычислении неиз- |
вестных xi. Сначала нужно найти xn . Для этого воспользуемся выражением (8.4) при i = n – 1 и последним уравнением системы (8.3). Запишем их:
xn-1 = an-1xn+bn-1 ; anxn-1+bnxn= dn .
Отсюда, исключая xn-1, находим xn = (dn – anbn-1)/(bn+anan-1). Далее, используя формулы (8.4) и выражения для прогоночных
коэффициентов (8.5), (8.6), последовательно вычисляем все неизвестные xn-1, xn-2, ..., x1.
8.4. Итерационные методы
Итерационные методы используют последовательные приближения (итерации, итерационные циклы), в процессе вычисления по которым образуется последовательность значений X0, X1,...,XS,..., сходящаяся к некоторому пределу XP, т. е.
lim XS=XP,
S→ ∞
где каждое последующее значение XS определяется через предыдущее XS -1 (S – номер итерации).
К таким методам относятся метод Якоби (метод простой итерации, или метод одновременных смещений), метод Зейделя (ГауссаЗейделя, или метод последовательных смещений), метод верхней релаксации.
Итерации начинаются с задания начального приближенного решения X0, которое может быть получено из физических или других разумных соображений. Чем ближе исходное приближение X0 к решению
68