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); }
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(); }