Ejemplo n.º 1
0
def test_poly():
    assert rsolve_poly([-1, -1, 1], 0, n) == (0, [])
    assert rsolve_poly([-1, -1, 1], 1, n) == (-1, [])
    assert rsolve_poly([-n**2, n, -1, 1], 1, n) is None

    assert rsolve(-f(n) + (n + 1) * f(n + 1) - n) == [{
        f:
        Lambda(n, C0 / factorial(n) + 1)
    }]
    assert rsolve(-(n + 1) * f(n) + n * f(n + 1) - 1) == [{
        f:
        Lambda(n, C0 * n - 1)
    }]
    assert rsolve(-(4 * n + 2) * f(n) + f(n + 1) - 4 * n - 1) == [{
        f:
        Lambda(n, 4**n * C0 * gamma(n + 1 / 2) / sqrt(pi) - 1)
    }]

    assert (rsolve(-f(n) + f(n + 1) - n**5 - n**3) == [{
        f:
        Lambda(n, C0 + n**2 * (n**4 - 3 * n**3 + 4 * n**2 - 3 * n + 1) / 6)
    }])

    assert rsolve_poly([1, 1], sqrt(n), n) is None

    assert rsolve_poly([-2, -1, 1], -2 * n**4 - (n + 1)**4 + (n + 2)**4,
                       n) == (n**4, [])
    assert rsolve(n * f(n) - f(n + 1) - n**3 + (n + 1)**2) == [{
        f:
        Lambda(n, (C0 * factorial(n) + n**3) / n)
    }]
Ejemplo n.º 2
0
def test_rsolve_poly():
    assert rsolve_poly([-1, -1, 1], 0, n) == 0
    assert rsolve_poly([-1, -1, 1], 0, n, symbols=True) == (0, [])
    assert rsolve_poly([-1, -1, 1], 1, n) == -1
    assert rsolve_poly([-n**2, n, -1, 1], 1, n) is None

    assert rsolve_poly([-1, n + 1], n, n) == 1
    assert rsolve_poly([-1, 1], n, n) == C0 + (n**2 - n) / 2
    assert rsolve_poly([-n - 1, n], 1, n) == C1 * n - 1
    assert rsolve_poly([-4 * n - 2, 1], 4 * n + 1, n) == -1

    assert rsolve_poly([-1, 1], n**5 + n**3, n) == \
        C0 - n**3 / 2 - n**5 / 2 + n**2 / 6 + n**6 / 6 + 2*n**4 / 3

    assert rsolve_poly([1, 1], sqrt(n), n) is None
Ejemplo n.º 3
0
def test_rsolve_poly():
    assert rsolve_poly([-1, -1, 1], 0, n) == 0
    assert rsolve_poly([-1, -1, 1], 1, n) == -1

    assert rsolve_poly([-1, n + 1], n, n) == 1
    assert rsolve_poly([-1, 1], n, n) == C0 + (n**2 - n) / 2
    assert rsolve_poly([-n - 1, n], 1, n) == C1 * n - 1
    assert rsolve_poly([-4 * n - 2, 1], 4 * n + 1, n) == -1

    assert rsolve_poly([-1, 1], n**5 + n**3, n) == \
        C0 - n**3 / 2 - n**5 / 2 + n**2 / 6 + n**6 / 6 + 2*n**4 / 3
Ejemplo n.º 4
0
def test_rsolve_bulk():
    """Some bulk-generated tests."""
    funcs = [n, n + 1, n**2, n**3, n**4, n + n**2,
             27*n + 52*n**2 - 3*n**3 + 12*n**4 - 52*n**5]
    coeffs = [[-2, 1], [-2, -1, 1], [-1, 1, 1, -1, 1],
              [-n, 1], [n**2 - n + 12, 1] ]
    for p in funcs:
        # compute difference
        for c in coeffs:
            q = recurrence_term(c, p)
            if p.is_polynomial(n):
                assert rsolve_poly(c, q, n) == p
            if p.is_hypergeometric(n) and len(c) <= 3:
                assert rsolve_hyper(c, q, n).subs(zip(symbols('C:3'),
                                                      [0, 0, 0])).expand() == p
Ejemplo n.º 5
0
def test_rsolve_bulk():
    """Some bulk-generated tests."""
    funcs = [
        n, n + 1, n**2, n**3, n**4, n + n**2,
        27 * n + 52 * n**2 - 3 * n**3 + 12 * n**4 - 52 * n**5
    ]
    coeffs = [[-2, 1], [-2, -1, 1], [-1, 1, 1, -1, 1], [-n, 1],
              [n**2 - n + 12, 1]]
    for p in funcs:
        # compute difference
        for c in coeffs:
            q = recurrence_term(c, p)
            if p.is_polynomial(n):
                assert rsolve_poly(c, q, n) == p
            if p.is_hypergeometric(n) and len(c) <= 3:
                assert rsolve_hyper(c, q,
                                    n).subs(zip(symbols('C:3'),
                                                [0, 0, 0])).expand() == p
Ejemplo n.º 6
0
def test_bulk():
    funcs = [
        n, n + 1, n**2, n**3, n**4, n + n**2,
        27 * n + 52 * n**2 - 3 * n**3 + 12 * n**4 - 52 * n**5
    ]
    coeffs = [[-2, 1], [-2, -1, 1], [-1, 1, 1, -1, 1], [-n, 1],
              [n**2 - n + 12, 1]]
    for p in funcs:
        for c in coeffs:
            q = sum(c[i] * p.subs({n: n + i}) for i in range(len(c)))
            if p.is_polynomial(n):
                assert rsolve_poly(c, q, n)[0] == p
            if p.is_hypergeometric(n) and len(c) <= 3:
                assert rsolve_hyper(c, q, n)[0].subs({
                    C0: 0,
                    C1: 0,
                    C2: 0
                }).expand() == p
Ejemplo n.º 7
0
def test_rsolve_poly():
    assert rsolve_poly([-1, -1, 1], 0, n) == 0
    assert rsolve_poly([-1, -1, 1], 0, n, symbols=True) == (0, [])
    assert rsolve_poly([-1, -1, 1], 1, n) == -1
    assert rsolve_poly([-n**2, n,  -1, 1], 1, n) is None

    assert rsolve_poly([-1, n + 1], n, n) == 1
    assert rsolve_poly([-1, 1], n, n) == C0 + (n**2 - n)/2
    assert rsolve_poly([-n - 1, n], 1, n) == C1*n - 1
    assert rsolve_poly([-4*n - 2, 1], 4*n + 1, n) == -1

    assert rsolve_poly([-1, 1], n**5 + n**3, n) == \
        C0 - n**3 / 2 - n**5 / 2 + n**2 / 6 + n**6 / 6 + 2*n**4 / 3

    assert rsolve_poly([1, 1], sqrt(n), n) is None

    assert rsolve_poly([-2, -1, 1],
                       -2*n**4 - (n + 1)**4 + (n + 2)**4, n) == n**4
    assert rsolve_poly([-n, 1], -n**3 + (n + 1)**2, n) == n**2