首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用标准代数表示法输入多项式并求其导数?(Python)

如何用标准代数表示法输入多项式并求其导数?(Python)
EN

Stack Overflow用户
提问于 2014-02-17 12:45:36
回答 2查看 1.6K关注 0票数 0

我没有计算导数的问题,只是我不知道用标准代数记法来处理整个多项式:

EN

回答 2

Stack Overflow用户

发布于 2014-02-17 12:49:33

对于Python语言中的计算机代数,sympy是最好的选择。

计算渐近多项式的导数很简单:

代码语言:javascript
复制
>>> import sympy as sp
>>> x = sp.symbols('x')
>>> sp.diff(3*x**4 + 8*x**2 - 3*x + 1)
12*x**3 + 16*x - 3
票数 1
EN

Stack Overflow用户

发布于 2018-06-05 15:06:53

代码并不简洁,因为我想清楚地显示每一步是如何计算的。

代码语言:javascript
复制
import re

def FirstDerivative(poly):
"Given a polynominal, output its first derivative"
rslt = ""
for sign, coef, expo in re.findall("([\+-]?)\s?(\d?)\*?x\*?\*?(\d?)", '+' + poly):
    coef = int(sign + coef)
    if expo == "":
        expo = "1"
    expo = int(expo)

    new_coef = coef * expo
    new_expo = expo - 1
    if new_coef > 0:
        rslt += "+"
    if new_expo == 0:
        rslt += "%d" % (new_coef)
    elif new_expo == 1:
        rslt += "%d*x" % (new_coef)
    else:
        rslt += "%d*x**%d" % (new_coef, new_expo)

if rslt[0] == "+":
    rslt = rslt[1:]
rslt = rslt.replace("+", " + ")
rslt = rslt.replace("-", " - ")
return rslt

s = "-3*x**4 + 8*x**2 - 3*x + 1"
print(FirstDerivative(s))

s = "3*x**5 + 2*x**3 - 3*x + 1"
print(FirstDerivative(s))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21820947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档