将符号矩阵传递给sympy.lambdify

时间:2014-07-09 23:07:08

标签: python matrix sympy

我想在sympy中创建一个符号矩阵的函数,然后将其lambdify以便在numpy中进行评估。让我们尝试一下这个简单的函数,它可以准确地返回我提供的函数f(x)= x,但最终我喜欢做类似于跟踪矩阵或更高级的东西。

当x是情感时,它很好。符号:

import sympy as sy
from sympy import Matrix, MatrixSymbol

x = sy.Symbol('x')
f = sy.lambdify(x, x, 'numpy')
f(Matrix((3,))) # returns Matrix([[3]])

但不是当x是一个同情的时候.MatrixSymbol:

import sympy as sy
from sympy import Matrix, MatrixSymbol

x = sy.MatrixSymbol('x', 2, 2)
f = sy.lambdify(x, x, 'numpy')
f(Matrix((3,))) # should return Matrix((3,)), right?

它告诉我:

lambda() takes no arguments (1 given)

感谢任何想法或指导!

1 个答案:

答案 0 :(得分:0)

这是一个肮脏的黑客。 mySymbol采用字符串(保持简短),n和m是所需的矩阵尺寸。

def makeMatrix(mySymbol,n,m):       #makes a lambdafiable matrix

    myMatrix = zeros(n,m)

    for i in numpy.arange(n):
        for j in numpy.arange(m):
            myStr = mySymbol+"_"+str(i)+"_"+str(j)

            myMatrix[i,j]=sympify(myStr)

    return myMatrix
相关问题