使用矩阵起始向量的sympy nsolve typeError

时间:2018-07-19 20:50:23

标签: matrix typeerror sympy solver

当给起始向量一个Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlMultiply, _ SkipBlanks:=True, Transpose:=False 时,我得到一个TypeError的{​​{1}}。值得注意的是,nsolve非常适合方程式为Matrix表达式。这是一个基本示例:

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)

有没有比这种解决方法更好的解决方案?

1 个答案:

答案 0 :(得分:2)

鉴于以下原因,您必须采取的解决方法:

  1. nsolvex0参数直接传递给this line上的mpmath.findroot
  2. findroot仅在this line上支持x0中满足isinstance(x0, (list, tuple))的可迭代项。此外,它必须是一个简单的元组或列表。在随后的x0 = [ctx.convert(x) for x in x0]中,假定其元素为标量。

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


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