当前位置: 移动技术网 > IT编程>脚本编程>Python > 克罗内克符号kronecker_delta

克罗内克符号kronecker_delta

2018年11月22日  | 移动技术网IT编程  | 我要评论

周继红老公,zoomland,色狼导航

kronecker delta 克罗内克函数

wiki

维基百科

kronecker delta 定义

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

python3 代码实现

函数设计

kronecker_delta_ij = lambda i, j: 1 if i==j else 0

函数使用

kronecker_delta_ij(1, 1)  # 结果为 1
kronecker_delta_ij(1, 3)  # 结果为 0

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

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:

deltaij = delta_ij(3)
print(deltaij)

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

关于克罗内克符号的补充

构造方法1

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:

[[[[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

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库的知识。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网