@@ -34,15 +34,15 @@ def matVecMul(mat, u):
3434 return np .matmul (mat , u [..., None ]).squeeze (axis = - 1 )
3535
3636
37- def matVecInv (mat , u ):
37+ def matVecInv (mat , vec ):
3838 r"""
3939 Compute vectorized Matrix Vector Inversion :math:`A^{-1}x` (A / x)
4040
4141 Parameters
4242 ----------
4343 mat : np.ndarray, size (nDOF, M, M) or (M, M)
4444 Matrix or array of matrices.
45- u : np.ndarray, size (nDOF, M) or (M,)
45+ vec : np.ndarray, size (nDOF, M) or (M,)
4646 Vector or array of vectors.
4747
4848 Returns
@@ -57,13 +57,10 @@ def matVecInv(mat, u):
5757 - matVecInv for (nDOF, M, M), (M,) -> (nDOF, M) <=> (M, M) \ (M,) for each nDOF
5858 - matVecInv for (M, M), (M,)) -> (M,) <=> (M, M) \ (M,)
5959 """
60- try :
61- return np .linalg .solve (mat , u )
62- except ValueError :
63- try :
64- return np .linalg .solve (mat [None , ...], u )
65- except ValueError :
66- return np .linalg .solve (mat , u [None , ...])
60+ mat , vec = np .asarray (mat ), np .asarray (vec )
61+ if mat .ndim > 2 and vec .ndim > 1 :
62+ assert mat .shape [0 ] == vec .shape [0 ], "different nDOF for mat and vec"
63+ return np .linalg .solve (mat , vec [..., None ]).squeeze ()
6764
6865
6966def matMatMul (m1 , m2 ):
0 commit comments