public override Vector LMult(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] += al[i][j] * x[i - shift_l[j]];
if (UseDiagonal)
for (int i = 0; i < di.Length; i++)
result[i] += di[i] * x[i];
return result;
}
else
throw new Exception("Диагональный формат: Несовпадение размерностей матрицы и вектора в умножении нижнего треугольника");
}