Example #1
0
    def apply_series(self, f, x, x0, n, evaluation):
        """Series[f_, {x_Symbol, x0_, n_Integer}]"""
        # TODO:
        # - Asymptotic series
        # - Series of compositions
        vars = {
            x.get_name(): x0,
        }

        data = [f.replace_vars(vars)]
        df = f
        for i in range(n.get_int_value()):
            df = Expression("D", df, x).evaluate(evaluation)
            newcoeff = df.replace_vars(vars)
            factorial = Expression("Factorial", Integer(i + 1))
            newcoeff = Expression(
                SymbolTimes,
                Expression(SymbolPower, factorial, IntegerMinusOne),
                newcoeff,
            ).evaluate(evaluation)
            data.append(newcoeff)
        data = Expression(SymbolList, *data).evaluate(evaluation)
        return Expression("SeriesData", x, x0, data, IntegerZero, n, Integer1)