gpt4 book ai didi

python - 使用 sympy 解析字符串时出现意外行为

转载 作者:行者123 更新时间:2023-12-04 10:39:25 25 4
gpt4 key购买 nike

我正在尝试使用 sympy 执行方程的导数,但是,如果我手动编写方程,则导数是正确的;当我将方程作为字符串传递时,输出是错误的。谁能解释我如何解决这个问题?我正在使用 python 3.6 和 sympy 1.5.1。

>>>from sympy import *

>>>from operator import *

>>> x1 = symbols('x1')

>>> f = add(sin(x1), mul(x1, x1))

>>> diff(f, x1)

2*x1 + cos(x1) ## Correct output

>>>> f = 'add(sin(x1), mul(x1, x1))' ## Equation provided as string

>>>> diff(f, x1)

(Subs(Derivative(mul(_xi_1, x1), _xi_1), _xi_1, x1) + Subs(Derivative(mul(x1, _xi_2), _xi_2), _xi_2, x1))*Subs(Derivative(add(sin(x1), _xi_2), _xi_2), _xi_2, mul(x1, x1)) + cos(x1)*Subs(Derivative(add(_xi_1, mul(x1, x1)), _xi_1), _xi_1, sin(x1)) ## Wrong output

最佳答案

这是因为 f = 'add(sin(x1), mul(x1, x1))'不是可以被 parse_expr 解析的有效数学方程.此函数旨在解析用数学语法编写的方程,而不是 Sympy 函数。要特别正确解析此函数,您需要使用,例如:

>>> f = 'sin(x1) +  x1^2'
>>> diff(f, x1)
2*x1 + cos(x1)

如果你真的需要使用那个特定的字符串,你可以使用 eval() :
>>> f = 'add(sin(x1), mul(x1, x1))'
>>> diff(eval(f), x1)
2*x1 + cos(x1)

关于python - 使用 sympy 解析字符串时出现意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60002903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com