微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。