6CAD-CAE-23 Упорядочение (Материалы к лекциям)
Описание файла
Файл "6CAD-CAE-23 Упорядочение " внутри архива находится в папке "Материалы к лекциям". Документ из архива "Материалы к лекциям", который расположен в категории "". Всё это находится в предмете "cad-cae-системы" из 6 семестр, которые можно найти в файловом архиве МАИ. Не смотря на прямую связь этого архива с МАИ, его также можно найти и в других разделах. Архив можно найти в разделе "лекции и семинары", в предмете "cae-cad системы" в общих файлах.
Онлайн просмотр документа "6CAD-CAE-23 Упорядочение "
Текст из документа "6CAD-CAE-23 Упорядочение "
47
Столярчук В.А. “CAD/CAE - системы”. Материалы к лекциям. Лекции №23Лекция № 23
11. Алгоритмы упорядочения разреженных матриц
Оглавление
11.1. Особенности решения матричных уравнений. 2
11.2. Проблема упорядочения 9
11.3. Матрицы и графы 17
11.4. Методы упорядочения матриц и сопутствующие алгоритмы. 22
11.4.1.Ленточные методы 22
11.4.2. Профильные методы. 29
11.4.3. Универсальные разреженные методы. 39
11.4.4. Определение начального узла 42
11.5. Сравнение методов упорядочения матриц. 46
Общие сведения о матрицах.
А + В = В + А
АВ≠ВА;
АВ=С;
Транспонированная матрица АТ получается отражением матрицы А относительно её диагонали, т.е. .
Единичная матрица имеет единицы на диагонали, а остальные её элементы равны нулю.
Единичная матрица обязательно квадратная. IA = AI.
Обратная матрица А-1 есть такая матрица, для которой выполняется равенство А-1А=1. Не всякая матрица имеет обратную. Действительно, произведение АВ может быть равным нулю, даже если А или В не были нулевым матрицами
.
Если матрица имеет обратную, то о ней говорят, что она не вырожденная.
Следующие высказывания эквивалентны:
матрица А – невырожденная;
обратная матрица А-1 существует;
столбцы матрицы А линейно независимы;
строки матрицы А линейно независимы;
равенство Ах = 0 означает, что х = 0.
Задача решения линейных уравнений состоит в нахождении такого
Вектора х по данной матрице А и данному вектору b, для которого выполняется равенство Ах = b.
Если матрица невырожденная (тем самым А – квадратная), то эта задача всегда имеет единственное решение для любого b.
Если матрица имеет больше строк, чем столбцов (т.е. существует больше уравнений, чем переменных)), то эта задача не имеет решения.
Если А имеет больше столбцов, чем строк, то, как правило, существует бесконечное множество решений. Самым древним и стандартным методом решения этой задачи является метод исключения Гаусса.
Система уравнений называется однородной, если правая часть равна нулю, например, Ах = 0.
11.1. Особенности решения матричных уравнений.
Алгоритм Гауссова исключения.
Система уравнений, которую надо решить есть Ах = b.
Матрица А записывается в виде A = LU, где L и U нижняя и верхняя треугольные матрицы. Тогда:
LUx = 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), входящих в правую часть, будут равны нулю. Отметим этот немаловажный факт.
Представим алгоритм Гаусса на каком-либо языке программирования в компактной форме. Алгоритм Гаусса строит верхнюю треугольную матрицу 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
Масштабирование и анализ машинного нуля.
Алгоритм Гаусса требует анализа ситуаций, когда некоторые получаемые числа равны 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) и должно постепенно расти с увеличением порядка матрицы.
Над каждым элементом аij выполняется самое большое 2n2 арифметических операций, поэтому С=n2 - самое большое значение, которое следует рассматривать. Вообще C=n достаточно надежный выбор.
Подведем итоги:
-
Вычисления более устойчивы (менее чувствительны к изменениям), если все элементы матрицы приблизительно одинаковы.
-
Не известны способы масштабирования матриц в общем случае, и существуют матрицы, которые не могут быть удовлетворительно масштабированы.
-
На практике обычно масштабируют строки (делением каждого уравнения на его наибольший коэффициент). Это достаточно надежный способ для обычно встречающихся задач.
-
Для получения LU - разложения исключением Гаусса требуется порядка операций сложения и умножения.
Отметим дополнительно следующее:
б) формулами процесса факторизации пользуются,
если aiK(K) 0 и aKj(K) 0.
в) новый элемент возникает, если aij(K) =0 , а aij(K+1) 0
Последнее явление называют заполнением.
Но есть ещё одно свойство метода Гаусса. Одной из наиболее простых форм матриц, уменьшающей заполнение при использовании метода Гаусса, является ленточная форма. Обратная подстановка в методе Гаусса не порождает новых ненулевых элементов. Новые ненулевые элементы создаются только при прямом исключении.
Поясним эффект заполнения, возникающий в разложении Гаусса.
Пример 1.
Дана система уравнений.