IMath.Mqr

Синтаксис

Mqr(Data: Array; Var Q: Array; Var R: Array);

Параметры

Data. Входной параметр, двумерный массив;

Примечание. Входной двумерный массив может быть размерности n×m (прямоугольная матрица) или n×n (квадратная матрица).

Q. Выходной параметр, двумерный массив размерности n×n;

R. Выходной параметр, двумерный массив размерности n×m.

Описание

Метод Mqr возвращает результат QR-разложения вещественной матрицы.

Комментарии

QR-разложение матрицы - представление матрицы в виде произведения квадратной ортогональной матрицы Q и верхнетреугольной матрицы R. Произведение матриц Q·R дает исходную матрицу.

Для нахождения QR-разложения используется преобразование Хаусхолдера.

Пример

Для выполнения примера добавьте ссылку на системную сборку MathFin.

Sub UserProc;
Var 
    a: Array Of Double;
    Q, R: Array Of Double;
    i,j: Integer;
    str: String;
Begin
    a := New double[2,4];
    // Входная матрица: 
    a[0,0] := 1;    a[0,1] := 1;    a[0,2] := 2;        a[0,3] := 0;
    a[1,0] := 1;    a[1,1] := 0;    a[1,2] := -1.4142;  a[1,3] := 0;
    // QR-разложение:
    math.Mqr(a, Q, R);
    Debug.WriteLine("Q =");
    For i := 0 To Q.GetUpperBound(1Do
        str := "";
        For j := 0 To Q.GetUpperBound(2Do
            str := str + Q[i, j].ToString + "; ";
        End For;
        Debug.WriteLine(str);
    End For;
    Debug.WriteLine("R =");
    For i := 0 To R.GetUpperBound(1Do
        str := "";
        For j := 0 To R.GetUpperBound(2Do
            str := str + R[i, j].ToString + "; ";
        End For;
        Debug.WriteLine(str);
    End For;
End Sub UserProc;

После выполнения примера в окно консоли будет выведено QR-разложение исходной матрицы:

Q =

-0.707106781186547; 0.707106781186547;

-0.707106781186547; -0.707106781186547;

R =

-1.41421356237309; -0.707106781186547; -0.414223152419079; 0;

0; 0.707106781186547; 2.41420397232711; 0;

См. также:

IMath