Spaces:
Runtime error
Runtime error
import sympy | |
from typing import List | |
import gradio as gr | |
def partial_derivative(expression_str: str, variables_str: List[str]) -> str: | |
""" | |
Computes partial derivatives of an expression with respect to specified variables. | |
Example: expression_str="x**2*y**3", variables_str=["x", "y"] will compute d/dx then d/dy. | |
If you want d^2f/dx^2, use variables_str=["x", "x"]. | |
Args: | |
expression_str: The mathematical expression (e.g., "x**2*y + y*z**2"). | |
variables_str: A list of variable names (strings) to differentiate by, in order. | |
(e.g., ["x", "y"] for d/dy(d/dx(expr)) ). | |
Returns: | |
String representation of the partial derivative or an error message. | |
""" | |
try: | |
symbols_in_expr = {s.name: s for s in sympy.parse_expr(expression_str, transformations='all').free_symbols} | |
diff_vars_symbols = [] | |
for var_name in variables_str: | |
if var_name in symbols_in_expr: | |
diff_vars_symbols.append(symbols_in_expr[var_name]) | |
else: | |
diff_vars_symbols.append(sympy.Symbol(var_name)) | |
if not diff_vars_symbols: | |
return "Error: No variables specified for differentiation." | |
expr = sympy.parse_expr(expression_str, local_dict=symbols_in_expr, transformations='all') | |
current_expr = expr | |
for var_sym in diff_vars_symbols: | |
current_expr = sympy.diff(current_expr, var_sym) | |
return str(current_expr) | |
except (sympy.SympifyError, TypeError, SyntaxError) as e: | |
return f"Error parsing expression or variables: {e}" | |
except Exception as e: | |
return f"An unexpected error occurred: {e}" | |
partial_derivative_interface = gr.Interface( | |
fn=lambda expr_str, vars_str: partial_derivative(expr_str, [v.strip() for v in vars_str.split(',') if v.strip()]), | |
inputs=[ | |
gr.Textbox(label="Expression (e.g., x**2*y + z*sin(x))", value="x**2*y**3 + y*sin(z)"), | |
gr.Textbox(label="Variables to differentiate by (comma-separated, in order, e.g., x,y or x,x for d²f/dx²)", value="x,y") | |
], | |
outputs="text", | |
title="Partial Derivative Calculator", | |
description="Compute partial derivatives.\n\n**Description:**\nThis tool computes partial derivatives of an expression with respect to specified variables, in order. For d/dy(d/dx(f)), enter 'x,y'. For d²f/dx², enter 'x,x'.\n\n**Examples:**\n- Expression: x**2*y**3, Variables: x → Output: 2*x*y**3\n- Expression: x**2*y**3, Variables: y → Output: 3*x**2*y**2\n- Expression: x**2*y**3, Variables: x,y → Output: 6*x*y**2", | |
examples=[["x**2*y**3", "x"], ["x**2*y**3", "y"], ["x**2*y**3", "x,y"]], | |
) | |