当给起始向量一个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)
有没有比这种解决方法更好的解决方案?
答案 0 :(得分:2)
鉴于以下原因,您必须采取的解决方法:
nsolve
将x0
参数直接传递给this line上的mpmath.findroot
findroot
仅在this line上支持x0
中满足isinstance(x0, (list, tuple))
的可迭代项。此外,它必须是一个简单的元组或列表。在随后的x0 = [ctx.convert(x) for x in x0]
中,假定其元素为标量。 SymPy矩阵不是list
或tuple
的实例。另外,w.tolist()
还不够,因为结果列表是嵌套的。因此,需要w.T.tolist()[0]
。
现在在SymPy存储库中为an open issue。