用python导出数学函数

用python导出数学函数,python,math,derivative,Python,Math,Derivative,初学者程序员在这里寻找写一个函数,可以简单地推导出一个数学函数 该函数应按如下方式运行: f(x)=x**2+2*x这称为符号微分 您需要将方程解析为表达式和运算树,然后将微分的常规规则(从微积分I)应用于该树。这是绝对可能的。首先需要解析用户的输入字符串,以获得可以使用的函数的表示形式。然后,您需要根据您想要支持的差异化规则处理函数中的各种术语。这显然是可能的,因为有很多程序可以进行符号差异化。尽管如此,这不是小事。对于上面的简单示例,您需要编写一个解析器,该解析器将: 分解多项式的每个项 解

初学者程序员在这里寻找写一个函数,可以简单地推导出一个数学函数

该函数应按如下方式运行:


f(x)=x**2+2*x这称为符号微分


您需要将方程解析为表达式和运算树,然后将微分的常规规则(从微积分I)应用于该树。

这是绝对可能的。首先需要解析用户的输入字符串,以获得可以使用的函数的表示形式。然后,您需要根据您想要支持的差异化规则处理函数中的各种术语。

这显然是可能的,因为有很多程序可以进行符号差异化。尽管如此,这不是小事。对于上面的简单示例,您需要编写一个解析器,该解析器将:

  • 分解多项式的每个项
  • 解析该项并将其分解为系数、变量和指数
  • 应用权力规则
  • 把输出串在一起
  • 这将只处理这种非常基本的派生类型-没有链式规则、乘积规则等,您必须分别实现它们


    因此,是的,确实可行,但也不平凡。

    中有一个很好的基本符号微分示例。这是scheme,不是python,但在处理输入解析后,应该很容易翻译。

    当然,您可以花几天时间编写自己的Differention程序(幸运的是,Differention非常简单),但如果这不是练习,您实际上可以使用现成的工具,例如,您可以使用:


    请看@hayden注意,这是一个数值导数,而OP是询问符号导数。相关但不同。如果你只想玩一些东西(有源代码),请看@ernie,但公认的答案包括符号导数。我们希望你尝试自己解决这个问题,而不是要求社区为你找到一个完整的解决方案。当您有一些代码向我们展示您的一些努力时(即使是错误的),请更新您的问题和标志以重新打开。谢谢
    import sympy
    x = sympy.Symbol('x')
    sympy.diff(x**2+2*x, x)
    # return: 2*x + 2