toop_project.src.Matrix.SparseMatrix.LtSolve C# (CSharp) Method

LtSolve() public method

public LtSolve ( Vector x, bool UseDiagonal ) : Vector
x Vector
UseDiagonal bool
return Vector
        public override Vector LtSolve(Vector x, bool UseDiagonal)
        {
            if (x.Size != n)
                throw new Exception("Несовпадение длин у операндов при LtSolve");
            else
            {
                int i, j;
                Vector v;
                if (UseDiagonal == true)// Деление на динагональ
                {
                    v = (Vector)x.Clone();// в смысле копирование элементов
                    for (i = n - 1; i >= 0; i--)
                    {
                        v[i] /= di[i];
                        for (j = ia[i]; j < ia[i + 1]; j++)
                            v[ja[j]] -= al[j] * v[i];
                    }
                    return v;
                }
                else// Без деления на диагональ
                {
                    v = (Vector)x.Clone();// в смысле копирование элементов
                    for (i = n - 1; i >= 0; i--)
                        for (j = ia[i]; j < ia[i + 1]; j++)
                            v[ja[j]] -= al[j] * v[i];
                    return v;
                }
            }
        }