Integration by parts is a specialized technique of integration used when the integrand is the product of two functions. It is essentially the reverse of the product rule for differentiation. If you are faced with an integral that seems impossible to solve using standard substitution, Integration by Parts (IBP) is your primary alternative.
The Integration by Parts Formula
The core formula is derived from the product rule of calculus:
∫ u dv = uv – ∫ v du
How to Choose 'u' (The LIATE Rule)
Success in integration by parts depends entirely on picking the right part for u. If you pick the wrong one, the resulting integral (∫ v du) might be harder than the original. Mathematicians use the LIATE acronym to prioritize the selection of u:
L – Logarithmic functions (e.g., ln x)
I – Inverse trigonometric functions (e.g., arctan x)
A – Algebraic functions (e.g., x², 3x)
T – Trigonometric functions (e.g., sin x, cos x)
E – Exponential functions (e.g., e^x)
The function that appears higher on this list should generally be chosen as your u.
Practical Example
Consider the integral ∫ x cos(x) dx.
Identify u and dv: Following LIATE, 'x' is Algebraic and 'cos(x)' is Trigonometric. So, u = x and dv = cos(x) dx.
Differentiate u: du = 1 dx.
Integrate dv: v = sin(x).
Apply the formula: (x)(sin(x)) – ∫ sin(x) dx.
Final Result: x sin(x) + cos(x) + C.
When to use this Calculator
This calculator is designed for students and engineers who need to verify the setup of their integration steps. It specifically handles functions where a polynomial or logarithmic term is multiplied by an exponential or trigonometric term, which represents over 90% of standard calculus homework problems.
function solveIBP() {
var u_type = document.getElementById('u_type').value;
var u_coeff = parseFloat(document.getElementById('u_coeff').value) || 1;
var u_power = parseFloat(document.getElementById('u_power').value) || 1;
var dv_type = document.getElementById('dv_type').value;
var dv_a = parseFloat(document.getElementById('dv_a').value) || 1;
var outputDiv = document.getElementById('ibp_output');
var stepSelection = document.getElementById('step_selection');
var stepCalc = document.getElementById('step_calc');
var stepFinal = document.getElementById('step_final');
if (isNaN(u_coeff) || isNaN(u_power) || isNaN(dv_a)) {
alert("Please enter valid numbers");
return;
}
outputDiv.style.display = "block";
// 1. Define u and du
var u_str = "";
var du_str = "";
if (u_type === "algebraic") {
u_str = (u_coeff === 1 ? "" : u_coeff) + "x" + (u_power === 1 ? "" : "" + u_power + "");
var new_coeff = u_coeff * u_power;
var new_pow = u_power – 1;
du_str = (new_coeff === 1 ? "" : new_coeff) + (new_pow === 0 ? "" : (new_pow === 1 ? "x" : "x" + new_pow + "")) + " dx";
} else {
u_str = (u_coeff === 1 ? "" : u_coeff) + "ln(x)";
du_str = "(" + u_coeff + "/x) dx";
}
// 2. Define dv and v
var dv_str = "";
var v_str = "";
var integral_v_du_str = "";
if (dv_type === "exponential") {
dv_str = "e" + dv_a + "x dx";
v_str = "(1/" + dv_a + ")e" + dv_a + "x";
} else if (dv_type === "sine") {
dv_str = "sin(" + dv_a + "x) dx";
v_str = "(-1/" + dv_a + ")cos(" + dv_a + "x)";
} else if (dv_type === "cosine") {
dv_str = "cos(" + dv_a + "x) dx";
v_str = "(1/" + dv_a + ")sin(" + dv_a + "x)";
}
// Step 1 Display
stepSelection.innerHTML = "Step 1: Identify u and dv" +
"u = " + u_str + "" +
"dv = " + dv_str + "" +
"du = " + du_str + "" +
"v = " + v_str;
// Step 2 Display
stepCalc.innerHTML = "Step 2: Apply the formula ∫ u dv = uv – ∫ v du" +
"