def ode_Liouville(eq, func, order, match):
 x = func.args[0]
 f = func.func
 r = match
 y = r['y']
 (C1, C2) = get_numbered_constants(eq, num=2)
 int = Integral(exp(Integral(r['g'], y)), (y, None, f(x)))
 sol = Eq(((int + (C1 * Integral(exp((- Integral(r['h'], x))), x))) + C2), 0)
 return sol

def ode_Liouville ( eq , func , order , match ) : x = func . args [ 0 ] f = func . func r = match y = r [ 'y' ] ( C1 , C2 ) = get_numbered_constants ( eq , num = 2 ) int = Integral ( exp ( Integral ( r [ 'g' ] , y ) ) , ( y , None , f ( x ) ) ) sol = Eq ( ( ( int + ( C1 * Integral ( exp ( ( - Integral ( r [ 'h' ] , x ) ) ) , x ) ) ) + C2 ) , 0 ) return sol
solves 2nd order liouville differential equations .