克罗内克符号kronecker_delta
Posted brightyuxl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了克罗内克符号kronecker_delta相关的知识,希望对你有一定的参考价值。
Kronecker delta 克罗内克函数
Wiki
Kronecker delta 定义
[delta _{{ij}}={egin{cases}0&{ ext{if }}i eq j,\\1&{ ext{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库的知识。
以上是关于克罗内克符号kronecker_delta的主要内容,如果未能解决你的问题,请参考以下文章
机器学习中的矩阵求导Jacobian矩阵和Hessian矩阵