私は物理問題のジェネリックソルバー/ジェネレータを構築するために、Sympyと一緒に遊んでいます。 1つの要素は、kwargsをとり、それに応じて方程式を再配置し、値を代入する関数に向かうことです。 SOのおかげで、私はそれに必要なものを見つけることができました。forループのSympyソルバのバグ?
しかし.....私はsympy.solve
をforループに入れて、これらの式を生成してみました。
import sympy
R, U, I, eq = sympy.symbols('R U I eq')
eq = R - U/I
for x in 'RUI':
print(x)
print(sympy.solve(eq, x))
出力は?
R
[U/I]
U
[I*R]
I
[]
私はsympy.solve(eq, I)
を行うたびしかし、それは動作し[U/R]
を返します。
今、私は、虚数単位とブロック内に変数隠蔽を使ってsympyを使用していると推測していますが、forループ(および等式)内のシンボル宣言を転送しても、同じ問題。
私は最後にこれがひどく必要なのかどうかはわかりませんが、これはあまり意味がありません。
だから、基本的に「バグ」は「I」ではなく、「R」と「U」にありますか?それは、文字列が虚数単位に使用される 'I'でない限り、sympyが記号的に文字列をシンボルとして受け取るという意味で理にかなっています。 –