LEC-28 (Материалы к лекциям)
Описание файла
Файл "LEC-28" внутри архива находится в следующих папках: Материалы к лекциям, Lecturessemestr7. Документ из архива "Материалы к лекциям", который расположен в категории "". Всё это находится в предмете "методы решения задач механики сплошных сред" из 7 семестр, которые можно найти в файловом архиве МАИ. Не смотря на прямую связь этого архива с МАИ, его также можно найти и в других разделах. Архив можно найти в разделе "лекции и семинары", в предмете "методы решения задач механики сплошных сред" в общих файлах.
Онлайн просмотр документа "LEC-28"
Текст из документа "LEC-28"
15
В.А. Столярчук. “Моделирование систем”. Конспект лекций. Лекция №28Лекция № 28
12. Приведение матриц.
12.1 Матрицы и особенности решения матричных уравнений.
А + В = В + А
АВ≠ВА;
Транспонированная матрица АТ получается отражением матрицы А относительно её диагонали, т.е. .
Единичная матрица имеет единицы на диагонали, а остальные её элементы равны нулю.
Единичная матрица обязательно квадратная. IA = AI.
Обратная матрица А-1 есть такая матрица, для которой выполняется равенство А-1А=1. Не всякая матрица имеет обратную. Действительно, произведение АВ может быть равным нулю, даже если А или В не были нулевым матрицами
Если матрица имеет обратную, то о ней говорят, что она не вырожденная. Следующие высказывания эквивалентны:
матрица А – невырожденная;
обратная матрица А-1 существует;
столбцы матрицы А линейно независимы;
строки матрицы А линейно независимы;
равенство Ах = 0 означает, что х = 0.
Задача решения линейных уравнений состоит в нахождении такого
Вектора х по данной матрице А и данному вектору b, для которого выполняется равенство Ах = b.
Если матрица невырожденная (тем самым А – квадратная), то эта задача всегда имеет единственное решение для любого b.
Если матрица имеет больше строк, чем столбцов (т.е. существует больше уравнений, чем переменных)), то эта задача не имеет решения.
Если А имеет больше столбцов, чем строк, то, как правило, существует бесконечное множество решений. Самым древним и стандартным методом решения этой задачи является метод исключения Гаусса.
Система уравнений называется однородной, если правая часть равна нулю, например, Ах = 0.
Особенности решения матричных уравнений.
Гауссово исключение и проблема упорядочения.
Система уравнений, которую надо решить есть:
Ах = b
Процесс исключения состоит из n-1 шагов
А(K+1) = L(K)A(K)
и начинается с матрицы А(1) =А
Элементы матрицы А(K+1) находятся по формуле:
aij(K+1)=aij(K) - Кп, где Кп = aiK(K) aKi(K)/ aKK(K) ;
Конечным результатом исключения является верхняя треугольная матрица U=A(U) , а весь процесс эквивалентен вычислению треугольного разложения:
A = LU, где L = Ln , Ln-1, .......L2, L1 , а U = А(n+1)
Чтобы разложение удалось вычислить, необходимо, чтобы все знаменатели aKK(K) в формулах были отличны от нуля. Кроме того, для обеспечения приемлемой устойчивости вычислений желательно, чтобы поправочные коэффициенты Кп были не слишком велики. В результате гауссова исключения приходим к уравнению:
LUx = b , которое преобразуется в , после чего производится обратная подстановка. Здесь: U и L - верхняя и нижняя треугольные матрицы.
Ясно, что вычисления упростятся, если одна или более из величин формулы процесса факторизации
aij(K+1)=aij(K) - aiK(K) aKi(K) / aKK(K),
входящих в правую часть, будут равны нулю.
Методы для разреженных матриц основаны на следующих главных принципах:
а) хранятся только ненулевые элементы матрицы А;
б) формулами процесса факторизации пользуются,
если aiK(K) 0 и aKj(K) 0.
в) число новых элементов стараются по возможности уменьшить. Новый элемент возникает, если aij(K) =0 , а aij(K+1) 0
Одной из наиболее простых форм, исключающих заполнение, является ленточная форма. Обратная подстановка в методе Гаусса не порождает новых ненулевых элементов. Новые ненулевые элементы создаются только при прямом исключении.
Представим алгоритм Гаусса на каком-либо языке программирования в компактной форме. Алгоритм Гаусса строит верхнюю треугольную матрицу U и матрицу множителей L на месте матрицы А, так, что элементы матрицы А не сохраняются.
Исключение Гаусса с частичным выбором ведущего элемента
для решения системы Ах=b
Цикл по столбцам А
For K=1 to U-1 do
Поиск максимального по модулю элемента в столбце
imax = индекс строки такой, чтоajmax,K= maxaiK i K
Проверка на нуль ведущего элемента (на вырожденность)
BUFFER - машинно-зависимая константа, оценивающая величину ошибок округления
IFajmax,K BUFFER, то перейти на конец цикла К.
Перестановка строк с индексами К и IMAX
For j=1 to n переставить aKj и aimax
Перестановка соответствующих правых частей
Переставить bK и bimax
Цикл по строкам
For i=K+1 to U do
Вычисление множителей и запоминание их в столбце К
m=aiK - aiK/aKK
Цикл по элементам строки I
For j=K+1 to N do
aij=aij - m * aKj
Вычисление правой части строки I
bi=bi - m * bK
Конец цикла по i.
Конец цикла по K.
Обратная подстановка
Цикл по строкам в обратном порядке
For i=N to 1 do
Подстановка известных компонент решения в правую часть.
Проверка на нуль ведущего элемента
IF(aij> BUFFER) then xi=r / aij
Проверка на нуль правой части
Присвоить нуль компоненте решения и печать сообщения
Else IFr BUFFER then xi=0
или печать сообщения об ошибке
else печать несовместимая система, А - вырождена.
Конец цикла по i.
Матрицы L и U хранятся на месте матрицы А. Каждый множитель помещен на месте обнуляемого элемента А.
В обычной записи:
a11X1+a12X2+a13X3+...+a1nXn=b1
a21X1+a22X2+a23X3+...+a2nXn=b2
a31X1+a32X2+a33X3+...+a3nXn=b3
......................................................
......................................................
an1X1+an2X2+an3X3+...+annXn=bn
a21X1+a22X2+a23X3+...+a2nXn=b2
a11 X1+a12 X2+a13 X3+...+a1n Xn=b1
Пример 1.
a) 2X1+2X2+4X3=5
b) 6X1-X2+X3=7
c) 4X1-10X2-12X3= -4
a) 2X1+2X2+4X3=5
b) -7X2-11X3= -8 (вычитание первой строки, умноженной на 3 из второй строки)
c) -14X2-20X3= -14 (вычитание первой строки, умноженной на 2 из третьей строки)
a) 2X1+2X2+4X3=5
b) -7X2-11X3= -8
c) 2X3=2 (вычитание второй строки, умноженной на 2
из третьей строки)
(23)X1+(23)X2+(43)X3=53 (22)X1+(22)X2+(42)X3=52
*
*
6X1 -1X2 +1X3=7 4X1-10X2-12X3= -4-7X2 -11X3= -8 -14X2-20X3= -14
*
-14X2-20X3=-140+2X3= 2
в итоге:
была стала
Пример 2.
2X1+2X2+4X3=5
6X1-X2+0X3=7
4X1-10X2-12X3= -4
*
6X1+X2+0X3=7-7X2-12X3= -8
(22)X1+(22)X2+(42)X3=52
4X1-10X2-12X3= -4
*
-14X2-20X3= -14
*
-14X2-20X3=-14+4X3= 2
В итоге:
была стала
Масштабирование и анализ машинного нуля.
Алгоритм Гаусса требует анализа ситуаций, когда некоторые получаемые числа равны 0.
С математической точки зрения было бы правильно положить BUFFER=0, однако на практике этого сделать нельзя. Числа которые при использовании такой арифметики должны быть нулями, почти наверняка не равны нулю при использовании арифметики с плавающей точкой из-за ошибок округления. Чтобы определить, является ли число нулем, необходимо рассмотреть два вида масштабов:
масштаб представления чисел в исходной задаче и
масштаб представления чисел в машине.
Машинный масштаб определяется точностью (числом оперируемых цифр) самой машины. Поэтому для компьютера, который выполняет действия с 10 десятичными цифрами, ведущий элемент 1,210 (-10) может рассматриваться как результат влияния ошибок округления и по праву может быть положен равным нулю.
Однако это было бы абсолютно неправильным, если все элементы матрицы А имели бы порядок 10(-8). Таким образом целесообразно масштабировать систему так, чтобы все элементы были порядка 1 и тогда было бы правильным считать, что малые числа порядка 1,210(-10) представляют собой помехи из-за ошибок округления.
Существует два естественных способа масштабирования системы Ax=b.
a) Мы можем умножить уравнения на некоторый множитель (например, на 108, если элементы аij имеют порядок 10(-8)) для выравнивания коэффициентов.
b) Мы можем умножить также столбцы матрицы А: это соответствует изменению единиц измерения неизвестных (например, переходу от сантиметров к метру).
К сожалению, существуют задачи, для которых масштабирование не столь легкий процесс, и удовлетворительный метод полностью автоматического масштабирования не найден.
К счастью, большинство задач могут быть масштабированы.
Решающим является выбор единиц измерения (они определяют величину изменения масштаба), которые естественны для задачи и которые не искажают соотношений между размерами объектов.
Наиболее простой способ масштабирования состоит в таком умножении каждой строки (уравнения), чтобы наибольший элемент строки был равен 1.
В предположении, что это сделано, перейдем к выбору величины BUFFER.
Если машина имеет t разрядов с основанием b, то в качестве значения BUFFER может быть всего С*b(-t), где С - некоторое небольшое число (3 4) и должно постепенно расти с увеличением порядка матрицы.