我有一个名为NumApprox的类,它接受一个字符串作为输入(一个包含变量' x'的数学表达式),其中的所有方法只是在给定数值的情况下集成数学表达式的不同方法' x'
的价值预期的输入示例:
input = " x ** 2 * log( x ) "
input = "1 / sqrt(2*pi) * exp(- x **2 / 2) "
我想知道如何隔离并控制' x'由字符串输入提供的变量,并在我的班级中的任何地方使用它,而没有“eval”'功能。
这就是我所做过的,但我不喜欢这样做的评价' eval'函数和我对Python类的有限知识......我想知道是否有更好的替代方案。 ?
from math import pi, sqrt, exp, log
class NumApprox:
def __init__(self, expr):
self.expr = expr
def pdf(self, x):
self.x = x
self.ev = eval( self.expr.replace('x', 'self.x') )
return self.ev
def integrate_rect_method(self, A, B, n):
...
答案 0 :(得分:2)
也许使用模块SymPy
x**2*log(x)
4*log(2)
sqrt(2)*exp(-x**2/2)/(2*sqrt(pi))
sqrt(2)*exp(-2)/(2*sqrt(pi))
结果:
{{1}}