我的普朗克定律实施有什么问题?

What's wrong with my Planck law implementation?

也许我只是太累了,但我不明白为什么这个计算普朗克定律的简单代码不起作用。

#include <iostream>
#include <cmath>

const double h = 6.626070040e-34;

const double c = 299792458;

const double kB = 1.38064852e-23;

double planck_law_wavelength (double t, double l)
{
    return ((2 * h * c * c) / (l * l * l * l * l))
        / (exp (h * c / (l * t * kB)) - 1);
}

int main ()
{
    std::cout << planck_law_wavelength (4000, 0.5e-6) << std::endl;
}

这输出 2.86509e+12 但根据下图我应该得到大约 3000 坎德拉的值,而不是这个小数字。

哪里错了?

您的结果是正确的,下图中的 y 轴在 nmkW 中。如果将它们转换为 SI 单位,则有 1e12 的系数。根据图表大致3e12,非常接近您的计算结果。

图表只是使用了不同的比例。 Bλ单位为W·sr−1·m−3.