コード例 #1
0
        public void Constructor_Polynomial()
        {
            Polynomial         constant = 1;
            PolynomialDivision v        = _x / constant;

            v.IsPolynomial.AssertIsTrue();
            v.IsConstant.AssertIsFalse();
            v.ToString().AssertIsEqualTo("x");
        }
コード例 #2
0
        public void Constructor_PolynomialDivision()
        {
            PolynomialDivision v = _x / _y;

            (v == 0).AssertIsFalse();
            v.IsPolynomial.AssertIsFalse();
            v.IsConstant.AssertIsFalse();

            v.GetOperation('x', 'y').Value(10, 2).AssertIsEqualTo(5);
        }
コード例 #3
0
        public void TryDivideBy_Polynomial()
        {
            PolynomialDivision numerator = (_x - 1) * (_x + 2);

            // test
            PolynomialDivision result;

            numerator.TryDivideBy(_x - 1, out result).AssertIsTrue();
            result.AssertIsEqualTo(_x + 2);
        }
        private static void EqualityAfterTransformation(PolynomialDivision polynomial)
        {
            var cartesianPoint = new Number[] { Term.x, Term.y, Term.z };
            var sphericalPoint = new HypersphericalCoordinate(Term.r, new Number[] { Term.θ, Term.φ });

            PolynomialDivision sphericalPolynomial = polynomial.ToSpherical(cartesianPoint, sphericalPoint);

            double sqrt2            = Math.Sqrt(2);
            double sqrt3            = Math.Sqrt(3);
            Number polynomialResult = polynomial.GetOperation(Term.x, Term.y, Term.z).Value(sqrt2, sqrt2, 2 * sqrt3);
            double sphericalResult  = sphericalPolynomial.GetOperation(Term.r, Term.θ, Term.φ).Value(4, Math.PI / 4, Math.PI / 3);

            polynomialResult.AssertIsEqualTo(sphericalResult);
        }
        public void GeneralizationForSum()
        {
            PolynomialDivision last = default;

            for (uint i = 2; i <= 5; ++i)
            {
                PolynomialDivision current = GetSum(i);
                if (last != default)
                {
                    last.AssertIsEqualTo(current.Composition(Number.GreekTerm(i - 2), 0));
                }
                last = current;
            }
        }
コード例 #6
0
        public void Constructor_Default()
        {
            PolynomialDivision v = default;

            v.AssertIsEqualTo(0);
            (v == 0).AssertIsTrue();
            v.IsPolynomial.AssertIsTrue();
            v.IsConstant.AssertIsTrue();
            v.ToString().AssertIsEqualTo("0");

            v.DerivativeBy('a').AssertIsEqualTo(0);

            (2 * v).AssertIsEqualTo(0);
            (v / 2).AssertIsEqualTo(0);

            v.GetOperation().Value().AssertIsEqualTo(0);
        }
コード例 #7
0
        public void Constructor_Variable()
        {
            PolynomialDivision v = 'a';

            (v == 0).AssertIsFalse();
            v.IsConstant.AssertIsFalse();
            v.IsPolynomial.AssertIsTrue();
            v.ToString().AssertIsEqualTo("a");

            ((PolynomialTerm)v).AssertIsEqualTo('a');

            v.DerivativeBy('a').AssertIsEqualTo(1);
            v.DerivativeBy('b').AssertIsEqualTo(0);

            (2 * v).AssertIsEqualTo(2 * Term.a);
            (v / 2).AssertIsEqualTo(0.5 * Term.a);

            v.GetOperation('a').Value(5).AssertIsEqualTo(5);
        }
コード例 #8
0
        public void Constructor_Constant()
        {
            PolynomialDivision v = 2;

            (v == 0).AssertIsFalse();
            v.IsPolynomial.AssertIsTrue();
            v.IsConstant.AssertIsTrue();
            v.ToString().AssertIsEqualTo("2");

            v.AssertIsEqualTo(2);
            (1 == v).AssertIsFalse();
            (0 == v).AssertIsFalse();

            v.DerivativeBy('a').AssertIsEqualTo(0);

            (2 * v).AssertIsEqualTo(4);
            (v / 2).AssertIsEqualTo(1);

            v.GetOperation().Value().AssertIsEqualTo(2);
        }
        public void GetCartesianAxisViewsRatiosDerivativesByAngle()
        {
            var sphericalPoint = new HypersphericalCoordinate(r, new Number[] { α, β, γ, δ });

            Span <Number> cartesianActual = new Number[5];

            sphericalPoint.ToCartesian(in cartesianActual);

            for (ushort anglePos = 0; anglePos < sphericalPoint.Angles.Length; ++anglePos)
            {
                PolynomialTerm angleTerm   = (PolynomialTerm)sphericalPoint.Angles.Span[anglePos];
                var            derivatives = new HypersphericalCoordinateOnAxisViewForAngleDerivatives(sphericalPoint, anglePos: anglePos).DerivativesCartesianVector;
                derivatives.Length.AssertIsEqualTo(sphericalPoint.DimensionsCount);
                for (ushort coordinatePos = 0; coordinatePos < cartesianActual.Length; ++coordinatePos)
                {
                    PolynomialDivision coordinate = (PolynomialDivision)cartesianActual[coordinatePos];
                    PolynomialDivision expected   = coordinate.DerivativeBy(angleTerm);
                    derivatives[coordinatePos].AssertIsEqualTo(expected);
                }
            }
        }
コード例 #10
0
        public void Composition_Division()
        {
            PolynomialDivision entry = _x / (_x + 1);

            entry.Composition(_x, _y / _x).AssertIsEqualTo(_y / (_x + _y));
        }
コード例 #11
0
        public void Composition_Square()
        {
            PolynomialDivision entry = (_x + 1) / (_x - 1);

            entry.Composition((char)_x, _y + 1).AssertIsEqualTo((_y + 2) / _y);
        }