differentiate_expression
Compute derivatives of mathematical expressions with respect to a specified variable using symbolic differentiation. Supports higher-order derivatives for advanced calculus and algebraic tasks.
Instructions
Differentiates an expression with respect to a variable using SymPy's diff function.
Args:
expr_key: The key of the expression (previously introduced) to differentiate.
var_name: The name of the variable to differentiate with respect to.
order: The order of differentiation (default is 1 for first derivative).
Example:
# Introduce a variable
intro("x", [Assumption.REAL], [])
# Create an expression to differentiate: x^3
expr_key = introduce_expression("x**3")
# First derivative
first_deriv = differentiate_expression(expr_key, "x")
# Returns 3x²
# Second derivative
second_deriv = differentiate_expression(expr_key, "x", 2)
# Returns 6x
Returns:
A key for the differentiated expression.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| expr_key | Yes | ||
| order | No | ||
| var_name | Yes |
Input Schema (JSON Schema)
{
"properties": {
"expr_key": {
"title": "Expr Key",
"type": "string"
},
"order": {
"default": 1,
"title": "Order",
"type": "integer"
},
"var_name": {
"title": "Var Name",
"type": "string"
}
},
"required": [
"expr_key",
"var_name"
],
"title": "differentiate_expressionArguments",
"type": "object"
}
Implementation Reference
- server.py:1026-1077 (handler)The core handler function for the 'differentiate_expression' MCP tool. It retrieves a stored SymPy expression by key, differentiates it with respect to a specified variable and order using sympy.diff, stores the result in the global expressions dictionary with a new key, and returns that key. The @mcp.tool() decorator registers this function as an MCP tool.@mcp.tool() def differentiate_expression(expr_key: str, var_name: str, order: int = 1) -> str: """Differentiates an expression with respect to a variable using SymPy's diff function. Args: expr_key: The key of the expression (previously introduced) to differentiate. var_name: The name of the variable to differentiate with respect to. order: The order of differentiation (default is 1 for first derivative). Example: # Introduce a variable intro("x", [Assumption.REAL], []) # Create an expression to differentiate: x^3 expr_key = introduce_expression("x**3") # First derivative first_deriv = differentiate_expression(expr_key, "x") # Returns 3x² # Second derivative second_deriv = differentiate_expression(expr_key, "x", 2) # Returns 6x Returns: A key for the differentiated expression. """ global expression_counter if expr_key not in expressions: return f"Error: Expression with key '{expr_key}' not found." if var_name not in local_vars: return f"Error: Variable '{var_name}' not found. Please introduce it first." if order < 1: return "Error: Order of differentiation must be at least 1." try: expr = expressions[expr_key] var = local_vars[var_name] result = diff(expr, var, order) result_key = f"expr_{expression_counter}" expressions[result_key] = result expression_counter += 1 return result_key except Exception as e: return f"Error during differentiation: {str(e)}"