2017-03-22 105 views
0

我的代碼:使用numpy,sympy函數創建符號矩陣?

def crearMatrix(name,shape=(2,2)): 
    X = np.empty(shape) 
    for i in range(shape[0]): #X.shape[1] 
     for j in range(shape[1]): 
      X[i][j] = Symbol("a"+'_{'+str(i*10+j+11)+'}') 
    return X 

錯誤消息:

TypeError: can't convert expression to float

回答

0

你可能不希望numpy matrix'es存儲sympy的符號。爲此,最好使用sympy.Matrix

import sympy 

def crearMatrix(name,shape=(2,2)): 
    X = [] 
    for i in range(shape[0]): 
     row = [] 
     for j in range(shape[1]): 
      row.append(sympy.Symbol("a"+'_{'+str(i*10+j+11)+'}')) 
     X.append(row) 
    return sympy.Matrix(X) 

A = crearMatrix("a") 
print(sympy.latex(A**2)) 

# \left[\begin{matrix}a_{11}^{2} + a_{12} a_{21} & a_{11} a_{12} + a_{12} a_{22}\\a_{11} a_{21} + a_{21} a_{22} & a_{12} a_{21} + a_{22}^{2}\end{matrix}\right]