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

LSolve() public method

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