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

2024-05-13 05:21:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚刚发现了Sympy,所以我还是不太确定如何最好地使用它。 我有一个等式

{1美元^

vex5x矩阵或vex5x矩阵

然而,我所知道的符号只允许我将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))

这将引发以下错误:

^{pr2}$

谷歌搜索到目前为止并没有真正让我明白,因为谷歌似乎总是想谈论纽比而不是同情。 另外,我想这都是很基本的,所以请分享你的智慧;)


Tags: 代码fromimportinit符号矩阵matrixbeta
1条回答
网友
1楼 · 发布于 2024-05-13 05:21:54

使用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用数学方法解释函数。也就是说,矩阵的指数不是其组成部分的指数,而是指数的泰勒展开收敛到的矩阵。它只对方阵有意义。在

相关问题 更多 >