Exemplo n.º 1
0
def mittag_leffler_e(alpha, beta=1):
    alpha = QQ.coerce(alpha)
    if alpha <= QQ.zero():
        raise ValueError
    num, den = alpha.numerator(), alpha.denominator()
    dop0 = prod(alpha * x * Dx + beta - num + t for t in range(num)) - x**den
    expo = dop0.indicial_polynomial(x).roots(QQ, multiplicities=False)
    pre = prod((x * Dx - k) for k in range(den) if QQ(k) not in expo)
    dop = pre * dop0  # homogenize
    dop = dop.numerator().primitive_part()
    expo = sorted(dop.indicial_polynomial(x).roots(QQ, multiplicities=False))
    assert len(expo) == dop.order()
    ini = [(1 / funs.gamma(alpha * k + beta) if k in ZZ else 0) for k in expo]
    return IVP(0, dop, ini)