Sympy-linsolve和solve给出了不同的结果

2024-05-19 03:37:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个52个方程组和浮动系数(通常不是有理数)。这个长长的方程列表存储在变量concrete_eqs中,而未知数列表(拉格朗日数)存储在lagran中。系统是线性的

使用solve,解决方案是:

result = solve(
              concrete_focs, lagran
              ,simplify = False 
              ,exclude = []

              )

使用linsolve,它将是:

linresult = list(linsolve(concrete_focs, lagran))

我用solve检查了这个解,把它代入到方程中,它给出了正确的结果。使用linsolve,不仅解决方案不同,而且它们是错误的:当我将它们替换回来时,它们不会解决系统

linsolve不会抛出任何错误。我使用linear_eq_to_matrix将方程组转换成矩阵形式,并且系统具有满秩。由于未知数是索引变量,我也尝试用linsolve和符号来解决系统,但这并没有解决问题

我想用linsolve解这个线性系统,因为它比solve快得多,即使对于这个简单的系统

我试图用索引变量在更简单的问题中重现这个问题,但我得到了正确的结果

有没有关于为什么会发生这种情况的线索?(我怀疑这是因为对浮点无理系数的处理,但我不确定。)


Tags: 列表系统错误线性方程组解决方案方程solve

热门问题