繁体   English   中英

使用python 3.5对sympy 1.0中的矩阵条目求和

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM