Quero evitar erros de caps lock em um script de base do scypy que fiz. O script calcula derivadas parciais
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)
Funciona bem para este exemplo entry_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
mas agora estou tentando adicionar X, Y, Z maiúsculo com o mesmo código:
.
.
.
x, y, z, X, Y, Z = symbols('x y z X Y Z', real=True)
.
.
.
agora, entrada_5 é- X ** 2 + y ** 2 + z ** 2 (x maiúsculo) e a saída é:
'Partial derivatives calculation:
Partial der by X: 0
Partial der by Y: 2*y
Partial der by Z: 2*z
Se você deseja que sua entrada seja reformulada para minúsculas, para que os derivados que codificou permanentemente funcionem, você pode converter a entrada para minúsculas ou, com mais segurança, fornecer um locals
remapeamento dos símbolos em maiúsculas de interesse para símbolos em minúsculas. Para maior clareza, uso S
para simpatizar em vez de para o analisador:
>>> S('x', {'x':'upper'}) # example showing you can replace 'x' with 'upper'
upper
>>> S('X', dict([(str(i), str(i).lower()) for i in symbols('X:Z')]))
x
Em seu código, você terá que atualizar seus locais com o dict () que está sendo usado em meu exemplo: loc = locals(); loc.update(dict([(str(i), str(i).lower()) for i in symbols('X:Z')]))
e usar em loc
vez de locals()
em seu código.
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras