使用Python 3进行隐式区分?

时间:2016-07-04 04:14:22

标签: python python-3.x math sympy calculus

我们如何在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

3 个答案:

答案 0 :(得分:4)

SymPy具有执行您想要的功能idiff

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

答案 1 :(得分:2)

你可以使用隐函数定理来说明当两个变量xy与隐式方程f(x, y) = 0相关时,y的导数与尊重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

答案 2 :(得分:1)

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

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