示例#1
0
        public void QuadraticExpected(double c, double b, double a, double x1R, double x1I, double x2R, double x2I)
        {
            // c + b*x + a*x^2
            var     x = FindRoots.Quadratic(c, b, a);
            Complex x1 = x.Item1, x2 = x.Item2;

            // Expected roots?
            Complex r1 = new Complex(x1R, x1I), r2 = new Complex(x2R, x2I);

            Assert.IsTrue(x1.AlmostEqualRelative(r1, 1e-14) && x2.AlmostEqualRelative(r2, 1e-14) ||
                          x1.AlmostEqualRelative(r2, 1e-14) && x2.AlmostEqualRelative(r1, 1e-14));

            // Verify they really are roots
            AssertComplexEqual(Complex.Zero, c + b * x1 + a * x1 * x1, 1e-14);
            AssertComplexEqual(Complex.Zero, c + b * x2 + a * x2 * x2, 1e-14);
        }
示例#2
0
        public void QuadraticExpanded(double u, double v, double t)
        {
            // t*(x+u)*(x+v) = t*u*v + t*(u+v)*x + t*x^2
            double  c = t * u * v, b = t * (u + v), a = t;
            var     x = FindRoots.Quadratic(c, b, a);
            Complex x1 = x.Item1, x2 = x.Item2;

            // Expected Roots: -u, -v
            Complex r1 = new Complex(-u, 0d), r2 = new Complex(-v, 0d);

            Assert.IsTrue(x1.AlmostEqualRelative(r1, 1e-14) && x2.AlmostEqualRelative(r2, 1e-14) ||
                          x1.AlmostEqualRelative(r2, 1e-14) && x2.AlmostEqualRelative(r1, 1e-14));

            // Verify they really are roots
            AssertComplexEqual(Complex.Zero, c + b * x1 + a * x1 * x1, 1e-14);
            AssertComplexEqual(Complex.Zero, c + b * x2 + a * x2 * x2, 1e-14);
        }