python按公式求和,Python中如何求和
可以使用Sympy版本引入的新听话裙数组模块。在
我假设你的k和m参数是数字,不是符号(否则我建议用symphy.tensor)。在
考虑两个向量的长度。所以X是秩为2,形状为(2,3)的听话裙。
我还选择了一个简单的向量:In [1]:来自sympy import *
在[2]中:从sympy.tensor.array导入*
In [3]: var(a,b,c,d,e,f )
Out[3]: (a,b,c,d,e,f)
In [4]: X=数组([[a,b,c],[d,e,f]])
在[5]: var(w1,w2,w3 )
输出[5]: (w1,w2,w3)
In [6]: W=数组([w1,w2,w3])
现在用三个指数(2来自X,1来自W)的乘积创建一条听话的裙子:
^{pr2}$
让我们对第二个和第三个索引求和(Python符号中的索引1和2,因为索引是从零开始的),这相当于您所说的点积:
^{3}$
同样的表达式可以概括为:在[12]中:STC=sum(张量收缩(TP,(1,2)))
在[13]: stc
out[13]:a * w1 b * w2 c * w3 d * w1 e * w2 f * w3
对于数组的导数,可以使用derivative _ by _ array (…)。它将创建一个更高阶的服从裙,其每个组件都是由后一个自变量的一个组件派生而来:in [14]: derivative _ by _ array (STC,W)
out[14]:[阿拉伯、英国、法国]
编辑
现在参数m和k已经被指定为符号,我将添加这一部分。在
X和w被声明为索引基:在[1]中:X=IndexedBase(X )
In [2]: W=IndexedBase(W )
In [3]: var(i,j,M,K ,integer=True)
Out[3]: (i,j,M,K)
你的表达式是指数I和J的乘积之和,表达式如下:in [4]: s=sum (x [I,J] * w [J],(I,1,M),(J,1,K))
在[5]: s
Out[5]:
kM
___ ___
W[j]X[i,j]
j=1 i=1
现在,我们将得到s.diff(W[j])或使用不同的索引s.diff(W[k])。不幸的是,这在SymPy中还没有实现。
github上有一个PR,会增加对索引对象派生的支持,但是到目前为止还没有合并:
https://github.com/sympy/sympy/pull/9314
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。