也许我刚刚过度,但我不明白为什么这个计算普朗克定律的简单代码无效。
#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坎德拉的值,而不是这个微小的数字。
错误在哪里?
答案 0 :(得分:2)
您的结果是正确的,下图中的y轴位于nm
,kW
。如果将它们转换为SI单位,则系数为1e12
。根据图表粗略3e12
,非常接近您的计算结果。
答案 1 :(得分:0)
图表只是使用不同的比例。 Bλ单位为W·sr-1·m-3。