python - sympy:如何保存 "solve"处的解决方案以供重复使用?

标签 python sympy

我正在使用 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] 等等。在每种情况下,字典中的键都是该解决方案所等于的符号,例如 t1t2

关于python - sympy:如何保存 "solve"处的解决方案以供重复使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21371093/

相关文章:

python - 奥杜 11 : ImportError No Module Named 'PyPDF2'

python - 使用断言的最佳实践?

python - Sympy 函数替换

python - 在系数之间添加乘号(*)

numpy - 分段函数和 numpy 模块的 sympy.lambdify 错误

python - 在python中在哪里存储日志文件名?

Python - 引用不同目录中的文件

python - 在 matplotlib 交互式绘图中拖动点

python - 如何按词典顺序组织 PolynomialFeatures 的系数,以便它们与多元多项式的 sympy 匹配?

python - 求解线性方程组和线性不等式