我已经从gromacs生成了一个ascii文件(大小为(1407675×3)尺寸(2055×2055)的协方差矩阵的dat文件,并且想要使用schlitter方程计算熵,S=Kb/2*ln det|1 + (Kb*e*e*matrix/hbar*hbar|
但是我得到了奇怪的价值观,任何人都可以拥有代码请分享或者有人可以修改(或检查)下面的代码非常感谢。
import sys, os
import numpy as np # Import numpy for dot products etc
import numpy.testing as npt # Import numpy.testing for comparing numbers
import pmx # Import pmx classes
import math # Import maths classes (floor)
from numpy.linalg import det
sigma = numpy.loadtxt('covar_fit.dat')
hbar = 1.054571628e-34 #Joules seconds
T = 310.0 # Kelvin
Kb = 1.3806504e-23 #Joules/Kelvin
Euler = 2.71828
matrix = np.resize(sigma,(2055,2055))
k = np.identity(2055)
mat = ((Kb*T*Euler*Euler)*matrix)/(hbar*hbar)
m = np.array(mat)+ np.array(k)
sign,logdet = np.linalg.slogdet(m)
(sign, logdet)
det = logdet
entropy = Kb*0.5*det
print (entropy)
答案 0 :(得分:0)
这是你代码中的一个错误 - 等式中的e
不是指数(2.71828),而是电子电荷。
e 2 /(hbar * c)~1 / 137(又名精细结构常数)