public void NumbersShouldBeOrderedFirstInCommutativeVariadicOperations()
        {
            var t = Var("𝓉");

            var addition = SymbolicExpression.Add(ImmutableArray.Create(t, Pi, 735, Pow(t, 2)));

            Assert.Equal(735 + Pi + t + Pow(t, 2), addition);
            Assert.Equal(735, ((VariadicOperationExpression)addition).Operands[0]);

            var multiplication = SymbolicExpression.Multiply(ImmutableArray.Create(t, Pow(t, 2), 78, Pow(E, t), Pi));

            Assert.Equal(78 * Pi * t * Pow(t, 2) * Pow(E, t), multiplication);
            Assert.Equal(78, ((VariadicOperationExpression)multiplication).Operands[0]);
        }
        public void AdditionsShouldMerge()
        {
            var x = Var("𝓍");
            var y = Var("𝓎");
            var z = Var("𝓏");
            var w = Var("𝓌");

            var expected = SymbolicExpression.Add(ImmutableArray.Create(x, y, z, w));

            Assert.Equal(expected, x + (y + (z + w)));
            Assert.Equal(expected, x + ((y + z) + w));
            Assert.Equal(expected, (x + y) + (z + w));
            Assert.Equal(expected, (x + (y + z)) + w);
            Assert.Equal(expected, ((x + y) + z) + w);
        }
예제 #3
0
        public static SymbolicExpression GetTaylor(int k, SymbolicExpression symbol, SymbolicExpression a, SymbolicExpression x)
        {
            int factorial = 1;
            SymbolicExpression accumulator = SymbolicExpression.Zero;
            SymbolicExpression derivative = x;
            for (int i = 0; i < k; i++)
            {
                var subs = derivative.Substitute(symbol, a);
                derivative = derivative.Differentiate(symbol);
                accumulator = accumulator.Add(subs / factorial * (symbol.Subtract(a)).Pow(i));
                factorial *= (i + 1);
            }

            return accumulator.Expand();
        }