toop_project.src.Matrix.DiagonalMatrix.LtMult C# (CSharp) Method

LtMult() public method

public LtMult ( Vector x, bool UseDiagonal ) : Vector
x toop_project.src.Vector_.Vector
UseDiagonal bool
return toop_project.src.Vector_.Vector
        public override Vector LtMult(Vector x, bool UseDiagonal)
        {
            if (di.Length == x.Size)
            {
                Vector result = new Vector(di.Length);
                result.Nullify();

                for (int j = 0; j < shift_l.Length; j++)
                    for (int i = shift_l[j]; i < di.Length; i++)
                        result[i - shift_l[j]] += al[i][j] * x[i];

                if (UseDiagonal)
                    for (int i = 0; i < di.Length; i++)
                        result[i] += di[i] * x[i];

                return result;
            }
            else
                throw new Exception("Диагональный формат: Несовпадение размерностей матрицы и вектора в умножении нижнего (T) треугольника");
        }