示例#1
0
def test_solve_linear():
    x, y = symbols('x y')
    w = Wild('w')
    assert solve_linear(x, x) == (0, 1)
    assert solve_linear(x, y - 2*x) in [(x, y/3), (y, 3*x)]
    assert solve_linear(x, y - 2*x, exclude=[x]) ==(y, 3*x)
    assert solve_linear(3*x - y, 0) in [(x, y/3), (y, 3*x)]
    assert solve_linear(3*x - y, 0, [x]) == (x, y/3)
    assert solve_linear(3*x - y, 0, [y]) == (y, 3*x)
    assert solve_linear(x**2/y, 1) == (y, x**2)
    assert solve_linear(w, x) in [(w, x), (x, w)]
    assert solve_linear(cos(x)**2 + sin(x)**2 + 2 + y) == \
           (y, -2 - cos(x)**2 - sin(x)**2)
    assert solve_linear(cos(x)**2 + sin(x)**2 + 2 + y, x=[x]) == (0, 1)
示例#2
0
def test_solve_linear():
    x, y = symbols('x y')
    w = Wild('w')
    assert solve_linear(x, x) == (0, 1)
    assert solve_linear(x, y - 2*x) in [(x, y/3), (y, 3*x)]
    assert solve_linear(x, y - 2*x, exclude=[x]) ==(y, 3*x)
    assert solve_linear(3*x - y, 0) in [(x, y/3), (y, 3*x)]
    assert solve_linear(3*x - y, 0, [x]) == (x, y/3)
    assert solve_linear(3*x - y, 0, [y]) == (y, 3*x)
    assert solve_linear(x**2/y, 1) == (y, x**2)
    assert solve_linear(w, x) in [(w, x), (x, w)]
    assert solve_linear(cos(x)**2 + sin(x)**2 + 2 + y) == \
           (y, -2 - cos(x)**2 - sin(x)**2)
    assert solve_linear(cos(x)**2 + sin(x)**2 + 2 + y, x=[x]) == (0, 1)
示例#3
0
def test_issue_2802():
    f, g, h = map(Function, "fgh")
    a = Symbol("a")
    D = Derivative(f(x), x)
    G = Derivative(g(a), a)
    assert solve(f(x) + f(x).diff(x), f(x)) == [-D]
    assert solve(f(x) - 3, f(x)) == [3]
    assert solve(f(x) - 3 * f(x).diff(x), f(x)) == [3 * D]
    assert solve([f(x) - 3 * f(x).diff(x)], f(x)) == {f(x): 3 * D}
    assert solve([f(x) - 3 * f(x).diff(x), f(x) ** 2 - y + 4], f(x), y) == [{f(x): 3 * D, y: 9 * D ** 2 + 4}]
    assert solve(-f(a) ** 2 * g(a) ** 2 + f(a) ** 2 * h(a) ** 2 + g(a).diff(a), h(a), g(a)) == [
        {g(a): -sqrt(h(a) ** 2 + G / f(a) ** 2)},
        {g(a): sqrt(h(a) ** 2 + G / f(a) ** 2)},
    ]
    args = [f(x).diff(x, 2) * (f(x) + g(x)) - g(x) ** 2 + 2, f(x), g(x)]
    assert solve(*args) == [(-sqrt(2), sqrt(2)), (sqrt(2), -sqrt(2))]
    eqs = [f(x) ** 2 + g(x) - 2 * f(x).diff(x), g(x) ** 2 - 4]
    assert solve(eqs, f(x), g(x)) == [
        {g(x): 2, f(x): -sqrt(2 * D - 2)},
        {g(x): 2, f(x): sqrt(2 * D - 2)},
        {g(x): -2, f(x): -sqrt(2 * D + 2)},
        {g(x): -2, f(x): sqrt(2 * D + 2)},
    ]

    # the underlying problem was in solve_linear that was not masking off
    # anything but a Mul or Add; it now raises an error if it gets anything
    # but a symbol and solve handles the substitutions necessary so solve_linear
    # won't make this error
    raises(ValueError, "solve_linear(f(x) + f(x).diff(x), symbols=[f(x)])")
    assert solve_linear(f(x) + f(x).diff(x), symbols=[x]) == (f(x) + Derivative(f(x), x), 1)
    assert solve_linear(f(x) + Integral(x, (x, y)), symbols=[x]) == (f(x) + Integral(x, (x, y)), 1)
    assert solve_linear(f(x) + Integral(x, (x, y)) + x, symbols=[x]) == (x + f(x) + Integral(x, (x, y)), 1)
    assert solve_linear(f(y) + Integral(x, (x, y)) + x, symbols=[x]) == (x, -f(y) - Integral(x, (x, y)))
    assert solve_linear(x - f(x) / a + (f(x) - 1) / a, symbols=[x]) == (x, 1 / a)
    assert solve_linear(x + Derivative(2 * x, x)) == (x, -2)
    assert solve_linear(x + Integral(x, y), symbols=[x]) == (x, 0)
    assert solve_linear(x + Integral(x, y) - 2, symbols=[x]) == (x, 2 / (y + 1))

    assert solve(x + exp(x) ** 2, exp(x)) == [-sqrt(-x), sqrt(-x)]
    assert solve(x + exp(x), x, implicit=True) == [-exp(x)]
    assert solve(cos(x) - sin(x), x, implicit=True) == []
    assert solve(x - sin(x), x, implicit=True) == [sin(x)]
    assert solve(x ** 2 + x - 3, x, implicit=True) == [-x ** 2 + 3]
    assert solve(x ** 2 + x - 3, x ** 2, implicit=True) == [-x + 3]
示例#4
0
def test_solve_linear():
    w = Wild('w')
    assert solve_linear(x, x) == (0, 1)
    assert solve_linear(x, y - 2*x) in [(x, y/3), (y, 3*x)]
    assert solve_linear(x, y - 2*x, exclude=[x]) == (y, 3*x)
    assert solve_linear(3*x - y, 0) in [(x, y/3), (y, 3*x)]
    assert solve_linear(3*x - y, 0, [x]) == (x, y/3)
    assert solve_linear(3*x - y, 0, [y]) == (y, 3*x)
    assert solve_linear(x**2/y, 1) == (y, x**2)
    assert solve_linear(w, x) in [(w, x), (x, w)]
    assert solve_linear(cos(x)**2 + sin(x)**2 + 2 + y) == \
        (y, -2 - cos(x)**2 - sin(x)**2)
    assert solve_linear(cos(x)**2 + sin(x)**2 + 2 + y, symbols=[x]) == (0, 1)
    assert solve_linear(Eq(x, 3)) == (x, 3)
    assert solve_linear(1/(1/x - 2)) == (0, 0)
    assert solve_linear((x + 1)*exp(-x), symbols=[x]) == (x + 1, exp(x))
    assert solve_linear((x + 1)*exp(x), symbols=[x]) == ((x + 1)*exp(x), 1)
    assert solve_linear(x*exp(-x**2), symbols=[x]) == (0, 0)
    raises(ValueError, lambda: solve_linear(Eq(x, 3), 3))
示例#5
0
def test_solve_linear():
    x, y = symbols('x y')
    w = Wild('w')
    assert solve_linear(x, x) == (0, 1)
    assert solve_linear(x, y - 2*x) in [(x, y/3), (y, 3*x)]
    assert solve_linear(x, y - 2*x, exclude=[x]) ==(y, 3*x)
    assert solve_linear(3*x - y, 0) in [(x, y/3), (y, 3*x)]
    assert solve_linear(3*x - y, 0, [x]) == (x, y/3)
    assert solve_linear(3*x - y, 0, [y]) == (y, 3*x)
    assert solve_linear(x**2/y, 1) == (y, x**2)
    assert solve_linear(w, x) in [(w, x), (x, w)]
    assert solve_linear(cos(x)**2 + sin(x)**2 + 2 + y) == \
           (y, -2 - cos(x)**2 - sin(x)**2)
    assert solve_linear(cos(x)**2 + sin(x)**2 + 2 + y, symbols=[x]) == (0, 1)
    assert solve_linear(Eq(x, 3)) == (x, 3)
    assert solve_linear(1/(1/x - 2)) == (0, 0)
    raises(ValueError, 'solve_linear(Eq(x, 3), 3)')
示例#6
0
def test_solve_linear():
    w = Wild('w')
    assert solve_linear(x, x) == (0, 1)
    assert solve_linear(x, y - 2 * x) in [(x, y / 3), (y, 3 * x)]
    assert solve_linear(x, y - 2 * x, exclude=[x]) == (y, 3 * x)
    assert solve_linear(3 * x - y, 0) in [(x, y / 3), (y, 3 * x)]
    assert solve_linear(3 * x - y, 0, [x]) == (x, y / 3)
    assert solve_linear(3 * x - y, 0, [y]) == (y, 3 * x)
    assert solve_linear(x**2 / y, 1) == (y, x**2)
    assert solve_linear(w, x) in [(w, x), (x, w)]
    assert solve_linear(cos(x)**2 + sin(x)**2 + 2 + y) == \
        (y, -2 - cos(x)**2 - sin(x)**2)
    assert solve_linear(cos(x)**2 + sin(x)**2 + 2 + y, symbols=[x]) == (0, 1)
    assert solve_linear(Eq(x, 3)) == (x, 3)
    assert solve_linear(1 / (1 / x - 2)) == (0, 0)
    assert solve_linear((x + 1) * exp(-x), symbols=[x]) == (x + 1, exp(x))
    assert solve_linear((x + 1) * exp(x), symbols=[x]) == ((x + 1) * exp(x), 1)
    assert solve_linear(x * exp(-x**2), symbols=[x]) == (0, 0)
    raises(ValueError, lambda: solve_linear(Eq(x, 3), 3))
示例#7
0
def test_issue_2802():
    f, g, h = map(Function, 'fgh')
    a = Symbol('a')
    D = Derivative(f(x), x)
    G = Derivative(g(a), a)
    assert solve(f(x) + f(x).diff(x), f(x)) == \
        [-D]
    assert solve(f(x) - 3, f(x)) == \
        [3]
    assert solve(f(x) - 3*f(x).diff(x), f(x)) == \
        [3*D]
    assert solve([f(x) - 3*f(x).diff(x)], f(x)) == \
        {f(x): 3*D}
    assert solve([f(x) - 3*f(x).diff(x), f(x)**2 - y + 4], f(x), y) == \
        [{f(x): 3*D, y: 9*D**2 + 4}]
    assert solve(-f(a)**2*g(a)**2 + f(a)**2*h(a)**2 + g(a).diff(a),
                h(a), g(a), set=True) == \
        ([g(a)], set([
        (-sqrt(h(a)**2 + G/f(a)**2),),
        (sqrt(h(a)**2 + G/f(a)**2),)]))
    args = [f(x).diff(x, 2) * (f(x) + g(x)) - g(x)**2 + 2, f(x), g(x)]
    assert set(solve(*args)) == \
        set([(-sqrt(2), sqrt(2)), (sqrt(2), -sqrt(2))])
    eqs = [f(x)**2 + g(x) - 2 * f(x).diff(x), g(x)**2 - 4]
    assert solve(eqs, f(x), g(x), set=True) == \
        ([f(x), g(x)], set([
        (-sqrt(2*D - 2), S(2)),
        (sqrt(2*D - 2), S(2)),
        (-sqrt(2*D + 2), -S(2)),
        (sqrt(2*D + 2), -S(2))]))

    # the underlying problem was in solve_linear that was not masking off
    # anything but a Mul or Add; it now raises an error if it gets anything
    # but a symbol and solve handles the substitutions necessary so solve_linear
    # won't make this error
    raises(ValueError,
           lambda: solve_linear(f(x) + f(x).diff(x), symbols=[f(x)]))
    assert solve_linear(f(x) + f(x).diff(x), symbols=[x]) == \
        (f(x) + Derivative(f(x), x), 1)
    assert solve_linear(f(x) + Integral(x, (x, y)), symbols=[x]) == \
        (f(x) + Integral(x, (x, y)), 1)
    assert solve_linear(f(x) + Integral(x, (x, y)) + x, symbols=[x]) == \
        (x + f(x) + Integral(x, (x, y)), 1)
    assert solve_linear(f(y) + Integral(x, (x, y)) + x, symbols=[x]) == \
        (x, -f(y) - Integral(x, (x, y)))
    assert solve_linear(x - f(x)/a + (f(x) - 1)/a, symbols=[x]) == \
        (x, 1/a)
    assert solve_linear(x + Derivative(2*x, x)) == \
        (x, -2)
    assert solve_linear(x + Integral(x, y), symbols=[x]) == \
        (x, 0)
    assert solve_linear(x + Integral(x, y) - 2, symbols=[x]) == \
        (x, 2/(y + 1))

    assert set(solve(x + exp(x)**2, exp(x))) == \
        set([-sqrt(-x), sqrt(-x)])
    assert solve(x + exp(x), x, implicit=True) == \
        [-exp(x)]
    assert solve(cos(x) - sin(x), x, implicit=True) == []
    assert solve(x - sin(x), x, implicit=True) == \
        [sin(x)]
    assert solve(x**2 + x - 3, x, implicit=True) == \
        [-x**2 + 3]
    assert solve(x**2 + x - 3, x**2, implicit=True) == \
        [-x + 3]
示例#8
0
from __future__ import division
import sympy as sp

x, y, z, t = sp.symbols('x y z t')

sp.solve(x**2 - 1)
sp.solve(x**3 + 2 * x**2 - x + 1)
sp.solve((x + 5 * y - 2, -3 * x + 6 * y - 15), x, y)

sp.solve((x + y + z, y + 1, z - 2), x, y, z)

sp.solve(x**3 + 3 * x**2 + 2 * x + 1)

sp.solve(sp.sin(x) + sp.cos(x) - 0.5)

sp.solve(sp.sin(x) + sp.cos(x) - 1)

sp.solve_linear(x + y**2)

sp.solve_linear(1 / x - y**2)