我正在使用 python3 和 sympy 0.7.4.1。我不知道如何保存解决方案以供将来使用(我在手册或谷歌上找不到任何有用的东西)。例如,我有一些方程 eq1,eq2 和 t1+t2+t3==0,那么我可以通过以下方式求解方程
solve([t1+t2+t3,eq1,eq2],[t1,t2,t3]
但我想存储 t1,t2,t3 的解决方案,以便我可以将它们用于其他操作。有没有一种简单的方法可以实现这一目标?简单地使用 [t1,t2,t3]=solve([t1+t2+t3,eq1,eq2],[t1,t2,t3] 是行不通的。
解决的返回是
{t2: -3*theta_2**2/8 + 3*theta_2*theta_3/4 - 3*theta_3**2/8, t3: 3*theta_2**2/4 - 3*theta_2*theta_3/2 + 3*theta_3**2/4, t1: -3*theta_2**2/8 + 3*theta_2*theta_3/4 - 3*theta_3**2/8}
如果我添加标志 set=True,则会是
([t1, t2, t3], {(-3*theta_2**2/8 + 3*theta_2*theta_3/4 - 3*theta_3**2/8, -3*theta_2**2/8 + 3*theta_2*theta_3/4 - 3*theta_3**2/8, 3*theta_2**2/4 - 3*theta_2*theta_3/2 + 3*theta_3**2/4)})
对于 dict=True,它是
[{t2: -3*theta_2**2/8 + 3*theta_2*theta_3/4 - 3*theta_3**2/8, t3: 3*theta_2**2/4 - 3*theta_2*theta_3/2 + 3*theta_3**2/4, t1: -3*theta_2**2/8 + 3*theta_2*theta_3/4 - 3*theta_3**2/8}]
最佳答案
首先请注意,一般来说,您可以有多种解决方案。这就是为什么 set=True 返回一组元组(而不是仅仅一个元组),而 dict=True 返回一个字典列表(而不只是一个)。
最简单的是 dict=True。要访问解决方案,请执行类似的操作
sols = solve([t1 + t2 + t3, eq1, eq2], [t1, t2, t3])
sols[0][t1] # This is t1 in the first solution
如果有更多解决方案,它们将是 sols[1]
、sols[2]
等等。在每种情况下,字典中的键都是该解决方案所等于的符号,例如 t1
或 t2
。
关于python - sympy:如何保存 "solve"处的解决方案以供重复使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21371093/