为了账号安全,请及时绑定邮箱和手机立即绑定

给定一个多项式函数作为字符串,将一阶导数作为字符串返回

给定一个多项式函数作为字符串,将一阶导数作为字符串返回

湖上湖 2022-07-26 17:01:17
我正在尝试创建一个简单的导数计算器函数,它将多项式函数作为字符串,并将一阶导数作为另一个字符串返回。我是初学者,完全不知道如何开始。def derivative(str): derivative("3*x^2 + 4*x - 22") # Should return 6*x^1 + 4*x^0 - 0如果有人可以帮助我开始这个,我将不胜感激!
查看完整描述

1 回答

?
炎炎设计

TA贡献1808条经验 获得超4个赞

Python 的符号库sympy可以处理将字符串转换为符号表达式并获取导数。请注意,Python 使用**for power, while^仅用于布尔异或。 convert_xor负责将 转换^为电源。

下面是一些示例代码,可帮助您开始和试验。

from sympy import sympify, Derivative

from sympy.parsing.sympy_parser import parse_expr, standard_transformations, convert_xor


def derivative(str_expr):

    transformations = (standard_transformations + (convert_xor,))

    expr = parse_expr(str_expr, transformations=transformations)

    return str(Derivative(expr).doit())


print(derivative("3*x^2 + 4*x - 22"))

print(derivative("sin(x/cos(x))"))

print(derivative("exp(asin(x^2)/sqrt(x))"))

print(derivative("LambertW(x)"))

print(derivative("erf(x)"))

输出:


6*x + 4

(x*sin(x)/cos(x)**2 + 1/cos(x))*cos(x/cos(x))

(2*sqrt(x)/sqrt(1 - x**4) - asin(x**2)/(2*x**(3/2)))*exp(asin(x**2)/sqrt(x))

LambertW(x)/(x*(LambertW(x) + 1))

2*exp(-x**2)/sqrt(pi)


查看完整回答
反对 回复 2022-07-26
  • 1 回答
  • 0 关注
  • 103 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信