matrix - sympy nsolve 矩阵起始向量的类型错误

标签 matrix typeerror sympy solver

当我为起始向量提供一个 Matrix 时,我在使用 nsolve 时遇到了 TypeError 。值得注意的是,nsolve 非常适合方程是一个 Matrix 表达式的事实。这是一个基本示例:

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

以下行给出TypeError:无法从 Matrix([[17],[23]]) 创建 mpf:

sy.nsolve(equation, v, w)

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

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

还有比这个解决方法更好的解决方案吗?

最佳答案

考虑到以下情况,您的解决方法是必要的:

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

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


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

关于matrix - sympy nsolve 矩阵起始向量的类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51431487/

相关文章:

matrix - 如何使用 m 文件将多个计算输出为矩阵?

python - 如何绘制 3D 曲面?

python - 将 NumPy 中定义的函数转换为 SymPy

python - NetworkX:如何将节点坐标分配为属性?

Javascript 表达式的结果不是对象

python - 我收到了 “nonetype”错误,但我不知道为什么

python - 在 python 中显示 sympy 渲染的 svg 的问题

c - 矩阵中存在障碍物的路径数

r - 计算矩阵每个列的 min() 和 max()

python Pandas : transforming - moving values from diagonal