Implement the quotient rule for derivatives. Given two functions f and g, compute the derivative of f(x)/g(x) = (f'(x)g(x) - f(x)g'(x)) / g(x)^2.
def numerical_derivative(f, x: float, h: float = 1e-7) -> float:
return (f(x + h) - f(x - h)) / (2 * h)
def quotient_rule(f, g, x: float) -> dict:
f_val = f(x)
g_val = g(x)
f_prime = numerical_derivative(f, x)
g_prime = numerical_derivative(g, x)
if abs(g_val) < 1e-12:
raise ValueError("g(x) is zero; quotient is undefined.")
derivative = (f_prime * g_val - f_val * g_prime) / (g_val ** 2)
return {
"derivative": derivative,
"f(x)": f_val,
"g(x)": g_val,
"f'(x)": f_prime,
"g'(x)": g_prime,
}