public void EvalTest() { // Expected values calculated using Wolfram Alpha https://www.wolframalpha.com/ var f = new Polynomial(new double[] { 1, 2, 3 }); double fVal = f.EvaluateAt(1); Assert.AreEqual(6, fVal, 0.1); fVal = f.EvaluateAt(2); Assert.AreEqual(17, fVal, 0.1); fVal = f.EvaluateAt(3.415); Assert.AreEqual(42.8167, fVal, 0.1); fVal = f.EvaluateAt(-50.543); Assert.AreEqual(7563.7, fVal, 0.1); f = new Polynomial(new double[] { 83.23, 99.0, -92.23, 12, 13, 190 }); fVal = f.EvaluateAt(-9.345); Assert.AreEqual(-1.3460527721401352e7, fVal, 0.0001); fVal = f.EvaluateAt(0.0493); Assert.AreEqual(87.8881, fVal, 0.0001); }
public void MultiplicationTest() { // (1 + x + x^2)(2 + 3x) = (2 + 5x + 5x^2 + 3x^3) var f = new Polynomial(new double[] { 1, 1, 1 }); var g = new Polynomial(new double[] { 2, 3 }); Polynomial result = f * g; Assert.AreEqual(3, result.Degree); Assert.AreEqual(2, result.Coefficients[0]); Assert.AreEqual(5, result.Coefficients[1]); Assert.AreEqual(5, result.Coefficients[2]); Assert.AreEqual(3, result.Coefficients[3]); // Degree 5: (2 + 4x^3 - 93x^5) f = new Polynomial(new double[] { 2, 0, 0, 4, 0, -93 }); // Degree 17: (42x + 2.1x^17) var gCoefficients = new double[18]; gCoefficients[1] = 42; gCoefficients[17] = 2.1; g = new Polynomial(gCoefficients); // This should result in a degree 22 polynomial // Expecting: -195.3 x^22 + 8.4 x^20 + 4.2 x^17 - 3906 x^6 + 168 x^4 + 84 x result = f * g; Assert.AreEqual(22, result.Degree); Assert.AreEqual(-195.3, result.Coefficients[22]); Assert.AreEqual(0, result.Coefficients[21]); Assert.AreEqual(8.4, result.Coefficients[20]); Assert.AreEqual(4.2, result.Coefficients[17]); Assert.AreEqual(-3906, result.Coefficients[6]); Assert.AreEqual(168, result.Coefficients[4]); Assert.AreEqual(84, result.Coefficients[1]); Assert.AreEqual(0, result.Coefficients[0]); double val = result.EvaluateAt(0.5); Assert.AreEqual(-8.53126, val, 0.0001); Console.WriteLine(result); }