LU-разложение
В численном анализе и линейной алгебре и нижне-верхнее факторизуют как произведение нижней треугольной матрицы верхней (LU) разложение или факторизация матрицу треугольной матрицы (см. матричное разложение ). Иногда продукт включает в себя матрицу перестановок также . LU-разложение можно рассматривать как матричную форму исключения Гаусса . Компьютеры обычно решают квадратные системы линейных уравнений с использованием LU-разложения, и это также ключевой шаг при инвертировании матрицы или вычислении определителя матрицы. Разложение LU было предложено польским астрономом Тадеушем Банакевичем в 1938 году. [1] Цитируем: «Похоже, что Гаусс и Дулитл применили метод [исключения] только к симметричным уравнениям. Более поздние авторы, например, Эйткен, Банакевич, Дуайер и Краут… подчеркивали использование этого метода или его вариаций в связи с несимметричными проблемами… Банакевич… видел суть… в том, что основная проблема на самом деле одна. матричной факторизации, или «разложения», как он это называл». [2] Его также иногда называют LR- разложением (факторы на левую и правую треугольные матрицы).
Определения [ править ]
![](http://upload.wikimedia.org/wikipedia/commons/thumb/8/84/LDU_decomposition_of_Walsh_16.svg/300px-LDU_decomposition_of_Walsh_16.svg.png)
Пусть A — квадратная матрица. Факторизация LU относится к факторизации A с правильным порядком строк и/или столбцов или перестановками на два фактора – нижнюю треугольную матрицу L и верхнюю треугольную матрицу U :
В нижней треугольной матрице все элементы выше диагонали равны нулю, в верхней треугольной матрице все элементы ниже диагонали равны нулю. Например, для матрицы A 3×3 ее LU-разложение выглядит так:
Без надлежащего упорядочения или перестановок в матрице факторизация может не осуществиться. Например, легко проверить (развернув матричное умножение ), что . Если , то хотя бы один из и должно быть равно нулю, что означает, что либо , либо U сингулярны L . Это невозможно, если A неособа (обратима). Это процедурная проблема. Его можно удалить, просто изменив порядок строк A так, чтобы первый элемент перестановочной матрицы был ненулевым. Ту же проблему на последующих этапах факторизации можно решить таким же образом; см. основную процедуру ниже.
с частичным поворотом LU - факторизация
Оказывается, для LU-факторизации достаточно правильной перестановки в строках (или столбцах). Факторизация LU с частичным поворотом (LUP) часто относится к факторизации LU только с перестановками строк:
где L и U — снова нижняя и верхняя треугольные матрицы, а P — матрица перестановок при умножении слева на A переупорядочивает строки A. , которая Оказывается, все квадратные матрицы можно факторизовать в таком виде: [3] и факторизация на практике численно устойчива. [4] Это делает LUP-разложение полезным на практике методом.
с полным поворотом LU - факторизация
Факторизация LU с полным поворотом включает в себя перестановки как строк, так и столбцов:
где L , U и P определены, как и раньше, а — матрица перестановок, которая переупорядочивает столбцы A. Q [5]
по нижней диагонали-верхней ( Разложение LDU )
Разложение «нижняя диагональ-верхняя» (LDU) — это разложение вида
где D — диагональная матрица , а L и U — унитреугольные матрицы , что означает, что все элементы на диагоналях L и U равны единице.
Прямоугольные матрицы [ править ]
Выше мы требовали, чтобы A была квадратной матрицей, но все эти разложения можно обобщить и на прямоугольные матрицы. [6] В этом случае L и D — квадратные матрицы, каждая из которых имеет то же количество строк, что и A , а U имеет точно такие же размеры, что A. и Верхний треугольник следует интерпретировать как имеющий только нулевые записи ниже главной диагонали, которая начинается в верхнем левом углу. Точно так же более точный термин для U заключается в том, что это форма эшелона строк матрицы A .
Пример [ править ]
Мы факторизуем следующую матрицу 2х2:
Один из способов найти LU-разложение этой простой матрицы — просто решить линейные уравнения путем проверки. Расширение матричного умножения дает
Эта система уравнений является недоопределенной . В этом случае любые два ненулевых элемента матриц L и U являются параметрами решения и могут быть произвольно присвоены любому ненулевому значению. Следовательно, чтобы найти уникальное LU-разложение, необходимо наложить некоторые ограничения на L и U. матрицы Например, мы можем удобно потребовать, чтобы нижняя треугольная матрица L была единичной треугольной матрицей (т. е. присвоила единицам все элементы ее главной диагонали). Тогда система уравнений имеет следующее решение:
Подстановка этих значений в приведенное выше LU-разложение дает
Существование и уникальность [ править ]
Квадратные матрицы [ править ]
Любая квадратная матрица допускает LUP и PLU . факторизацию [3] Если является обратимым , то он допускает факторизацию LU (или LDU ) тогда и только тогда, когда все его ведущие главные миноры [7] ненулевые [8] (например не допускает факторизации LU или LDU ). Если представляет собой сингулярную матрицу ранга , то он допускает LU- факторизацию, если первый ведущие главные миноры не равны нулю, хотя обратное неверно. [9]
Если квадратная обратимая матрица имеет LDU (факторизация, в которой все диагональные элементы L и U равны 1), то факторизация уникальна. [8] В этом случае LU- факторизация также будет уникальной, если мы потребуем, чтобы диагональ (или ) состоит из единиц.
Вообще любая квадратная матрица может иметь одно из следующих значений:
- уникальная LU-факторизация (как упоминалось выше);
- бесконечно много LU-факторизаций, если два или более любых первых ( n -1) столбцов линейно зависимы или любой из первых ( n -1) столбцов равен 0;
- нет LU-факторизации, если первые ( n −1) столбцы ненулевые и линейно независимые и хотя бы один ведущий главный минор равен нулю.
В случае 3 можно аппроксимировать LU-факторизацию, изменив диагональную запись. к чтобы избежать нулевого ведущего главного минора. [10]
положительно определенные матрицы Симметричные
Если A — симметричная (или эрмитова , если A комплексная) положительно определенная матрица , мы можем устроить дело так, что — сопряженная транспонированная матрица L. U То есть мы можем написать А как
Это разложение называется разложением Холецкого . Если положительно определена, то разложение Холецкого существует и единственно. Более того, вычисление разложения Холецкого более эффективно и численно более стабильно , чем вычисление некоторых других LU-разложений.
Общие матрицы [ править ]
Для (не обязательно обратимой) матрицы над любым полем известны точные необходимые и достаточные условия, при которых она имеет LU-факторизацию. Условия выражаются через ранги определенных подматриц. Алгоритм исключения Гаусса для получения LU-разложения также был распространен на этот наиболее общий случай. [11]
Алгоритмы [ править ]
Закрытая формула [ править ]
Когда факторизация LDU существует и уникальна, существует замкнутая (явная) формула для элементов L , D и U в терминах отношений определителей некоторых подматриц исходной A. матрицы [12] В частности, , и для , это соотношение -я главная подматрица -я главная подматрица. Вычисление определителей требует больших вычислительных затрат , поэтому эта явная формула на практике не используется.
Гаусса исключения Использование
Следующий алгоритм по существу представляет собой модифицированную форму исключения Гаусса . Для вычисления LU-разложения с использованием этого алгоритма требуется операции с плавающей запятой, игнорируя члены низшего порядка. Частичный поворот добавляет только квадратичный член; это не относится к полному повороту. [13]
Общее объяснение [ править ]
Обозначения [ править ]
Учитывая N × N матрицу размера , определять как оригинальная, немодифицированная версия матрицы . Надстрочный индекс в скобках (например, ) матрицы это версия матрицы. Матрица это матрица, в которой элементы ниже главной диагонали уже исключены до 0 методом исключения Гаусса для первого столбцы.
Ниже приведена матрица, которая поможет нам запомнить обозначения (где каждый представляет любое действительное число в матрице):
Процедура [ править ]
В ходе этого процесса мы постепенно изменяем матрицу используя операции со строками, пока она не станет матрицей в котором все элементы ниже главной диагонали равны нулю. При этом мы одновременно создадим две отдельные матрицы и , такой, что .
Мы определяем окончательную матрицу перестановок как единичную матрицу, в которой все одни и те же строки поменяны местами в том же порядке, что и матрица, пока она преобразуется в матрицу . Для нашей матрицы , мы можем начать с замены строк, чтобы обеспечить желаемые условия для n-го столбца. Например, мы можем поменять местами строки, чтобы выполнить частичный поворот, или сделать это, чтобы установить элемент поворота. на главной диагонали к ненулевому числу, чтобы мы могли завершить исключение Гаусса.
Для нашей матрицы , мы хотим установить каждый элемент ниже до нуля (где – элемент n-го столбца главной диагонали). Ниже мы обозначим каждый элемент как (где ). Устанавливать равным нулю, мы устанавливаем для каждой строки . Для этой операции . Как только мы выполнили операции со строками для первого столбцов, мы получили верхнетреугольную матрицу который обозначается .
Мы также можем создать нижнюю треугольную матрицу, обозначенную как , путем непосредственного ввода ранее рассчитанных значений по формуле ниже.
Пример [ править ]
Если нам дана матрица
Отношения, когда строки не меняются местами [ править ]
Если мы вообще не меняли местами строки во время этого процесса, мы можем выполнять операции со строками одновременно для каждого столбца. установив где представляет собой единичную матрицу размера N × N , в которой ее n -й столбец заменен транспонированным вектором Другими словами, нижняя треугольная матрица
Выполнение всех операций над строками для первого столбцы с использованием формула эквивалентна нахождению разложения
Теперь вычислим последовательность . Мы знаем это имеет следующую формулу.
Если есть две нижние треугольные матрицы с единицами на главной диагонали, и ни одна из них не имеет ненулевого элемента ниже главной диагонали в том же столбце, что и другая, то мы можем включить все ненулевые элементы в одно и то же место в произведении. из двух матриц. Например:
Наконец, умножьте вместе и сгенерировать объединенную матрицу, обозначенную как (как упоминалось ранее). Использование матрицы , мы получаем
Понятно, что для того, чтобы этот алгоритм работал, нужно иметь на каждом этапе (см. определение ). Если в какой-то момент это предположение не сработает, необходимо поменять местами n -ю строку с другой строкой, расположенной ниже, прежде чем продолжить. Вот почему LU-разложение в целом выглядит так: .
LU Разложение Краута [ править ]
Обратите внимание, что разложение, полученное с помощью этой процедуры, представляет собой разложение Дулитла : главная диагональ L состоит исключительно из 1 с. Если продолжить удаление элементов над главной диагональю путем добавления кратных столбцов ( вместо удаления элементов ниже диагонали путем добавления кратных строк ), мы получим разложение Крута , где главная диагональ U равна 1 с. .
Другой (эквивалентный) способ создания разложения Краута данной матрицы A состоит в том, чтобы получить разложение Дулитла транспонированного A . Действительно, если — LU-разложение, полученное с помощью алгоритма, представленного в этом разделе, а затем путем принятия и , у нас это есть представляет собой разложение Краута.
Через рекурсию [ править ]
Кормен и др. [14] описать рекурсивный алгоритм LUP-разложения.
Учитывая матрицу A , пусть P 1 будет матрицей перестановки такой, что
- ,
где есть ненулевая запись , если в первом столбце A ; или в противном случае возьмите P 1 в качестве единичной матрицы. Теперь позвольте , если ; или в противном случае. У нас есть
Теперь мы можем рекурсивно найти LUP-разложение. . Позволять . Поэтому
что является LUP-разложением A .
Рандомизированный алгоритм [ править ]
Можно найти аппроксимацию низкого ранга для LU-разложения, используя рандомизированный алгоритм. Учитывая входную матрицу и желаемый низкий ранг , рандомизированный LU возвращает матрицы перестановок и нижняя/верхняя трапециевидные матрицы размера и соответственно, такой, что с большой вероятностью , где – константа, зависящая от параметров алгоритма и это -е сингулярное значение входной матрицы . [15]
Теоретическая сложность [ править ]
Если две матрицы порядка n можно перемножить за время M ( n ), где M ( n ) ≥ n а для некоторого a > 2 LU-разложение можно вычислить за время O( M ( n )). [16] Это означает, например, что O( n 2.376 ) существует алгоритм, основанный на алгоритме Копперсмита-Винограда .
Разложение разреженной матрицы [ править ]
Разработаны специальные алгоритмы факторизации больших разреженных матриц . Эти алгоритмы пытаются найти разреженные L и U. факторы В идеале стоимость вычислений определяется количеством ненулевых записей, а не размером матрицы.
Эти алгоритмы используют свободу обмена строк и столбцов для минимизации заполнения (записей, которые изменяются от начального нуля до ненулевого значения во время выполнения алгоритма).
Общую обработку порядков, минимизирующих заполнение, можно решить с помощью теории графов .
Приложения [ править ]
Решение линейных уравнений [ править ]
Дана система линейных уравнений в матричной форме
мы хотим решить уравнение для x , учитывая A и b . Предположим, мы уже получили LUP-разложение A такое, что , так .
В этом случае решение осуществляется в два логических этапа:
- Сначала решаем уравнение для тебя .
- Во-вторых, решаем уравнение для х .
В обоих случаях мы имеем дело с треугольными матрицами ( L и U ), которые можно решить напрямую путем прямой и обратной замены без использования процесса исключения Гаусса (однако нам нужен этот процесс или его эквивалент для вычисления самого LU- разложения).
Вышеописанную процедуру можно многократно применять для решения уравнения несколько раз для разных b . В этом случае быстрее (и удобнее) выполнить LU-разложение матрицы A один раз, а затем решить треугольные матрицы для разных b , вместо того, чтобы каждый раз использовать метод исключения Гаусса. Можно было бы подумать, что матрицы L и U «закодировали» процесс исключения Гаусса.
Стоимость решения системы линейных уравнений составляет примерно операции с плавающей запятой, если матрица имеет размер . Это делает его в два раза быстрее алгоритмов, основанных на QR-разложении , стоимость которого составляет около операции с плавающей запятой при отражений Хаусхолдера использовании . По этой причине обычно предпочтительнее LU-разложение. [17]
Инвертирование матрицы [ править ]
При решении систем уравнений b обычно рассматривают как вектор длиной, равной высоте A. матрицы Однако при инверсии матрицы вместо вектора b у нас есть матрица B , где B — матрица размера n на p , так что мы пытаемся найти матрицу X (также n матрицу размера на p ):
представленный ранее, для решения каждого столбца матрицы X. Мы можем использовать тот же алгоритм , Теперь предположим, что B — единичная матрица размера n . что результат X должен быть обратным результату A. Из этого следовало бы , [18]
Вычисление определителя [ править ]
Учитывая LUP-разложение квадратной матрицы A определитель A можно вычислить непосредственно как
Второе уравнение следует из того факта, что определитель треугольной матрицы представляет собой просто произведение ее диагональных элементов и что определитель матрицы перестановок равен (−1). С где S — количество перестановок строк в разложении.
В случае разложения LU с полным поворотом также равно правой части приведенного выше уравнения, если мы позволим S быть общим количеством перестановок строк и столбцов.
Тот же метод легко применим к LU-разложению, устанавливая P равным единичной матрице.
Примеры кода [ править ]
Пример кода C [ править ]
/* ВХОД: A - массив указателей на строки квадратной матрицы размером N
* Tol - небольшое число допуска для обнаружения сбоя, когда матрица близка к вырождению
* ВЫХОД: Матрица A изменяется, она содержит копии обеих матриц LE и U как A=(LE)+U такой, что P*A=L*U.
* Матрица перестановок хранится не в виде матрицы, а в виде целочисленного вектора P размера N+1
*, содержащего индексы столбцов, где матрица перестановок имеет значение «1». Последний элемент P[N]=S+N,
* где S — количество перестановок строк, необходимых для вычисления определителя, det(P)=(-1)^S
*/
int LUPDecompose ( double ** A , int N , двойной Тол , int * P ) {
int я , j , k , imax ;
двойной maxA , * ptr , absA ;
для ( я знак равно 0 ; я <= N ; я ++ )
п [ я ] знак равно я ; //Матрица перестановок единиц, P[N] инициализируется N
for ( i = 0 ; i < N ; i ++ ) {
maxA = 0.0 ;
имакс = я ;
for ( k = i ; k < N ; k ++ )
if (( absA = fabs ( A [ k ][ i ])) > maxA ) {
maxA = absA ;
имакс = к ;
}
if ( maxA < Tol ) возвращает 0 ; // ошибка, матрица вырождена
if ( imax != i ) {
// поворот P
j = P [ i ];
п [ я ] = п [ имакс ];
п [ имакс ] знак равно j ;
// поворот строк A
ptr = A [ i ];
А [ я ] = А [ imax ];
А [ имакс ] = ПТР ;
//считаем пивоты, начиная с N (для определителя)
П [ Н ] ++ ;
}
for ( j знак равно я + 1 ; j < N ; j ++ ) {
A [ j ] [ я ] / = A [ я ] [ я ];
for ( k = i + 1 ; k < N ; k ++ )
A [ j ][ k ] -= A [ j ][ i ] * A [ i ] [ k ];
}
}
вернуть 1 ; //декомпозиция завершена
}
/* INPUT: A,P заполнены LUPDecompose; б - правый вектор; N - размерность
* ВЫХОД: x - вектор решения A*x=b
*/
void LUPSolve ( double ** A , int * P , double * b , int N , double * x ) {
for ( int i = 0 ; i < N ; я ++ ) {
Икс [ я ] знак равно б [ п [ я ]];
for ( int k = 0 ; k < i ; k ++ )
x [ i ] -= A [ i ] [ k ] * x [ k ];
}
for ( int i = N - 1 ; я >= 0 ; я -- ) {
for ( int k = i + 1 ; k < N ; k ++ )
x [ i ] -= A [ i ] [ k ] * х [ к ];
Икс [ я ] / = А [ я ] [ я ];
}
}
/* ВВОД: A,P заполнены LUPDecompose; N — размерность
* ВЫХОД: IA — обратная исходной матрице
*/
void LUPInvert ( double ** A , int * P , int N , double ** IA ) {
for ( int j = 0 ; j < N ; j + + ) {
for ( int я знак равно 0 ; я < N ; я ++ ) {
IA [ я ][ j ] знак равно п [ я ] == j ? 1,0 : 0,0 ;
for ( int k = 0 ; k < i ; k ++ )
IA [ i ] [ j ] -= A [ i ] [ k ] * IA [ k ] [ j ];
}
for ( int i = N - 1 ; я >= 0 ; я -- ) {
for ( int k = i + 1 ; k < N ; k ++ )
IA [ i ][ j ] -= A [ i ] [ к ] * ИА [ к ][ j ];
IA [ i ][ j ] /= A [ i ][ i ];
}
}
}
/* INPUT: A,P заполнены LUPDecompose; Н - размерность.
* ВЫХОД: Функция возвращает определитель исходной матрицы
*/
double LUPDeterminant ( double ** A , int * P , int N ) {
double det = A [ 0 ][ 0 ];
for ( int я знак равно 1 ; я < N ; я ++ )
det *= A [ я ][ я ];
возврат ( P [ N ] - N ) % 2 == 0 ? что : - это ;
}
Пример кода C# [ править ]
public class SystemOfLinearEquations
{
public double [] SolveUsingLU ( double [,] матрица , double [] rightPart , int n )
{
// разложение матрицы
double [,] lu = new double [ n , n ];
двойная сумма = 0 ;
for ( int я знак равно 0 ; я < n ; я ++ )
{
for ( int j знак равно я ; j < n ; j ++ )
{
sum = 0 ;
for ( int k = 0 ; k < i ; k ++ )
sum += lu [ i , k ] * lu [ k , j ];
лу [ я , j ] = матрица [ я , j ] - сумма ;
}
for ( int j знак равно я + 1 ; j < n ; j ++ )
{
sum = 0 ;
for ( int k = 0 ; k < i ; k ++ )
sum += lu [ j , k ] * lu [ k , i ];
lu [ j , i ] = ( 1 / lu [ i , i ]) * ( матрица [ j , i ] - сумма );
}
}
// lu = L+UI
// находим решение Ly = b
double [] y = new double [ n ];
для ( int я знак равно 0 ; я < п ; я ++ )
{
сумма = 0 ;
for ( int k = 0 ; k < i ; k ++ )
sum += lu [ i , k ] * y [ k ];
y [ я ] = правая часть [ я ] - сумма ;
}
// находим решение Ux = y
double [] x = new double [ n ];
для ( int я знак равно п - 1 ; я >= 0 ; я -- )
{
сумма = 0 ;
for ( int k = i + 1 ; k < n ; k ++ )
sum += lu [ i , k ] * x [ k ];
Икс [ я ] = ( 1 / lu [ я , я ]) * ( y [ я ] - сумма );
}
Вернуть х ;
}
}
Пример кода MATLAB [ править ]
функция LU = LUDecompDoolittle ( A )
n = длина ( A );
ЛУ = А ;
% разложения матрицы, метод Дулитла
для i = 1 : 1 : n
для j = 1 :( i - 1 )
LU ( i , j ) = ( LU ( i , j ) - LU ( i , 1 :( j - 1) )) * ЛУ ( 1 :( j - 1 ), j )) / LU ( j , j );
конец
j знак равно я : п ;
ЛУ ( я , j ) = ЛУ ( я , j ) - ЛУ ( я , 1 : ( я - 1 )) * ЛУ ( 1 : ( я - 1 ), j );
end
%LU = L+UI
конечная
функция x = SolveLinearSystem ( LU, B )
n = длина ( LU );
y = нули ( размер ( B ));
% найти решение Ly = B
для i = 1 : n
y ( i ,:) = B ( i ,:) - LU ( i , 1 : i ) * y ( 1 : i ,:);
end
% найти решение Ux = y
x = нули ( размер ( B ));
для i = n :( - 1 ): 1
x ( i ,:) = ( y ( i ,:) - LU ( i ,( i + 1 ): n ) * x (( i + 1 ): n ,: )) / ЛУ ( я , я );
конец
конец
А знак равно [ 4 3 3 ; 6 3 3 ; 3 4 3 ]
LU = LUDecompDoolittle ( A )
B знак равно [ 1 2 3 ; 4 5 6 ; 7 8 9 ; 10 11 12 ] '
x = SolveLinearSystem ( LU , B )
A * x
См. также [ править ]
- Блочное разложение LU
- Разложение Брюа
- Разложение Холецкого
- Разложение матрицы Краута
- Неполная LU-факторизация
- Сокращение ЛУ
- Разложение матрицы
- QR-разложение
Примечания [ править ]
- ^ Шварценберг-Черни, А. (1995). «О матричной факторизации и эффективном решении методом наименьших квадратов». Серия дополнений по астрономии и астрофизике . 110 : 405. Бибкод : 1995A&AS..110..405S .
- ^ Дуайер, Пол С. (1951). Линейные вычисления . Нью-Йорк: Уайли.
- ^ Перейти обратно: а б Окунев и Джонсон (1997) , Следствие 3.
- ^ Трефетен и Бау (1997) , с. 166.
- ^ Трефетен и Бау (1997) , с. 161.
- ^ Лэй, Дэвид С. (2016). Линейная алгебра и ее приложения . Стивен Р. Лэй, Джудит Макдональд (Пятое изд.). Харлоу. п. 142. ИСБН 978-1-292-09223-2 . OCLC 920463015 .
{{cite book}}
: CS1 maint: отсутствует местоположение издателя ( ссылка ) - ^ Риготти (2001) , ведущий второстепенный исполнитель
- ^ Перейти обратно: а б Хорн и Джонсон (1985) , следствие 3.5.5
- ^ Хорн и Джонсон (1985) , Теорема 3.5.2.
- ^ Нхиайи, Ли; Фан-Ямада, Туетдонг (2021). «Изучение возможного разложения LU». Североамериканский журнал GeoGebra . 9 (1).
- ^ Окунев и Джонсон (1997)
- ^ Домохозяин (1975)
- ^ Голуб и Ван Лоан (1996) , с. 112, 119.
- ^ Кормен, Томас Х .; Лейзерсон, Чарльз Э .; Ривест, Рональд Л .; Стоун, Клиффорд (2001). Введение в алгоритмы . MIT Press и McGraw-Hill. ISBN 978-0-262-03293-3 .
- ^ Шабат, Гил; Шмуэли, Янив; Айзенбуд, Ярив; Авербух, Амир (2016). «Рандомизированное LU-разложение». Прикладной и вычислительный гармонический анализ . 44 (2): 246–272. arXiv : 1310.7202 . дои : 10.1016/j.acha.2016.04.006 . S2CID 1900701 .
- ^ Банч и Хопкрофт (1974)
- ^ Трефетен и Бау (1997) , с. 152.
- ^ Голуб и Ван Лоан (1996) , с. 121
Ссылки [ править ]
- Банч, Джеймс Р.; Хопкрофт, Джон (1974), «Треугольная факторизация и инверсия путем быстрого умножения матриц», Mathematics of Computation , 28 (125): 231–236, doi : 10.2307/2005828 , hdl : 1813/6003 , ISSN 0025-5718 , JSTOR 2005828 .
- Кормен, Томас Х .; Лейзерсон, Чарльз Э .; Ривест, Рональд Л .; Штейн, Клиффорд (2001), Введение в алгоритмы , MIT Press и McGraw-Hill, ISBN 978-0-262-03293-3 .
- Голуб, Джин Х .; Ван Лоан, Чарльз Ф. (1996), Матричные вычисления (3-е изд.), Балтимор: Джонс Хопкинс, ISBN 978-0-8018-5414-9 .
- Хорн, Роджер А.; Джонсон, Чарльз Р. (1985), Матричный анализ , Издательство Кембриджского университета, ISBN 978-0-521-38632-6 . См. раздел 3.5. Н - 1
- Хаусхолдер, Алстон С. (1975), Теория матриц в численном анализе , Нью-Йорк: Dover Publications , MR 0378371 .
- Окунев Павел; Джонсон, Чарльз Р. (1997), Необходимые и достаточные условия существования LU-факторизации произвольной матрицы , arXiv : math.NA/0506382 .
- Пул, Дэвид (2006), Линейная алгебра: современное введение (2-е изд.), Канада: Томсон Брукс/Коул, ISBN 978-0-534-99845-5 .
- Пресс, WH; Теукольский, С.А.; Феттерлинг, WT; Фланнери, BP (2007), «Раздел 2.3» , Численные рецепты: искусство научных вычислений (3-е изд.), Нью-Йорк: Cambridge University Press, ISBN 978-0-521-88068-8 .
- Трефетен, Ллойд Н .; Бау, Дэвид (1997), Численная линейная алгебра , Филадельфия: Общество промышленной и прикладной математики, ISBN 978-0-89871-361-9 .
- Риготти, Лука (2001), ECON 2001 - Введение в математические методы, лекция 8
Внешние ссылки [ править ]
Рекомендации
- LU-разложение на MathWorld .
- LU-разложение на Math-Linux .
- Разложение LU в Институте целостных численных методов
- Факторизация LU-матрицы . Справочник MATLAB.
Компьютерный код
- LAPACK — это набор подпрограмм FORTRAN для решения задач плотной линейной алгебры.
- ALGLIB включает частичный порт LAPACK на C++, C#, Delphi и т. д.
- Код C++ , профессор Дж. Лумис, Дейтонский университет
- Код C , Библиотека исходного кода по математике
- Код ржавчины
- ЛУ в X10
Интернет-ресурсы