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

LtMult() public method

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

                    return v;
                }
            }
        }