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

UMult() public method

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

                for (int j = 0; j < shift_u.Length; j++)
                    for (int i = shift_u[j]; i < di.Length; i++)
                        result[i - shift_u[j]] += au[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("Диагональный формат: Несовпадение размерностей матрицы и вектора в умножении верхнего треугольника");
        }