- •Кафедра теплофизики и информатики в металлургии
- •Сборник задач
- •071900 "Информационные системы в технике и технологиях"
- •Введение
- •Интерполирование
- •Линейная интерполяция
- •Задание № 1
- •1.2. Метод наименьших квадратов
- •Задание № 2
- •Численное интегрирование
- •2.1. Полиномиальная аппроксимация
- •Задание № 3
- •2.2. Нестандартные формулы
- •Задание № 4
- •Системы уравнений
- •3.1. Линейные системы
- •Задание № 5
- •3.3. Системы нелинейных уравнений
- •Задание № 6
- •Численное интегрирование обыкновенных дифференциальных уравнений (оду)
- •4.1. Дифференциальные уравнения первого порядка
- •1. Разложение в ряд Тейлора
- •6. Метод Рунге – Кутты
- •7. Метод Адамса
- •8. Метод последовательных приближений
- •Задание № 7
- •4.2. Дифференциальные уравнения второго порядка
- •9. Метод приведения к системам уравнений первого порядка
- •10. Метод Рунге – Кутты
- •11. Метод конечных разностей
- •Задание № 8
- •4.3. Линейная краевая задача для оду второго порядка
- •12. Метод сведения к задаче Коши
- •13. Разностный метод (метод прогонки)
- •Задание № 9
Системы уравнений
Решение систем алгебраических уравнений является сущностью инженерной работы в области анализа закономерностей протекания технологических процессов, установления наиболее рационального с точки зрения экономики распределения ресурсов, проектирования систем автоматического управления и т.д. Это объясняется тем, что в силу существенной нелинейности реальных процессов их математические модели характеризуются существенной нелинейностью и не могут быть решены аналитически. Поэтому, как правило, их решают численно на ЭВМ, а для этого необходимо свести (аппроксимировать) дифференциальные уравнения данных моделей к системе алгебраических соотношений (получить численную модель или дискретный аналог математической модели).
Как и исходные математические модели процессов или агрегатов, алгебраические уравнения, входящие в численную модель, могут быть линейными и нелинейными. Процедуры решения систем уравнений в этих случаях существенно различаются, хотя и имеют также много общего.
3.1. Линейные системы
В инженерных приложениях встречаются преимущественно нелинейные задачи и, следовательно, решать приходится системы нелинейных уравнений. Однако все методы решения систем нелинейных уравнений базируются на том или ином методе линеаризации исходной системы, поэтому теория линейных систем является основой и для решения нелинейных систем.
Задачи линейной алгебры
Выделяют четыре основных задачи линейной алгебры:
решение системы линейных уравнений Ax = b, где A – квадратичная матрица и x, b – векторы;
отыскание (вычисление) обратной матрицы А-1;
вычисление определителя det|A|;
определение собственных значений и собственных векторов матрицы.
Прежде чем решать любую систему уравнений, необходимо выяснить два вопроса: имеет ли вообще данная система решение и, если имеет, то какова точность этого решения?
Ответы на оба эти вопроса связаны с понятием обусловленности матрицы. Чтобы выяснить смысл этого понятия, рассмотрим следующие положения, не вникая в математическую сторону вопроса.
Во-первых, как показывает геометрическая
интерпретация процедуры решения двух
уравнений (см. рис. 3.1), не всякая система
имеет решение. Каждому уравнению
соответствует прямая в плоскости х,
у, а точка
пересечения этих прямых и есть решение
системы (для n уравнений
решение есть точка пересечения всех n
гиперплоскостей в n-мерном
пространстве). Если detA
= 0, то наклоны прямых равны, и они либо
параллельны, либо совпадают. В противном
случае прямые имеют единственную точку
пересечения.
В реальных промышленных условиях данные известны с некоторой не вполне определённой точностью (иногда они попросту лживы). Поэтому весьма важно выяснить надёжность решения при определённой недостоверности исходных данных. Именно эту задачу решает выяснение обусловленности матрицы.
Пусть detA 0. Запишем формальное решение системы Ax = b в виде x = A-1b. Варьируя последнее равенство и определяя вариацию обратной матрицы из соотношения E = (AA-1) = AA-1 + AA-1=0, получим
x = A-1(b - Ax).
Формально устойчивость есть, так как при detA 0 обратная матрица существует. Но если матрица А-1 имеет большие элементы, то можно указать такой вид погрешности исходных данных (b или А), который сильно изменит решение. В этом случае систему называют плохо обусловленной. Очевидно, у плохо обусловленной системы detA 0 (рис. 3.1), однако заметим, что этот признак плохой обусловленности является необходимым, но не достаточным.
В теоретических исследованиях обусловленность часто характеризуют числом = ||A||||A-1||. Это число зависит от того, какая норма матрицы выбрана, но при любой норме 1. Чем больше это число, тем хуже обусловленность матрицы: обычно 103 – 104 уже означает плохую обусловленность.
Недостаток данного числа обусловленности состоит в том, что предварительно необходимо выполнить операцию обращения матрицы, а при плохо обусловленной матрице это сделать нелегко. Поэтому в настоящее время, учитывая вспомогательный характер операции определения числа обусловленности матрицы, для этой цели рекомендуется использовать распространённые математические пакеты.
В рамках пакета MATLAB обусловленность матрицы устанавливается с помощью следующих функций:
k = cond(A) k = condest(A) k = cond(A, p) [k, v] = condest(A)
Функция k = cond(A) возвращает число обусловленности матрицы А по отношению к операции обращения, равное отношению максимального сингулярного числа к минимальному: k = max/min.
Функция k = cond(A, p) возвращает число обусловленность матрицы А относительно р-нормы k = norm(A, p)norm(inv(A), p), где p = 1, 2, inf, 'fro'.
Функция k = condest(A) возвращает оценку нижней границы числа обусловленности матрицы по 1-норме.
Функция [k, v] = condest(A) возвращает помимо оценки нижней границы числа обусловленности также и вектор, такой, что справедливо соотношение norm(Av, 1) = norm(A, 1)norm(v, 1)/k. Таким образом, вектор v может служить аппроксимацией нуль-вектора матрицы А, если k велико.
Более наглядным является результат выполнения функции k_1 = = rcond(A), которая возвращает величину, обратную значению числа обусловленности матрицы А по 1-норме. Если матрица А хорошо обусловлена, то значение k_1 близко к единице; если матрица А плохо обусловлена, то значение k_1 близко к нулю.
Пример 3.1. Выясним обусловленность матриц коэффициентов следующих двух систем уравнений:
Сформируем
матрицы систем (а)
и (b):
>> A = [7.9 5.6 5.7 -7.2; 8.5 -4.8 0.8 3.5; 4.3 4.2 -3.2 9.3; 3.2 -1.4 -8.9 3.3]
A =
7.900000 5.600000 5.700000 -7.200000
8.500000 - 4.800000 0.800000 3.500000
4.300000 4.200000 - 3.200000 9.300000
3.200000 - 1.400000 - 8.900000 3.300000
>> B = [5 7 6 5; 7 10 8 7; 6 8 10 9; 5 7 9 10]
B =
5 7 6 5
7 10 8 7
6 8 10 9
5 7 9 10
Теперь вычислим параметры матриц:
>> k = cond(A) k_1 = rcond(A) k1 = condest(A)
k = k_1 = k1 =
2.547891 0.417639 5.118441
>> k2 = cond(B) k2_1 = rcond(B) k20 = condest(B)
k2 = k2_1 = k20 =
2.9841e3 3.0882e- 4 4.4480e3
Таким образом, можно сделать вывод, что матрица А хорошо обусловлена, а матрица В – плохо обусловлена.
В рамках пакета Mathcad вычисляется четыре числа обусловленности:
cond1(A) – возвращает число обусловленности матрицы, вычисленное в 1-норме;
cond2(A) – возвращает число обусловленности матрицы, вычисленное в норме L2;
conde(A) – возвращает число обусловленности матрицы, вычисленное в норме евклидова пространства;
condi(A) – возвращает число обусловленности матрицы, основанное на равномерной норме.
В данном случае формирование матрицы осуществляется предельно просто – необходимо использовать опции Insert/Matrix, указать число строк и столбцов и ввести соответствующие элементы
Далее вычисляем характеристики матриц:
cond1(A) = 5.118441, cond2(A) = 2.547891, conde(A) = 5.190408, condi(A) = 5.660286
cond1(B) = 4488, cond2(B) = 2984.092702, conde(B) = 3009,578708, condi(B) = 4488
Сопоставляя результаты оценки обусловленности матриц в MATLAB и Mathcad, можно видеть эквивалентность команд (функций) cond(A) и cond2(A), condest(A) и cond1(A).
В рамках пакета Maple V любого релиза имеется лишь одна функция определения числа обусловленности матрицы cond(A, namenorm), но она охватывает все четыре команды Mathcad, так как опция namenorm может иметь четыре значения: 1, 2, infinity и 'frobenius'. При этом справедлива следующая эквивалентность:
cond1(A) cond(A, 1); cond2(A) cond(A, 2); condi(A) cond(A, infinity);
conde(A) cond(A, 'frobenius')
Формирование матриц в Maple осуществляется командой
> A := matrix(4, 4, [[7.9,5.6,5.7,-7.2],[8.5,-4.8,0.8,3.5],[4.3,4.2,-3.2,9.3],[3.2,-1.4,8.9,
3.3]]);
При этом в версиях пакета до Maple V Release 5 на рабочей странице выпечатывается матрица
В версии пакета Maple 6 матрица не выпечатывается, а повторяется команда ввода.
Методы решения линейных систем уравнений делятся на прямые и итерационные. Прямые методы дают решение за конечное число действий, просты и наиболее универсальны. Для систем небольшого порядка n 200 применяются практически только прямые методы. Итерационные методы выгодны для систем специального вида со слабо заполненной (разрежённой) матрицей очень большого порядка n 103 105. Сравнительно недавно для решения плохо обусловленных систем стали применять методы регуляризации.
Метод исключения Гаусса
Пусть имеется система уравнений
(3.1)
или в индексных обозначениях
(3.1,а)
Метод Гаусса для произвольной системы основан на приведении матрицы системы к треугольному виду. Вычтем из второго уравнения системы (3.1) первое, умноженное на такое число, чтобы уничтожился коэффициент при х1. Затем таким же образом вычтем первое уравнение из третьего, четвёртого и т.д. Тогда исключатся все коэффициенты первого столбца, лежащие ниже главной диагонали.
Затем при помощи нового второго уравнения исключим из третьего, четвёртого и т.д. уравнений коэффициенты второго столбца. Последовательно продолжая этот процесс, исключим из матрицы все коэффициенты, лежащие ниже главной диагонали.
Запишем общие формулы процесса. Пусть проведено исключение коэффициентов из (k – 1)-го столбца. Тогда остались такие уравнения с ненулевыми элементами ниже главной диагонали:
(3.2)
Умножим k-тую строку на число
(3.3)
и вычтем из m-ной строки. Первый ненулевой элемент этой строки обратится в нуль, а остальные изменятся по формулам
(3.4)
Производя вычисления по этим формулам при всех указанных индексах, исключим элементы k-того столбца. Будем называть такое исключение циклом процесса. Выполнение всех циклов называется прямым ходом исключения.
Запишем треугольную систему, получающуюся после выполнения прямого хода. При приведении системы к треугольному виду освободятся клетки в нижней половине матрицы системы (3.1). На освободившиеся места матрицы поставим множители cmk; их следует запомнить, так как они потребуются при обращении матрицы или уточнении решения. Получим
(3.5)
Треугольная система
(3.5) легко решается обратным ходом
исключения. Из последнего уравнения
системы сразу находим:
Затем
последовательно снизу вверх находим
все остальные неизвестные по формуле
(3.6)
Замечания. Исключение
по формулам (3.2) – (3.4) нельзя проводить,
если в ходе расчёта оказался нулевой
элемент
Но
в первом столбце промежуточной системы
(3.2) все элементы не
могут быть нулями:
это означало бы, что detA
= 0. Перестановкой строк можно переместить
ненулевой элемент на главную диагональ
и продолжить расчёт.
Если элемент на
главной диагонали
мал,
то эта строка умножается на большое
число cmk,
что приводит к большим ошибкам округления
при вычислениях. Чтобы избежать этого,
каждый цикл исключения всегда начинают
с перестановки строк. Среди элементов
столбца
находят
главный,
т.е. наибольший по модулю в k-том
столбце, и перестановкой строк переводят
его на главную диагональ, после чего
производят исключения. Такая процедура
называется методом
Гаусса с выбором главного элемента.
Для контроля процесса полезно найти невязки:
(3.7)
Если они велики, то это означает грубую ошибку в расчётах (ошибка в программе, сбой ЭВМ). Если они малы, а система хорошо обусловлена, то решение найдено достаточно аккуратно. Для плохо обусловленных систем малость невязок не гарантирует хорошей точности решения.
Определитель и обратная матрица
Они легко вычисляются методом исключения. В самом деле, вычитание строки из строки не изменяет значение определителя. Значит, в процессе исключения элементов (3.3), (3.4) абсолютная величина определителя не изменяется, а знак может измениться из-за перестановки строк. Определитель же треугольной матрицы (3.5) равен произведению диагональных элементов. Поэтому он вычисляется по формуле
(3.8)
где знак зависит от того, чётной или нечётной была суммарная перестановка строк.
Перейдём к вычислению обратной матрицы. Обозначим её элементы через im. Тогда соотношение AA – 1 = E можно записать так:
(3.9)
Видно, что если рассматривать l-тый столбец обратной матрицы как вектор, то он является решением линейной системы (3.9) с матрицей А и специальной правой частью (в которой на l-том месте стоит единица, а на остальных – нули).
Таким образом, для обращения матрицы необходимо решить n систем линейных уравнений с n неизвестными с одинаковой матрицей А и разными правыми частями. Приведение матрицы А к треугольному виду по формулам (3.4), (3.5) выполняется при этом только один раз. В дальнейшем при помощи чисел cmk по формуле (3.4) преобразуются все правые части, и для каждой правой части делается обратный ход.
