def test_pde_1st_linear_constant_coeff_homogeneous(): f, F = map(Function, ['f', 'F']) u = f(x, y) eq = 2 * u + u.diff(x) + u.diff(y) assert classify_pde(eq) == ('1st_linear_constant_coeff_homogeneous', ) sol = pdsolve(eq) assert sol == Eq(u, F(x - y) * exp(-x - y)) assert checkpdesol(eq, sol)[0] eq = 4 + (3 * u.diff(x) / u) + (2 * u.diff(y) / u) assert classify_pde(eq) == ('1st_linear_constant_coeff_homogeneous', ) sol = pdsolve(eq) assert sol == Eq( u, F(2 * x - 3 * y) * exp(-Integer(12) * x / 13 - Integer(8) * y / 13)) assert checkpdesol(eq, sol)[0] eq = u + (6 * u.diff(x)) + (7 * u.diff(y)) assert classify_pde(eq) == ('1st_linear_constant_coeff_homogeneous', ) sol = pdsolve(eq) assert sol == Eq( u, F(7 * x - 6 * y) * exp(-6 * x / Integer(85) - 7 * y / Integer(85))) assert checkpdesol(eq, sol)[0] eq = a * u + b * u.diff(x) + c * u.diff(y) sol = pdsolve(eq) assert checkpdesol(eq, sol)[0]
def test_pde_classify(): # When more number of hints are added, add tests for classifying here. f, g = symbols('f g', cls=Function) u = f(x, y) eq1 = a*u + b*u.diff(x) + c*u.diff(y) eq2 = 3*u + 2*u.diff(x) + u.diff(y) eq3 = a*u + b*u.diff(x) + 2*u.diff(y) eq4 = x*u + u.diff(x) + 3*u.diff(y) eq5 = x**2*u + x*u.diff(x) + x*y*u.diff(y) eq6 = y*x**2*u + y*u.diff(x) + u.diff(y) for eq in [eq1, eq2, eq3]: assert classify_pde(eq) == ('1st_linear_constant_coeff_homogeneous',) for eq in [eq4, eq5, eq6]: assert classify_pde(eq) == ('1st_linear_variable_coeff',) # coverage tests assert classify_pde(eq, u) == ('1st_linear_variable_coeff',) assert classify_pde(eq, g(x, y)) == () assert classify_pde(eq, g(x, y), dict=True) == {'default': None, 'order': 0} assert classify_pde(u.diff(x) + I*u.diff(y) + y) == () assert classify_pde(u.diff(x, y) + x) == () assert classify_pde(x*u.diff(x) + u*u.diff(y) + y) == () assert classify_pde(x*u.diff(x) + u*u.diff(y) + y, dict=True) == {'default': None, 'ordered_hints': (), 'order': 1} assert classify_pde(2*u.diff(x, y, y)) == ()
def test_pde_classify(): # When more number of hints are added, add tests for classifying here. f = Function('f') eq1 = a * f(x, y) + b * f(x, y).diff(x) + c * f(x, y).diff(y) eq2 = 3 * f(x, y) + 2 * f(x, y).diff(x) + f(x, y).diff(y) eq3 = a * f(x, y) + b * f(x, y).diff(x) + 2 * f(x, y).diff(y) eq4 = x * f(x, y) + f(x, y).diff(x) + 3 * f(x, y).diff(y) eq5 = x**2 * f(x, y) + x * f(x, y).diff(x) + x * y * f(x, y).diff(y) eq6 = y * x**2 * f(x, y) + y * f(x, y).diff(x) + f(x, y).diff(y) for eq in [eq1, eq2, eq3]: assert classify_pde(eq) == ('1st_linear_constant_coeff_homogeneous', ) for eq in [eq4, eq5, eq6]: assert classify_pde(eq) == ('1st_linear_variable_coeff', )
def test_pde_1st_linear_constant_coeff(): f, F = map(Function, ['f', 'F']) u = f(x, y) eq = -2 * u.diff(x) + 4 * u.diff(y) + 5 * u - exp(x + 3 * y) sol = pdsolve(eq) assert sol == Eq(f( x, y), (F(4 * x + 2 * y) + exp(x / Integer(2) + 4 * y) / Integer(15)) * exp(x / Integer(2) - y)) assert classify_pde(eq) == ('1st_linear_constant_coeff', '1st_linear_constant_coeff_Integral') assert checkpdesol(eq, sol)[0] eq = (u.diff(x) / u) + (u.diff(y) / u) + 1 - (exp(x + y) / u) sol = pdsolve(eq) assert sol == Eq(f(x, y), F(x - y) * exp(-x / 2 - y / 2) + exp(x + y) / Integer(3)) assert classify_pde(eq) == ('1st_linear_constant_coeff', '1st_linear_constant_coeff_Integral') assert checkpdesol(eq, sol)[0] eq = 2 * u + -u.diff(x) + 3 * u.diff(y) + sin(x) sol = pdsolve(eq) assert sol == Eq( f(x, y), F(3 * x + y) * exp(x / Integer(5) - 3 * y / Integer(5)) - 2 * sin(x) / Integer(5) - cos(x) / Integer(5)) assert classify_pde(eq) == ('1st_linear_constant_coeff', '1st_linear_constant_coeff_Integral') assert checkpdesol(eq, sol)[0] eq = u + u.diff(x) + u.diff(y) + x * y sol = pdsolve(eq) assert sol == Eq( f(x, y), -x * y + x + y + F(x - y) * exp(-x / Integer(2) - y / Integer(2)) - 2) assert classify_pde(eq) == ('1st_linear_constant_coeff', '1st_linear_constant_coeff_Integral') assert checkpdesol(eq, sol)[0] eq = u + u.diff(x) + u.diff(y) + log(x) assert classify_pde(eq) == ('1st_linear_constant_coeff', '1st_linear_constant_coeff_Integral')
def test_pde_1st_linear_constant_coeff(): f, F = map(Function, ['f', 'F']) u = f(x, y) eq = -2*u.diff(x) + 4*u.diff(y) + 5*u - exp(x + 3*y) sol = pdsolve(eq) assert sol == Eq(f(x, y), (F(4*x + 2*y) + exp(x/2 + 4*y)/15)*exp(x/2 - y)) assert classify_pde(eq) == ('1st_linear_constant_coeff', '1st_linear_constant_coeff_Integral') assert checkpdesol(eq, sol)[0] eq = (u.diff(x)/u) + (u.diff(y)/u) + 1 - (exp(x + y)/u) sol = pdsolve(eq) assert sol == Eq(f(x, y), F(x - y)*exp(-x/2 - y/2) + exp(x + y)/3) assert classify_pde(eq) == ('1st_linear_constant_coeff', '1st_linear_constant_coeff_Integral') assert checkpdesol(eq, sol)[0] eq = 2*u + -u.diff(x) + 3*u.diff(y) + sin(x) sol = pdsolve(eq) assert sol == Eq(f(x, y), F(3*x + y)*exp(x/5 - 3*y/5) - 2*sin(x)/5 - cos(x)/5) assert classify_pde(eq) == ('1st_linear_constant_coeff', '1st_linear_constant_coeff_Integral') assert checkpdesol(eq, sol)[0] eq = u + u.diff(x) + u.diff(y) + x*y sol = pdsolve(eq) assert sol == Eq(f(x, y), -x*y + x + y + F(x - y)*exp(-x/2 - y/2) - 2) assert classify_pde(eq) == ('1st_linear_constant_coeff', '1st_linear_constant_coeff_Integral') assert checkpdesol(eq, sol)[0] eq = u + u.diff(x) + u.diff(y) + log(x) assert classify_pde(eq) == ('1st_linear_constant_coeff', '1st_linear_constant_coeff_Integral')
def test_pde_1st_linear_constant_coeff_homogeneous(): f, F = map(Function, ['f', 'F']) u = f(x, y) eq = 2*u + u.diff(x) + u.diff(y) assert classify_pde(eq) == ('1st_linear_constant_coeff_homogeneous',) sol = pdsolve(eq) assert sol == Eq(u, F(x - y)*exp(-x - y)) assert checkpdesol(eq, sol)[0] eq = 4 + (3*u.diff(x)/u) + (2*u.diff(y)/u) assert classify_pde(eq) == ('1st_linear_constant_coeff_homogeneous',) sol = pdsolve(eq) assert sol == Eq(u, F(2*x - 3*y)*exp(-12*x/13 - 8*y/13)) assert checkpdesol(eq, sol)[0] eq = u + (6*u.diff(x)) + (7*u.diff(y)) assert classify_pde(eq) == ('1st_linear_constant_coeff_homogeneous',) sol = pdsolve(eq) assert sol == Eq(u, F(7*x - 6*y)*exp(-6*x/85 - 7*y/85)) assert checkpdesol(eq, sol)[0] eq = a*u + b*u.diff(x) + c*u.diff(y) sol = pdsolve(eq) assert checkpdesol(eq, sol)[0]
def test_pde_classify(): # When more number of hints are added, add tests for classifying here. f, g = symbols('f g', cls=Function) u = f(x, y) eq1 = a*u + b*u.diff(x) + c*u.diff(y) eq2 = 3*u + 2*u.diff(x) + u.diff(y) eq3 = a*u + b*u.diff(x) + 2*u.diff(y) eq4 = x*u + u.diff(x) + 3*u.diff(y) eq5 = x**2*u + x*u.diff(x) + x*y*u.diff(y) eq6 = y*x**2*u + y*u.diff(x) + u.diff(y) for eq in [eq1, eq2, eq3]: assert classify_pde(eq) == ('1st_linear_constant_coeff_homogeneous',) for eq in [eq4, eq5, eq6]: assert classify_pde(eq) == ('1st_linear_variable_coeff',) # coverage tests assert classify_pde(eq, u) == ('1st_linear_variable_coeff',) assert classify_pde(eq, g(x, y)) == () assert classify_pde(eq, g(x, y), dict=True) == {'default': None, 'order': 0} assert classify_pde(u.diff(x) + I*u.diff(y) + y) == () assert classify_pde(u.diff(x, y) + x) == () assert classify_pde(x*u.diff(x) + u*u.diff(y) + y) == () assert classify_pde(x*u.diff(x) + u*u.diff(y) + y, dict=True) == {'default': None, 'ordered_hints': (), 'order': 1} assert classify_pde(2*u.diff(x, y, y)) == () eq = Eq(1 + (2*(u.diff(x)/u)) + (3*(u.diff(y)/u))) assert classify_pde(eq) == ('1st_linear_constant_coeff_homogeneous',)