Python 3 的隐式微分?

Implicit differentiation with Python 3?

我们如何推导出 Python 3 中的隐式方程?
例如 x^2+y^2=25 微分是:dy/dx=-x/y,当尝试这个时:

from sympy import *

init_printing(use_unicode=True)

x = symbols('x')
y = Function('y')(x)

eq = x**2+y**2-25
sol = diff(eq, x)
print(sol)

但是它显示:

2*x + 2*y(x)*Derivative(y(x), x)

怎样才能得到-x/y?

你有微分方程,所以你可以使用求解重新排列它:

solve(sol, diff(y, x, 1))

您可以使用隐函数定理,该定理指出当两个变量 xy 与隐方程 f(x, y) = 0 相关时,[=13= 的导数]关于x等于- (df/dx) / (df/dy)(只要偏导数连续且df/dy != 0)。

x, y = symbols('x, y')
f = x**2 + y**2 - 25
-diff(f,x)/diff(f,y)
-x/y

SymPy 具有函数 idiff 可以满足您的需求

In [2]: idiff(x**2+y**2-25, y, x)
Out[2]:
-x
───
 y