sympy nsolve typeError 与矩阵起始向量

sympy nsolve typeError with Matrix starting vector

当我给它一个 Matrix 作为起始向量时,我得到一个 TypeErrornsolve。值得注意的是,nsolve 与方程是 Matrix 表达式这一事实完全没问题。这是一个基本示例:

import sympy as sy
v = sy.Matrix(sy.symarray("v", (2,)))
w = sy.Matrix([17, 23])
equation = v - w

下一行给出了一个TypeError: cannot create mpf from Matrix([[17],[23]])

sy.nsolve(equation, v, w)

下一行是一个笨拙的解决方法,它给出了正确的输出,Matrix([[17.0],[23.0]]):

sy.nsolve(equation, v, w.T.tolist()[0])

是否有比此解决方法更好的解决方案?

鉴于以下情况,您的解决方法是必要的:

  1. nsolvethis line
  2. 上将 x0 参数直接传递给 mpmath.findroot
  3. findroot 仅支持 x0 中满足 isinstance(x0, (list, tuple))this line 的迭代器。此外,它必须是平面元组或列表;它的元素在随后的 x0 = [ctx.convert(x) for x in x0].
  4. 中被假定为标量

SymPy 矩阵不是 listtuple 的实例。此外, w.tolist() 是不够的,因为结果列表是嵌套的。因此需要 w.T.tolist()[0].


现在 an open issue 在 SymPy 存储库中。