gpt4 book ai didi

python - 将字符串转换为数学函数: "name sint is not defined"

转载 作者:行者123 更新时间:2023-12-01 09:30:47 25 4
gpt4 key购买 nike

我有一个字符串格式的函数f(t,u,v);例如't^2 * sint + u*(20 + t) + v*t'

如何解决这个问题?

我尝试这样做:

t = Symbol('t')
u = mu
v = mv
sol = eval(f)

但我收到错误消息 name 'sint' is not Defined

最佳答案

使用eval并不是最好的方法。 SymPy parser具有允许使用 t^2 (称为 convert_xor)和 sin t (称为 implicit_application)等内容解析字符串的选项>)。这是一个例子:

from sympy.parsing.sympy_parser import parse_expr, standard_transformations, implicit_application, convert_xor
transformations = standard_transformations + (implicit_application, convert_xor)
f = parse_expr('t^2 * sin t + u*(20 + t) + v*t', transformations=transformations)

现在 ft**2*sin(t) + t*v + u*(t + 20) 并且您可以正常使用它,例如示例

solve(f.subs({Symbol('u'): 4}), Symbol('v'))    # returns [-t*sin(t) - 4 - 80/t]

您可能需要引入 u, v, t = Symbols('u v t') 以便更轻松地访问这些符号。

不幸的是,sint 不会被识别为 sin(t);空间的缺乏是致命的。这必须进行预处理,可能使用正则表达式。例如,

import re
s = re.sub(r'\bsin', 'sin ', 't^2 * sint + u*(20 + t) + v*t')

在每个“sin”之后留一个空格(额外的空格不会造成伤害)。

关于python - 将字符串转换为数学函数: "name sint is not defined",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49987329/

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