Kronecker增量的符号简化和 [英] Sympy simplify sum of Kronecker delta

查看:4
本文介绍了Kronecker增量的符号简化和的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何以渐近形式简化Kronecker Delta表达式的和?

例如考虑Sum(KroneckerDelta(i,j),(i,0,n-1))Sum(KroneckerDelta(i, j, (0, n - 1)), (i, 0, n - 1))

from sympy import *
from sympy.concrete.delta import _simplify_delta
n = symbols('n')
j = tensor.Idx('j')
i = tensor.Idx('i')
_simplify_delta(simplify(Sum(KroneckerDelta(i,j),(i,0,n-1))))
_simplify_delta(simplify(Sum(KroneckerDelta(i,j,(0,n-1)),(i,0,n-1))))

输出Sum(KroneckerDelta(i, j), (i, 0, n - 1))Sum(KroneckerDelta(i, j, (0, n - 1)), (i, 0, n - 1))

如果j被约束为介于0n-1之间(我如何判断出现的症状?),则应该减少到1,这发生在i==j处。此外,如果求和比较复杂,我预计它会删除sum,并将sum变量i替换为变量j。

此外,我对KroneckerDelta函数的各种近似简化的资源感兴趣。我最近发现了如何在渐近中执行隐式矩阵微分,KroneckerDelta函数随处可见。

编辑:我找到了一个解决方案。它不是自动的。 我使用help(sympy.concrete.delta)找到了simy.concrete.Delta中的更多函数。如果我们复制结果表达式并将Sum替换为sympy.concrete.delta.deltasummation,则会发生所需的简化。我仍然很好奇是否有一个Delta简化包可以自动尝试所有这些事情。

推荐答案

可以使用Sum().doit()summation计算求和:

In [1]: from sympy import *
   ...: from sympy.concrete.delta import _simplify_delta
   ...: 
   ...: n = symbols("n")
   ...: j = tensor.Idx("j")
   ...: i = tensor.Idx("i")

In [2]: s = Sum(KroneckerDelta(i, j), (i, 0, n - 1))

In [3]: s
Out[3]: 
n - 1     
 ___      
 ╲        
  ╲   δ   
  ╱    i,j
 ╱        
 ‾‾‾      
i = 0     

In [4]: s.doit()
Out[4]: 
⎧1  for j ≥ 0 ∧ j ≤ n - 1
⎨                        
⎩0        otherwise      

In [5]: summation(KroneckerDelta(i, j), (i, 0, n - 1))
Out[5]: 
⎧1  for j ≥ 0 ∧ j ≤ n - 1
⎨                        
⎩0        otherwise 
虽然您可以使用j = symbols('j', nonnegative=True)来指定j>=0,但目前还没有在假设中指定j<=n-1的方法。您也可以手动将这些条件替换为True,例如:

In [8]: s.doit().subs({j >= 0: True, j <= n-1: True})
Out[8]: 1

给出KroneckerDelta界限的第二个求和将自动计算:

In [11]: s2 = Sum(KroneckerDelta(i, j, (0, n - 1)), (i, 0, n - 1))

In [12]: s2
Out[12]: 
n - 1     
 ___      
 ╲        
  ╲   δ   
  ╱    i,j
 ╱        
 ‾‾‾      
i = 0     

In [13]: s2.doit()
Out[13]: 1

这篇关于Kronecker增量的符号简化和的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆