[英]sum over matrix entries in sympy 1.0 with python 3.5
我刚刚发现了Sympy所以我仍然不太确定如何最好地使用它。 我有一个等式
X为20x5矩阵,Y为20x1矩阵/ Vektor,beta为5x1矩阵/ Vektor
然而,我知道的符号只允许我使用i作为变量,而不是作为矩阵中的位置。 码:
from sympy import exp, init_printing, sqrt, sin, tan, cos, diff, Sum, Matrix, log, symbols, MatrixSymbol
init_printing()
X = MatrixSymbol('X',20,5)
Y = MatrixSymbol('Y',20,1)
beta = MatrixSymbol('beta',5,1)
expr = Sum((Y[i]*exp((Matrix(X[i,:])*Matrix(beta))[0,0])),(i,1,20))
这会引发以下错误:
IndexError: Single index only supported for non-symbolic indices.
谷歌搜索它并没有真正让我到目前为止,因为谷歌似乎总是想谈论numpy而不是同情。 另外,我猜这是非常基本的,所以请分享你的智慧;)
使用IndexedBase
:
In [1]: X = IndexedBase("X")
In [2]: Y = IndexedBase("Y")
In [4]: beta = IndexedBase("beta")
In [5]: expr = Sum(Y[i]*exp(Sum(X[i, j]*beta[j], (j, 1, 5))), (i, 1, 20))
In [7]: pprint(expr)
20
_____
\ `
\ 5
\ __
\ \ `
) ) beta[j]*X[i, j]
/ /_,
/ j = 1
/ e *Y[i]
/____,
i = 1
还要注意SymPy以数学方式解释函数。 也就是说,矩阵的指数不是其分量的指数,而是指数的泰勒展开收敛的矩阵。 它只对方形矩阵有意义。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.