How to replace character for matrix using symPy and numPy

I am trying to replace two characters in my equation for the matrix form of each of them.

I created a switching function that formed my expression:

t, vS, = sy.symbols('t, vS', commutative = False) hS = t + vS eta = myComm(t,hS) dHs = myComm(eta,hS) print dHs.expand() 

to get the correct expression I want:

 2*t*vS*t + t*vS**2 - t**2*vS - 2*vS*t*vS - vS*t**2 + vS**2*t 

So now I want to replace the characters t and vS with matrices, however when using subs I get the error message: "unhashable type:" list "" I assume that this is due to my initialization of the matrices or how they should be replaced correctly, since I am new to both numPy and symPy.

The rest of the code:

 tRel = ([e0, 0],[0,e1]) vtmp = ([v0, v1],[v2,v3]) dHs = dHs.subs(t, tRel) dHs = dHs.subs(vS, vtmp) print dHs 
+6
source share
1 answer

Maybe use lambdify :

 import sympy as sy import numpy as np from sympy.abc import x, y z = ((x+y)**2).expand() print(z) # x**2 + 2*x*y + y**2 X = np.arange(6).reshape(2,3) Y = np.arange(1,7).reshape(2,3) f = sy.lambdify((x, y), z, 'numpy') print(f(X, Y)) # [[ 1 9 25] # [ 49 81 121]] assert np.allclose(f(X, Y), (X**2 + 2*X*Y + Y**2)) 
+4
source

Source: https://habr.com/ru/post/946449/


All Articles