public void Solve() { Matrix coefficients = new Matrix(NUnknown.Value, NUnknown.Value); for (int i = 0; i != CoefficientMatrix.Count; ++i) { for (int j = 0; j != CoefficientMatrix[i].Count; ++j) { coefficients[i, j] = CoefficientMatrix[i][j].Val; } } //xxx check for nulls double[] b = BVector.Select(x => x.Val).ToArray(); double[] solution; bool success = _model.Solve(coefficients, b, out solution); if (success) { var builder = new StringBuilder(); for (int i = 0; i != solution.Length; ++i) { builder.Append(Unknowns[i] + " = " + solution[i] + "\n"); } SolutionText = builder.ToString(); } else { SolutionText = "Singular coefficient matrix"; } }