IMath.MMult

Синтаксис Fore

MMult(A1: Array; A2: Array): Array;

Синтаксис Fore.NET

MMult(A1: System.Array; A2: System.Array): System.Array;

Параметры

A1. Массив вещественных чисел;

A2. Массив вещественных чисел.

Описание

Метод MMult возвращает произведение заданных матриц.

Комментарии

Результирующий массив будет с таким же числом строк, как A1 и с таким же числом столбцов, как A2.

Количество столбцов аргумента A1 должно быть таким же, как количество строк аргумента A2.

Пример Fore

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

Sub UserProc;
Var
    MM, matr1, matr2: Array Of Double;
    i, j: Integer;
Begin
    matr1 := New Double[33];
    matr1[00] := 1; matr1[01] := 9; matr1[02] := 9;
    matr1[10] := 2; matr1[11] := 15; matr1[12] := 4;
    matr1[20] := 8; matr1[21] := 1; matr1[22] := 13;
    matr2 := New Double[32];
    matr2[00] := 10; matr2[01] := 3;
    matr2[10] := 20; matr2[11] := 16;
    matr2[20] := 18; matr2[21] := 17
    MM := Math.MMult(matr1,matr2);
    If math.Status = 0 Then
        For i := 0 To MM.GetUpperBound(1Do
            For j := 0 To MM.GetUpperBound(2Do
                Debug.Write(MM[i, j].ToString + " ");
            End For;
            Debug.WriteLine("");
        End For;
        Else
        Debug.WriteLine("Ошибка " + Math.Status.ToString + ": " + Math.ErrorMsg);   
    End If;
End Sub UserProc;

В результате выполнения примера в окно консоли будет выведена матрица, равная произведению заданных матриц.

Пример Fore.NET

Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.

Примечание. При работе с двумерными массивами в Fore.NET следует учитывать следующую особенность: первым индексом указывается столбец, вторым - строка.

Imports Prognoz.Platform.Interop.MathFin;

Public Shared Sub Main(Params: StartParams);
Var
    MM, matr1, matr2: System.Array;
    i, j: Integer;
    Math: MathClass = New MathClass();
Begin
    matr1 := New Double[33];
    matr1[00] := 1; matr1[10] := 9; matr1[20] := 9;
    matr1[01] := 2; matr1[11] := 15; matr1[21] := 4;
    matr1[02] := 8; matr1[12] := 1; matr1[22] := 13;
    matr2 := New Double[23];
    matr2[00] := 10; matr2[10] := 3;
    matr2[01] := 20; matr2[11] := 16;
    matr2[02] := 18; matr2[12] := 17
    MM := Math.MMult(matr1,matr2);
    If math.Status = 0 Then
        For i := 0 To MM.GetUpperBound(0Do
            For j := 0 To MM.GetUpperBound(1Do
                System.Diagnostics.Debug.Write(MM[i, j].ToString() + " ");
            End For;
            System.Diagnostics.Debug.WriteLine("");
        End For;
        Else
        System.Diagnostics.Debug.WriteLine("Ошибка " + Math.Status.ToString() + ": " + Math.ErrorMsg);  
    End If;
End Sub;

См. также:

IMath