Calculate numerical partial derivatives for functions of two variables f(x, y).
Use ** for exponents (e.g., x**2). Use Math.sin, Math.cos, Math.exp, etc.
∂f / ∂x (Partial with respect to x)
∂f / ∂y (Partial with respect to y)
Result:
Understanding Partial Derivatives
In multivariable calculus, a partial derivative of a function of several variables is its derivative with respect to one of those variables, with the others held constant. This tool computes the numerical value of the partial derivative at a specific coordinate (x, y) using the symmetric difference quotient method.
The Mathematical Formula
To find the partial derivative of $f(x, y)$ with respect to $x$ at the point $(a, b)$, we treat $y$ as a constant and apply the limit definition:
fx(a, b) = lim (h → 0) [f(a + h, b) – f(a – h, b)] / (2h)
This calculator uses a small value of h (1e-7) to provide a high-precision numerical approximation, which is sufficient for most engineering and physics applications.
How to Use This Calculator
Enter the Function: Input your function using standard JavaScript math notation. For example, $x^2 + xy$ should be entered as x**2 + x*y.
Set the Points: Define the specific $x$ and $y$ values where you want to evaluate the slope.
Select the Variable: Choose whether you want to calculate the rate of change along the X-axis (holding Y constant) or the Y-axis (holding X constant).
Calculate: The tool will output the slope of the tangent line at that point in the specified direction.
Real-World Example
Imagine a topographic map where $f(x, y)$ represents the elevation. If you are standing at point $(1, 2)$ and want to know how steep the hill is if you walk exactly East (the X direction), you would calculate the partial derivative with respect to $x$. If the result is positive, you are walking uphill; if it is negative, you are walking downhill.
function calculatePartialDerivative() {
var funcStr = document.getElementById("mathFunction").value.trim();
var xVal = parseFloat(document.getElementById("xValue").value);
var yVal = parseFloat(document.getElementById("yValue").value);
var variable = document.getElementById("diffVar").value;
var resultDiv = document.getElementById("derivativeResult");
var resultOutput = document.getElementById("resultOutput");
var explanationOutput = document.getElementById("explanationOutput");
if (!funcStr) {
alert("Please enter a valid function.");
return;
}
if (isNaN(xVal) || isNaN(yVal)) {
alert("Please enter valid numeric values for x and y.");
return;
}
try {
// Create a function object safely
var f = new Function('x', 'y', 'return ' + funcStr);
// Step size for numerical differentiation
var h = 0.0000001;
var derivative = 0;
if (variable === 'x') {
// Central difference for x: [f(x+h, y) – f(x-h, y)] / 2h
var f1 = f(xVal + h, yVal);
var f2 = f(xVal – h, yVal);
derivative = (f1 – f2) / (2 * h);
explanationOutput.innerText = "Calculated the rate of change with respect to x while holding y = " + yVal + " constant.";
} else {
// Central difference for y: [f(x, y+h) – f(x, y-h)] / 2h
var f1 = f(xVal, yVal + h);
var f2 = f(xVal, yVal – h);
derivative = (f1 – f2) / (2 * h);
explanationOutput.innerText = "Calculated the rate of change with respect to y while holding x = " + xVal + " constant.";
}
// Clean up display
if (isNaN(derivative)) {
resultOutput.innerHTML = "Error";
explanationOutput.innerText = "The function is undefined or non-differentiable at this point.";
} else {
// Round to 5 decimal places for display
var rounded = Math.round(derivative * 100000) / 100000;
resultOutput.innerHTML = "∂f/∂" + variable + " ≈ " + rounded;
}
resultDiv.style.display = "block";
} catch (e) {
alert("Mathematical error: " + e.message + "\nEnsure you use valid syntax like 'x*y' and 'Math.pow(x,2)'.");
resultDiv.style.display = "none";
}
}