Jump to content

LU-разложение

В численном анализе и алгебре линейной нижне-верхнее ( LU ) разложение или факторизация факторизуют матрицу как произведение нижней треугольной матрицы и верхней треугольной матрицы (см. матричное разложение ). Иногда продукт включает в себя матрицу перестановок также . LU-разложение можно рассматривать как матричную форму исключения Гаусса . Компьютеры обычно решают квадратные системы линейных уравнений с использованием LU-разложения, и это также ключевой шаг при инвертировании матрицы или вычислении определителя матрицы. Разложение LU было предложено польским астрономом Тадеушем Банакевичем в 1938 году. [1] Цитируем: «Похоже, что Гаусс и Дулитл применили метод [исключения] только к симметричным уравнениям. Более поздние авторы, например, Эйткен, Банакевич, Дуайер и Краут… подчеркивали использование этого метода или его вариаций в связи с несимметричными проблемами… Банакевич… видел суть… в том, что основная проблема на самом деле одна. матричной факторизации, или «разложения», как он это называл». [2] Его также иногда называют LR- разложением (факторы на левую и правую треугольные матрицы).

Определения [ править ]

LDU-разложение матрицы Уолша

Пусть A — квадратная матрица. Факторизация LU относится к факторизации A с правильным порядком строк и/или столбцов или перестановками на два фактора — нижнюю треугольную матрицу L и верхнюю треугольную матрицу U :

В нижней треугольной матрице все элементы выше диагонали равны нулю, в верхней треугольной матрице все элементы ниже диагонали равны нулю. Например, для матрицы A 3×3 ее LU-разложение выглядит так:

Без надлежащего упорядочения или перестановок в матрице факторизация может не осуществиться. Например, легко проверить (развернув матричное умножение ), что . Если , то хотя бы один из и должно быть равно нулю, что означает, что либо , либо U сингулярны L . Это невозможно, если A неособа (обратима). Это процедурная проблема. Его можно удалить, просто переупорядочив строки A так, чтобы первый элемент перестановочной матрицы был ненулевым. Ту же проблему на последующих этапах факторизации можно решить таким же образом; см. основную процедуру ниже.

факторизация с частичным поворотом - LU

Оказывается, для LU-факторизации достаточно правильной перестановки в строках (или столбцах). Факторизация LU с частичным поворотом (LUP) часто относится к факторизации LU только с перестановками строк:

где L и U — снова нижняя и верхняя треугольные матрицы, а матрица перестановок , которая при умножении слева на A переупорядочивает строки A. P Оказывается, все квадратные матрицы можно факторизовать в таком виде: [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- факторизация также будет уникальной, если мы потребуем, чтобы диагональ (или ) состоит из единиц.

Вообще любая квадратная матрица может иметь одно из следующих значений:

  1. уникальная LU-факторизация (как упоминалось выше);
  2. бесконечно много LU-факторизаций, если два или более любых первых ( n -1) столбцов линейно зависимы или любой из первых ( n -1) столбцов равен 0;
  3. нет 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 такое, что , так .

В этом случае решение осуществляется в два логических этапа:

  1. Сначала решаем уравнение для тебя .
  2. Во-вторых, решаем уравнение для х .

В обоих случаях мы имеем дело с треугольными матрицами ( 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 [ править ]

/* INPUT: A - array of pointers to rows of a square matrix having dimension N
 *        Tol - small tolerance number to detect failure when the matrix is near degenerate
 * OUTPUT: Matrix A is changed, it contains a copy of both matrices L-E and U as A=(L-E)+U such that P*A=L*U.
 *        The permutation matrix is not stored as a matrix, but in an integer vector P of size N+1 
 *        containing column indexes where the permutation matrix has "1". The last element P[N]=S+N, 
 *        where S is the number of row exchanges needed for determinant computation, det(P)=(-1)^S    
 */
int LUPDecompose(double **A, int N, double Tol, int *P) {

    int i, j, k, imax; 
    double maxA, *ptr, absA;

    for (i = 0; i <= N; i++)
        P[i] = i; //Unit permutation matrix, P[N] initialized with N

    for (i = 0; i < N; i++) {
        maxA = 0.0;
        imax = i;

        for (k = i; k < N; k++)
            if ((absA = fabs(A[k][i])) > maxA) { 
                maxA = absA;
                imax = k;
            }

        if (maxA < Tol) return 0; //failure, matrix is degenerate

        if (imax != i) {
            //pivoting P
            j = P[i];
            P[i] = P[imax];
            P[imax] = j;

            //pivoting rows of A
            ptr = A[i];
            A[i] = A[imax];
            A[imax] = ptr;

            //counting pivots starting from N (for determinant)
            P[N]++;
        }

        for (j = i + 1; j < N; j++) {
            A[j][i] /= A[i][i];

            for (k = i + 1; k < N; k++)
                A[j][k] -= A[j][i] * A[i][k];
        }
    }

    return 1;  //decomposition done 
}

/* INPUT: A,P filled in LUPDecompose; b - rhs vector; N - dimension
 * OUTPUT: x - solution vector of A*x=b
 */
void LUPSolve(double **A, int *P, double *b, int N, double *x) {

    for (int i = 0; i < N; i++) {
        x[i] = b[P[i]];

        for (int k = 0; k < i; k++)
            x[i] -= A[i][k] * x[k];
    }

    for (int i = N - 1; i >= 0; i--) {
        for (int k = i + 1; k < N; k++)
            x[i] -= A[i][k] * x[k];

        x[i] /= A[i][i];
    }
}

/* INPUT: A,P filled in LUPDecompose; N - dimension
 * OUTPUT: IA is the inverse of the initial matrix
 */
void LUPInvert(double **A, int *P, int N, double **IA) {
  
    for (int j = 0; j < N; j++) {
        for (int i = 0; i < N; i++) {
            IA[i][j] = P[i] == 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; i >= 0; i--) {
            for (int k = i + 1; k < N; k++)
                IA[i][j] -= A[i][k] * IA[k][j];

            IA[i][j] /= A[i][i];
        }
    }
}

/* INPUT: A,P filled in LUPDecompose; N - dimension. 
 * OUTPUT: Function returns the determinant of the initial matrix
 */
double LUPDeterminant(double **A, int *P, int N) {

    double det = A[0][0];

    for (int i = 1; i < N; i++)
        det *= A[i][i];

    return (P[N] - N) % 2 == 0 ? det : -det;
}

Пример кода C# [ править ]

public class SystemOfLinearEquations
{
    public double[] SolveUsingLU(double[,] matrix, double[] rightPart, int n)
    {
        // decomposition of matrix
        double[,] lu = new double[n, n];
        double sum = 0;
        for (int i = 0; i < n; i++)
        {
            for (int j = i; j < n; j++)
            {
                sum = 0;
                for (int k = 0; k < i; k++)
                    sum += lu[i, k] * lu[k, j];
                lu[i, j] = matrix[i, j] - sum;
            }
            for (int j = i + 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]) * (matrix[j, i] - sum);
            }
        }

        // lu = L+U-I
        // find solution of Ly = b
        double[] y = new double[n];
        for (int i = 0; i < n; i++)
        {
            sum = 0;
            for (int k = 0; k < i; k++)
                sum += lu[i, k] * y[k];
            y[i] = rightPart[i] - sum;
        }
        // find solution of Ux = y
        double[] x = new double[n];
        for (int i = n - 1; i >= 0; i--)
        {
            sum = 0;
            for (int k = i + 1; k < n; k++)
                sum += lu[i, k] * x[k];
            x[i] = (1 / lu[i, i]) * (y[i] - sum);
        }
        return x;
    }
}

Пример кода MATLAB [ править ]

function LU = LUDecompDoolittle(A)
    n = length(A);
    LU = A;
    % decomposition of matrix, Doolittle's Method
    for i = 1:1:n
        for j = 1:(i - 1)
            LU(i,j) = (LU(i,j) - LU(i,1:(j - 1))*LU(1:(j - 1),j)) / LU(j,j);
        end
        j = i:n;
        LU(i,j) = LU(i,j) - LU(i,1:(i - 1))*LU(1:(i - 1),j);
    end
    %LU = L+U-I
end

function x = SolveLinearSystem(LU, B)
    n = length(LU);
    y = zeros(size(B));
    % find solution of Ly = B
    for i = 1:n
        y(i,:) = B(i,:) - LU(i,1:i)*y(1:i,:);
    end
    % find solution of Ux = y
    x = zeros(size(B));
    for i = n:(-1):1
        x(i,:) = (y(i,:) - LU(i,(i + 1):n)*x((i + 1):n,:))/LU(i, i);
    end    
end

A = [ 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

См. также [ править ]

Примечания [ править ]

  1. ^ Шварценберг-Черни, А. (1995). «О матричной факторизации и эффективном решении методом наименьших квадратов». Серия дополнений по астрономии и астрофизике . 110 : 405. Бибкод : 1995A&AS..110..405S .
  2. ^ Дуайер, Пол С. (1951). Линейные вычисления . Нью-Йорк: Уайли.
  3. ^ Jump up to: Перейти обратно: а б Окунев и Джонсон (1997) , Следствие 3.
  4. ^ Трефетен и Бау (1997) , с. 166.
  5. ^ Трефетен и Бау (1997) , с. 161.
  6. ^ Лэй, Дэвид С. (2016). Линейная алгебра и ее приложения . Стивен Р. Лэй, Джудит Макдональд (Пятое изд.). Харлоу. п. 142. ИСБН  978-1-292-09223-2 . OCLC   920463015 . {{cite book}}: CS1 maint: отсутствует местоположение издателя ( ссылка )
  7. ^ Риготти (2001) , ведущий второстепенный исполнитель
  8. ^ Jump up to: Перейти обратно: а б Хорн и Джонсон (1985) , следствие 3.5.5
  9. ^ Хорн и Джонсон (1985) , Теорема 3.5.2.
  10. ^ Нхиайи, Ли; Фан-Ямада, Туетдонг (2021). «Изучение возможного разложения LU». Североамериканский журнал GeoGebra . 9 (1).
  11. ^ Окунев и Джонсон (1997)
  12. ^ Домохозяин (1975)
  13. ^ Голуб и Ван Лоан (1996) , с. 112, 119.
  14. ^ Кормен, Томас Х .; Лейзерсон, Чарльз Э .; Ривест, Рональд Л .; Стоун, Клиффорд (2001). Введение в алгоритмы . MIT Press и McGraw-Hill. ISBN  978-0-262-03293-3 .
  15. ^ Шаббат, Гил; Шмуэли, Янив; Эйзенбуд, Ярив; Авербух, Амир (2016). «Рандомизированное LU-разложение». Прикладной и вычислительный гармонический анализ . 44 (2): 246–272. arXiv : 1310.7202 . дои : 10.1016/j.acha.2016.04.006 . S2CID   1900701 .
  16. ^ Банч и Хопкрофт (1974)
  17. ^ Трефетен и Бау (1997) , с. 152.
  18. ^ Голуб и Ван Лоан (1996) , с. 121

Ссылки [ править ]

Внешние ссылки [ править ]

Ссылки

Компьютерный код

Интернет-ресурсы

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 325f0bf29f9c24bead18d24a9c333727__1710119040
URL1:https://arc.ask3.ru/arc/aa/32/27/325f0bf29f9c24bead18d24a9c333727.html
Заголовок, (Title) документа по адресу, URL1:
LU decomposition - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)