Exemplo n.º 1
0
def prove(Eq):
    n = 5
    a = Symbol.a(shape=(n, ), complex=True, zero=False)
    b = Symbol.b(shape=(n, ), complex=True, zero=False)
    Eq << apply(a, b)

    Eq << Symbol.L(shape=(n, n), definition=Eq[0].lhs.arg).this.definition

    Eq << Eq[-1].this.rhs.as_Matrix()

    Eq << Eq[-1] @ Multiplication(n, 0, 1 / a[0])

    Eq << Eq[-1] @ Multiplication(n, n - 1, 1 / b[n - 1])

    Eq << Eq[-1] @ Multiplication(n, n - 2, 1 / b[n - 2])

    Eq << Multiplication(n, n - 1, b[n - 2]) @ Eq[-1]

    Eq << Eq[-1].det()

    Eq << Eq[-1].subs(Eq[1])

    Eq << Eq[-1].subs(Eq[0])

    Eq << Eq[-1].this.lhs.doit()

    Eq << Eq[-1].this.lhs.expand()
Exemplo n.º 2
0
def prove(Eq):
    n = 6
    A = Symbol.A(shape=(n, n), complex=True)

    Eq << apply(A)

    Eq << Symbol.L(shape=(n, n), definition=Eq[0].lhs.arg).this.definition
    shift = Eq[-1].rhs.function.args[0].base

    Eq.L_definition = Eq[-1].this.rhs.doit()

    Eq << (shift @ A).this.expand()
    Eq << Eq[-1].this.rhs.doit()

    Eq << shift @ Eq[-1]
    Eq << shift @ Eq[-1]
    Eq << shift @ Eq[-1]
    Eq << shift @ Eq[-1]

    Eq << Eq[-1] + Eq[-2] + Eq[-3] + Eq[-4] + Eq[-5]
    Eq << Eq.L_definition.subs(Eq[-1])

    Eq << Addition(n, 0, 1) @ Eq[-1]
    Eq << Addition(n, 0, 2) @ Eq[-1]
    Eq << Addition(n, 0, 3) @ Eq[-1]
    Eq << Addition(n, 0, 4) @ Eq[-1]
    Eq << Addition(n, 0, 5) @ Eq[-1]

    Eq << Multiplication(n, 0, S.One / (n - 1)) @ Eq[-1]

    Eq << Multiplication(n, 1, -1) @ (Addition(n, 1, 0, -1) @ Eq[-1])
    Eq << Multiplication(n, 2, -1) @ (Addition(n, 2, 0, -1) @ Eq[-1])
    Eq << Multiplication(n, 3, -1) @ (Addition(n, 3, 0, -1) @ Eq[-1])
    Eq << Multiplication(n, 4, -1) @ (Addition(n, 4, 0, -1) @ Eq[-1])
    Eq << Multiplication(n, 5, -1) @ (Addition(n, 5, 0, -1) @ Eq[-1])

    Eq << Addition(n, 0, 1, -1) @ Eq[-1]
    Eq << Addition(n, 0, 2, -1) @ Eq[-1]
    Eq << Addition(n, 0, 3, -1) @ Eq[-1]
    Eq << Addition(n, 0, 4, -1) @ Eq[-1]
    Eq << Addition(n, 0, 5, -1) @ Eq[-1]

    Eq << Eq[-1].det() * (n - 1)
    Eq << -Eq[-1].subs(Eq[1])
Exemplo n.º 3
0
def apply(given):
    assert isinstance(given, Equality)
    lhs = given.lhs
    assert isinstance(lhs, summations.Sum)

    limit = lhs.limits[0]
    j, a, b = limit
    n = b - a + 1

    t = LAMBDA[j:0:n - 1](lhs.function).simplify()

    assert n >= 2

    x = Symbol.x(shape=(n, ), real=True)
    y = Symbol.y(shape=(n, ), definition=softmax(x))

    L = Symbol.L(definition=-t @ sympy.log(y))

    return Equality(Derivative(L, x), y - t, given=given)