python - 在 sympy 中与克罗内克三角洲签约
问题描述
我正在尝试在 sympy 中进行一些张量计算,但我似乎无法让它简化针对克罗内克三角洲的任何张量收缩,即最小示例:
from sympy import *
n = Idx('n')
i = Idx('i',(1,n))
j = Idx('j',(1,n))
x = IndexedBase('x')
print(Sum(KroneckerDelta(i,j)*x[j],(j,1,n)))
这里,n 是空间的维度,i,j 是从 1 到 n 的索引。你会期望总和计算为 x[i],除了 sympy 不做任何简化,尽管使用了简化命令
解决方案
我想我在发布类似问题时找到了您问题的解决方案
你想要的是sympy.concrete.delta.deltasummation
代替Sum
print(sympy.concrete.delta.deltasummation(KroneckerDelta(i,j)*x[j],(j,1,n)))
>>> Piecewise((x[i], (n >= i) & (i >= 1)), (0, True))
如果 KronckerDelta 函数指定了界限,这将进一步简化
print(sympy.concrete.delta.deltasummation(KroneckerDelta(i,j,(1,n))*x[j],(j,1,n)))
>>> x[i]
不幸的是,我不知道如何用 deltasummation 自动替换 Sum,但至少这对您来说是一个起点。
还有一些其他的简化可以在sympy.concrete
和sympy.concrete.delta
编辑:链接到我有点相关的问题Sympy 简化 Kronecker delta 的总和
推荐阅读
- python - 尝试在 Python 中从 CSV 导入 Oracle 数据库
- excel - 从雅虎财经中提取数据
- powershell - Connect-SPOService 错误:无法加载类型 'Microsoft.SharePoint.Client.SharePointOnlineCredentials
- google-apps-script - 谷歌脚本:仅当数字上升时才从不同的选项卡更新列
- python - 无法在用户模型中导入 restframework.generics
- mongodb - MongoDB:从多个嵌入式数组中查询单个文档?
- ballerina - 无法导入核心 Ballerina 模块
- shopify - Shopify 遗嘱主题更改变体以下拉选择如果超过 5 个产品
- javascript - 验证通过后不显示 jquery 验证模式
- java - 来自 mongo 模板的 Mongo 响应未正确映射到 java 对象