示例#1
0
def test_findrecur():
    pytest.raises(ValueError, lambda: Sum(x * y, (x, 0, 2),
                                          (y, 0, 2)).findrecur())
    pytest.raises(ValueError, lambda: Sum(x * y, (x, 0, 2)).findrecur())
    pytest.raises(ValueError, lambda: Sum(x, (x, 0, oo)).findrecur())
    pytest.raises(ValueError, lambda: Sum(sin(x * y) / (x**2 + 1),
                                          (x, 0, oo)).findrecur())

    n, k = symbols("n, k", integer=True)
    F = symbols("F", cls=Function)

    f = Sum(factorial(n) / (factorial(k) * factorial(n - k)), (k, 0, oo))
    g = Sum(k * factorial(n) / (factorial(k) * factorial(n - k)), (k, 0, oo))
    fa = Sum((-1)**k * binomial(n, k) * binomial(2 * n - 2 * k, n + a),
             (k, 0, oo))
    fb = Sum(binomial(x, k) * binomial(y, n - k), (k, 0, oo))

    assert f.findrecur(F) == -F(n, k) + F(n - 1, k) + F(n - 1, k - 1)
    assert (Sum(binomial(n, k), (k, 0, oo)).findrecur(F) == -F(n, k) +
            F(n - 1, k) + F(n - 1, k - 1))
    assert (g.findrecur(F) == (-1 + 1 / n) * F(n, k) + F(n - 1, k) +
            F(n - 1, k - 1))
    assert (fa.findrecur(F, n) == F(n - 2, k - 1) - (2 * n - 1) * F(n - 1, k) /
            (2 * n - 2) - (a**2 - n**2) * F(n, k) / (4 * n * (n - 1)))
    assert (fb.findrecur(F, n) == -n * F(n, k) / (-n + x + y + 2) +
            (-n + x + 1) * F(n - 1, k - 1) / (-n + x + y + 2) +
            (-n + y + 1) * F(n - 1, k) / (-n + x + y + 2) + F(n - 2, k - 1))
示例#2
0
def test_findrecur():
    pytest.raises(ValueError, lambda: Sum(x*y, (x, 0, 2),
                                          (y, 0, 2)).findrecur())
    pytest.raises(ValueError, lambda: Sum(x*y, (x, 0, 2)).findrecur())
    pytest.raises(ValueError, lambda: Sum(x, (x, 0, oo)).findrecur())
    pytest.raises(ValueError, lambda: Sum(sin(x*y)/(x**2 + 1),
                                          (x, 0, oo)).findrecur())

    n, k = symbols("n, k", integer=True)
    F = symbols("F", cls=Function)

    f = Sum(factorial(n)/(factorial(k)*factorial(n - k)), (k, 0, oo))
    g = Sum(k*factorial(n)/(factorial(k)*factorial(n - k)), (k, 0, oo))
    fa = Sum((-1)**k*binomial(n, k)*binomial(2*n - 2*k, n + a), (k, 0, oo))
    fb = Sum(binomial(x, k)*binomial(y, n - k), (k, 0, oo))

    assert f.findrecur(F) == -F(n, k) + F(n - 1, k) + F(n - 1, k - 1)
    assert (Sum(binomial(n, k), (k, 0, oo)).findrecur(F) ==
            -F(n, k) + F(n - 1, k) + F(n - 1, k - 1))
    assert (g.findrecur(F) == (-1 + 1/n)*F(n, k) + F(n - 1, k) +
            F(n - 1, k - 1))
    assert (fa.findrecur(F, n) == F(n - 2, k - 1) -
            (2*n - 1)*F(n - 1, k)/(2*n - 2) -
            (a**2 - n**2)*F(n, k)/(4*n*(n - 1)))
    assert (fb.findrecur(F, n) == -n*F(n, k)/(-n + x + y + 2) +
            (-n + x + 1)*F(n - 1, k - 1)/(-n + x + y + 2) +
            (-n + y + 1)*F(n - 1, k)/(-n + x + y + 2) + F(n - 2, k - 1))
示例#3
0
def test_findrecur():
    a, x, y = symbols("a, x, y")
    n, k = symbols("n, k", integer=True)
    F = symbols("F", cls=Function)

    f = Sum(factorial(n) / (factorial(k) * factorial(n - k)), (k, 0, oo))
    g = Sum(k * factorial(n) / (factorial(k) * factorial(n - k)), (k, 0, oo))
    fa = Sum((-1)**k * binomial(n, k) * binomial(2 * n - 2 * k, n + a),
             (k, 0, oo))
    fb = Sum(binomial(x, k) * binomial(y, n - k), (k, 0, oo))

    assert f.findrecur(F) == -F(n, k) + F(n - 1, k) + F(n - 1, k - 1)
    assert (Sum(binomial(n, k), (k, 0, oo)).findrecur(F) == -F(n, k) +
            F(n - 1, k) + F(n - 1, k - 1))
    assert (g.findrecur(F) == (-1 + 1 / n) * F(n, k) + F(n - 1, k) +
            F(n - 1, k - 1))
    assert (fa.findrecur(F, n) == F(n - 2, k - 1) - (2 * n - 1) * F(n - 1, k) /
            (2 * n - 2) - (a**2 - n**2) * F(n, k) / (4 * n * (n - 1)))
    assert (fb.findrecur(F, n) == -n * F(n, k) / (-n + x + y + 2) +
            (-n + x + 1) * F(n - 1, k - 1) / (-n + x + y + 2) +
            (-n + y + 1) * F(n - 1, k) / (-n + x + y + 2) + F(n - 2, k - 1))