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

时间:2018-02-13 23:32:33

标签: c++ physics

也许我刚刚过度,但我不明白为什么这个计算普朗克定律的简单代码无效。

enter image description here

#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坎德拉的值,而不是这个微小的数字。

enter image description here

错误在哪里?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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