private double[,] createQuadraticTermsMatrix()
{
int n = Variables.Count;
double[,] Q = new double[n, n];
for (int i = 0; i < n; i++)
{
var x = Indices[i];
for (int j = 0; j < n; j++)
{
var y = Indices[j];
var k = Tuple.Create(x, y);
if (quadratic.ContainsKey(k))
{
double s = quadratic[k];
Q[i, j] = s;
Q[j, i] = s;
}
}
}
for (int i = 0; i < n; i++)
Q[i, i] *= 2;
return Q;
}