C++ 什么';我执行普朗克定律有什么问题?
也许我太累了,但我不明白为什么这个计算普朗克定律的简单代码不起作用C++ 什么';我执行普朗克定律有什么问题?,c++,physics,C++,Physics,也许我太累了,但我不明白为什么这个计算普朗克定律的简单代码不起作用 #包括 #包括 常数双h=6.626070040e-34; 常数双c=299792458; 常数双kB=1.38064852e-23; 双普朗克定律波长(双t,双l) { 返回((2*h*c*c)/(l*l*l*l*l)) /(exp(h*c/(l*t*kB))-1); } int main() { std::cout您的结果是正确的,下图中的y轴为nm,kW。如果您将它们转换为SI单位,则有一个因数为1e12。根据图表,大致
#包括
#包括
常数双h=6.626070040e-34;
常数双c=299792458;
常数双kB=1.38064852e-23;
双普朗克定律波长(双t,双l)
{
返回((2*h*c*c)/(l*l*l*l*l))
/(exp(h*c/(l*t*kB))-1);
}
int main()
{
std::cout您的结果是正确的,下图中的y轴为nm
,kW
。如果您将它们转换为SI单位,则有一个因数为1e12
。根据图表,大致3e12
,与您的计算结果非常接近。图表只是使用了不同的刻度。Bλ单位是W·sr−1·m−3.我确实有一些物理方面的知识,但你确实错过了main
函数中的return
。很抱歉挑剔:)这是个好问题。尝试使用long double
而不是double
@AndrejsCainikovsmain()
是一个可以省略返回的非无效函数。它有一个隐式的返回0
@IlyaBursov,它不会改变。可能是数字错误。我已经注意到了刻度。我的参数是0.5e-6
即0.5nm。普朗克公式不是已经用国际单位制了吗?比如y轴上的瓦特?所以我希望我的输出不是o大约3000与图表一致。否。y轴有nm^(-1),这不是国际单位制,存在1e9
的差异。您只注意到x轴,没有注意到y轴。
#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;
}