我想避免在我编写的scypy基本脚本中出现caps lock错误。 脚本计算偏导数
from sympy import *
from sympy.parsing.sympy_parser import parse_expr
from sympy.parsing.sympy_parser import standard_transformations, \
x, y, z = symbols('x y z ', real=True)
transformations = (standard_transformations + (implicit_multiplication_application,)
self.eq1 = parse_expr(self.entry_5.get(), locals(), transformations=transformations)
self.dfx = diff(self.eq1, x)
self.dfy = diff(self.eq1, y)
self.dfz = diff(self.eq1, z)
对于这个例子来说,它工作得很好,条目5是x**2+y**2+z**2
'Partial derivatives calculation:
Partial der by X: 2*x
Partial der by Y: 2*y
Partial der by Z: 2*z
但现在,我想用同样的代码加上大写字母X,Y,Z:
.
.
.
x, y, z, X, Y, Z = symbols('x y z X Y Z', real=True)
.
.
.
现在,条目5是-X**2+y**2+z**2(大写X) 输出为:
'Partial derivatives calculation:
Partial der by X: 0
Partial der by Y: 2*y
Partial der by Z: 2*z
如果您希望将输入改写为小写,以便硬编码的导数始终有效,您可以将输入转换为小写,或者更安全地提供
locals
,将感兴趣的大写符号重新映射为小写符号。为了清楚起见,我使用S
来表示同情,而不是解析器:在您的代码中,您必须使用在我的示例中使用的dict()更新您的局部变量:
loc = locals(); loc.update(dict([(str(i), str(i).lower()) for i in symbols('X:Z')]))
,并在代码中使用loc
而不是locals()
相关问题 更多 >
编程相关推荐