低温下如何求玻尔兹曼权重或配分函数?

问题描述

在统计物理中,我们经常试图找出表示为的配分函数

Z=\sum_i e^(-\beta E_i) 其中 \beta 是逆温度。 e^(-\beta E_i),求和项下的项称为玻尔兹曼权重。

现在在低温下,β变得非常大,我们面临的情况是我们必须计算一个非常大的正数或负数的指数(取决于 E_i 的符号)。

在普通的编程语言(例如 Python)中,如果 x>=1000,内在指数函数给出 e^x 无穷大。

例如,在 Python 3 中,我尝试根据泰勒级数展开来估计:

x = 1000
n = int(input('Enter number of terms in Taylor series\n'))

# Taylor Series expansion up to n-th term
def exponential(n,x):
        sum = 1.0
        for i in range(n,-1):
                sum = 1 + x * sum / i
        return sum


print('e^x =',exponential(n,x))

然而,n <= 300 的结果不同,inf 的结果变为 n >= 400

我们能否计算出大 beta 的配分函数(至少是 10 的幂)?会不会有什么窍门?

解决方法

一种方法是使用 mpmath Python 库,它可以处理任意精度和大数。

例如

import mpmath as mp
mp.dps =50
print(mp.exp(500))

结果是 1.40359221785284e+217

但我想知道一些分析近似是否是更好的方法?例如从Physics.SE看到这个

https://physics.stackexchange.com/questions/357824/what-happens-to-the-partition-functions-in-the-limit-t-to-0-or-beta-to-infty

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...