【问题标题】:Implicit differentiation with Python 3?Python 3 的隐式微分?
【发布时间】:2016-07-04 04:14:22
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    SymPy 具有 idiff 功能,可以满足您的需求

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

    【讨论】:

      【解决方案2】:

      您可以使用隐函数定理,该定理指出当两个变量xy 通过隐式方程f(x, y) = 0 相关时,则yx 的导数等于- (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
      

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-06-28
          • 1970-01-01
          • 1970-01-01
          • 2014-08-23
          • 1970-01-01
          • 2020-02-11
          相关资源
          最近更新 更多