using Plots using SymPy @vars x dx f(x) = sqrt(x^2 + 1) u = x*log(x) ex = f(u) * diff(u,x) integrate(ex, x) ex = f(u) * diff(u,x) * dx u, du = symbols("u, du") ## replace x*log(x) with u and diff(x*log(x),x) * dx with du ex1 = subs(ex, (x*log(x), u), (dx, du/diff(x*log(x),x))) ex = integrate(ex1 / du) subs(ex, (u, x*log(x))) function usub(ex, let_u_equal) u, du, dx = symbols("u, du, dx") ex1 = ex * dx ex2 = subs(ex1, (dx, du/diff(let_u_equal, x))) ex3 = subs(ex2, (let_u_equal, u)) ex3 / du end ex = log(x)/x usub(ex, log(x)) function udv_parts(ex, let_u_equal) u, dv = let_u_equal, ex/let_u_equal du = diff(u, x) v = integrate(dv) [u*v, v*du] # return two pieces. One for FTC, one to integrate end ex = x*sin(x) uv, vdu = udv_parts(ex, sin(x)) x = symbols("x", positive=true)