public void TestFindsInfiniteSolutions() { var firstEquation = new LinearEquation(18, -3, 45); var secondEquation = new LinearEquation(6, -1, 15); var coefficients = new List <LinearEquation>() { firstEquation, secondEquation }; bool invalidCoefficients; var actualSolution = LinearSimultaneousEquationsAnalysisFunctions.CalculateSolution(coefficients, out invalidCoefficients); var expectedSolution = new LinearSimultaneousEquationsSolution(Convert.ToDouble(-14) / Convert.ToDouble(6), 1, false, true); Assert.IsTrue(EqualSolutions(expectedSolution, actualSolution)); }
public void TestFindsNoSolution() { var firstEquation = new LinearEquation(18, -3, 46); var secondEquation = new LinearEquation(6, -1, 12); var coefficients = new List <LinearEquation>() { firstEquation, secondEquation }; bool invalidCoefficients; var actualSolution = LinearSimultaneousEquationsAnalysisFunctions.CalculateSolution(coefficients, out invalidCoefficients); var expectedSolution = new LinearSimultaneousEquationsSolution(Double.NaN, Double.NaN, true, false); Assert.IsTrue(EqualSolutions(expectedSolution, actualSolution)); }
public void TestFindsUniqueSolution() { var firstEquation = new LinearEquation(3, 2, -36); var secondEquation = new LinearEquation(5, 4, -64); var coefficients = new List <LinearEquation>() { firstEquation, secondEquation }; bool invalidCoefficients; var actualSolution = LinearSimultaneousEquationsAnalysisFunctions.CalculateSolution(coefficients, out invalidCoefficients); var expectedSolution = new LinearSimultaneousEquationsSolution(8, 6, false, false); Assert.IsTrue(EqualSolutions(expectedSolution, actualSolution)); Assert.IsFalse(invalidCoefficients); }
public LinearSimultaneousEquations CovertToLinearSimultaneousEquations() { var equations = new List <LinearEquation>() { new LinearEquation(FirstEquationXTerm, FirstEquationYTerm, FirstEquationConstantTerm), new LinearEquation(SecondEquationXTerm, SecondEquationYTerm, SecondEquationConstantTerm) }; var solution = LinearSimultaneousEquationsAnalysisFunctions.CalculateSolution(equations, out var invalidSolution); if (invalidSolution) { throw new Exception("Data was stored incorrectly."); } return(new LinearSimultaneousEquations(equations, solution)); }