public override Vector LtMult(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 - shift_l[j]] += al[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("Диагональный формат: Несовпадение размерностей матрицы и вектора в умножении нижнего (T) треугольника");
}