我正在使用python3和sympy 0.7.4.1。我无法弄清楚如何保存解决方案以备将来使用(我在manuel或google上找不到任何有用的东西)。例如,我有一些方程式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}]
答案 0 :(得分:3)
首先请注意,一般情况下,您可以拥有多个解决方案。这就是为什么set = True返回一组元组(而不仅仅是一个元组),而dict = True则返回一个dicts列表(而不仅仅是一个)。
最简单的是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
。