您如何整合普朗克定律以使用 python 得到 Stefan-Boltzmann?

How can you integrate planck's law to get Stefan-Bolzmann using python?

我是 python 的新手,我正在尝试通过分析性地整合普朗克定律来获得斯蒂芬玻尔兹曼定律。到目前为止,我绘制了黑体辐射曲线,但我仍然坚持如何整合 it.This 是我的功能:

import numpy as np
h=6.626e-34
c=3.0e+8
k=1.38e-23

def planck(x,T):
    a=2.0*h*c**2
    b=(h*c)/*x*k*T)
    intensity= a/( (x**5)*(np.exp(b)-1.0)
    return intensity

为了集成它,我尝试像这样使用 SymPy:

from sympy import *
x=Symbol('x')
T=Symbol('T')
integrate((x**3)/(exp(x)-1))

但无法进行整合。我确定我应该做一些简化,但我不确定如何做。

要从普朗克定律得到 Stefan-Boltzmann 定律,您需要对所有频率进行积分 (1)。因此你需要一个定积分:

integrate((x**3)/(exp(x)-1),(x,0,oo))

整合详解here。 sympy中可以使用黎曼zeta函数:

n = symbols('n')
riemann_zeta = functions.special.zeta_functions.zeta(n,1)

但是当然不再依赖 x 了。遗憾的是 sympy 无法将积分转换为解析表达式:

x = symbols('x', real=True, negative=False)
pprint(simplify(integrate((x**3)/(exp(x)-1),(x,0, oo))))

只会给出 $\int_0^\infty \frac{x^3}{e^x-1}dx$ 而不是 $\zeta(4)\Gamma(4)=\frac {\pi^4}{15}$。 (对 LaTeX 感到抱歉...)