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;
}
}
}