【发布时间】:2017-06-30 13:18:56
【问题描述】:
Sympy 对系数特别难看的四次方程解的处理给我留下了深刻的印象。
四次方程是在我称为 Tb 的变量上求解的,该解具有一般形式 Tb = f(Tc)
我在 Sympy 文档中没有找到关于返回的分段结果 solveset() 的详细信息(一旦我在这里艰难地解决自己的答案,我将尝试在需要的地方为文档做出贡献)。
有 4 个分段部分,以“{Piecewise(( ...”) 为标题(对于四次解是合理的)。
但是,每个 Piecewise 部分显然都被分成“块”,用逗号分隔显然表示一个特殊的子情况。
例如,一个分段包含三个中的一个块(为简洁起见,此处截断),
(-sqrt(1.68483078787199*Tc**2 - 3.36390287324716*Tc - 2*(-(-15738.9526511382*Tc >+ .... + 5.04585430987074*Tc + 6222.41209283579)**3/1)(83579)**3/1 /3) - >8296.54945711438)/2 + 0.998291014581918,
后跟另一个“块”(同样用逗号分隔),
Eq(-1.81898940354586e-12*Tc - (-2.52724618180798*Tc**2 + 5.04585430987074*Tc + 6222.41209283579)**2/12 + 14816961.9123814, 0)),
最后一个“块”后跟
... + 5.04585430987074*Tc + 6222.41209283579)**3/216)**(1/3) - >8296.54945711438)/2 + 0.998291014581918, 真)),
关于上述有两个问题:
我是否正确解释了最后一个块末尾的“, True))”意味着我只是有 3 个特殊字符中的两个的通用解 Tb = f(Tc) case 块和 Eq 仅仅意味着 Tb = f(Tc) = 0?
是否有 Sympy 方法以编程方式隔离和提取这些(假定的)特殊情况以供进一步处理?我可能在 Sympy 文档中错过了它。
【问题讨论】:
-
感谢 Stelios 的兴趣。有些事情不是很清楚。完整的 4 Piecewise 部分绝不是最小的。您想查看 solveset 返回的全部结果吗?需要验证的是什么?你想看看我用来设置求解集的一些代码吗?
-
你不能想出一个最小/简单的例子来证明你的问题吗?无论如何,我建议提供完整的可重现代码 sn-p 并清楚地指出问题所在。
-
我的问题涉及正确解释 sympy 的求解集的分段结果,而不是代码结果有任何问题 - 我认为没有任何问题。我是否正确假设每个子部分(用逗号分隔 - 显然是一种分段语法表示)作为给定分段解决方案中的特殊情况解决方案。求解了一个四次方程后,有 4 个分段解,但每个分段解都有子部分。一切都说了,我的问题是:分段解决方案中的逗号是否描述了 {Piecewise} 中的特殊情况?
-
Stelios,我明白你在说什么。看起来我不会在这里得到直接的答案,而是会寻求其他方法来分析应该如何解释 solveset() 结果。在简化方面,只需要 3 行 sympy 代码就可以解决一般的四次 aX**4+bX**3+cX**2+dX+e = 0。我得到了与我的问题相同的一般格式,即4个分段,每个有3个“特殊情况”。在我能破译我的之前,我会用一般的解决方案来回答。感谢您的意见。