python按公式求和,Python中如何求和

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: