前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >克罗内克符号kronecker_delt

克罗内克符号kronecker_delt

作者头像
py3study
发布2020-01-20 11:08:26
8450
发布2020-01-20 11:08:26
举报
文章被收录于专栏:python3python3

Kronecker delta 克罗内克函数

Wiki

维基百科

Kronecker delta 定义

\[\delta _{{ij}}={\begin{cases}0&{\text{if }}i\neq j,\\1&{\text{if }}i=j.\end{cases}}\]

Python3 代码实现

函数设计

代码语言:javascript
复制
kronecker_delta_ij = lambda i, j: 1 if i==j else 0

函数使用

代码语言:javascript
复制
kronecker_delta_ij(1, 1)  # 结果为 1
kronecker_delta_ij(1, 3)  # 结果为 0

\(\delta_{ij}\)张量定义

代码语言:javascript
复制
def delta_ij(n):
    Delta_ij = []
    for i in range(n):
        for j in range(n):
            Delta_ij.append(kronecker_delta_ij(i, j))
    return [Delta_ij[:3], Delta_ij[3:6], Delta_ij[-3:]]

example:

代码语言:javascript
复制
deltaij = delta_ij(3)
print(deltaij)

结果:
[[1, 0, 0], [0, 1, 0], [0, 0, 1]]

关于克罗内克符号的补充

构造方法1

代码语言:javascript
复制
import numpy as np
n = 3
i, k = np.ogrid[:n, :n]
res = np.zeros((n, n, n, n), int)
res[i, i, k, k] = 1
print(res)

Result:

代码语言:javascript
复制
[[[[1 0 0]
   [0 1 0]
   [0 0 1]]

  [[0 0 0]
   [0 0 0]
   [0 0 0]]

  [[0 0 0]
   [0 0 0]
   [0 0 0]]]


 [[[0 0 0]
   [0 0 0]
   [0 0 0]]

  [[1 0 0]
   [0 1 0]
   [0 0 1]]

  [[0 0 0]
   [0 0 0]
   [0 0 0]]]


 [[[0 0 0]
   [0 0 0]
   [0 0 0]]

  [[0 0 0]
   [0 0 0]
   [0 0 0]]

  [[1 0 0]
   [0 1 0]
   [0 0 1]]]]

构造方法2

代码语言:javascript
复制
import numpy as np
n = 3
i = np.aragne(3)
res = np.zeros((3,3,3), int)
res[i, i, i] = 1
print(res)

总结

本次分享的知识虽小,但是五脏皆全。涉及到了lambda表达式,三元表达式,for循环,函数定义,以及numpy库的知识。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-04-09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Kronecker delta 克罗内克函数
    • Wiki
      • Kronecker delta 定义
        • Python3 代码实现
        • 关于克罗内克符号的补充
          • 构造方法1
            • 构造方法2
            • 总结
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档