Неявная дифференциация с 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?


person Robby    schedule 04.07.2016    source источник


Ответы (3)


SymPy имеет функцию idiff, которая делает то, что вы хотите

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

Вы можете использовать теорему о неявной функции, которая утверждает, что когда две переменные x, y связаны неявным уравнением 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
person Stelios    schedule 04.07.2016

У вас есть дифференциальное уравнение, поэтому вы можете изменить его с помощью решения:

solve(sol, diff(y, x, 1))
person zarak    schedule 04.07.2016