4的5
增加了448个字符的身体
user1141649
  • 165年
  • 8

地球轨道和历史sun-earth距离

我的问题:我创建了程序计算太阳辐射和我需要计算太阳和地球之间的半径。

这本书基于“指南HTML、JavaScript和PHP”科学家和工程师,由大卫·r·布鲁克斯。代码来自这链接这是一个计算器。我编辑的代码。

半径计算

在我的代码被定义为半径计算o - > R = 1.000001018 * (1.0 - e * e) / (1.0 + e * cos (f));在哪里e——地球轨道的偏心率:f-太阳真异常:

空白getSolarPosition(输入*我,SOLPOS * o){如果(我!我- > JulianDate) - > JulianDate = getJulianDate(我);/ /日期必须设置计算朱利安日期双degRad = 0.017453292519943295769236907684886;/ /π/ 180.0 / / 2451545.0 - 1月1日,2000年,在12:00:00 UT双T =(我- > juliandate - 2451545.0) / 36525.0;/ / L0——太阳的几何平均数经度:双L0 T + 0.0003032 = 280.46645 + 36000.76983 * * T * T;/ / M -意味着太阳异常:双M = 357.52910 + 35999.05030 * 0.0001559 * T * T - 0.00000048 T - T * T * T *;双M_rad = M * degRad;/ / e -地球轨道的偏心率:双e = 0.016708617 - -0.000042037 * 0.0000001236 T - * T * T;/ / C -太阳中心的双C = (1.914600 - -0.004817 * * T * 0.000014 T - T) *罪(M_rad) + (0.019993 - -0.000101 * T *罪(2。* M_rad) + 0.000290 *罪(3。* M_rad);双L_save = (10 + C) / 360。/ / L_true——太阳真经度双L_true; if (L_save < 0.) L_true = (L0+C) - ceil(L_save)*360.; else L_true = (L0+C) - floor(L_save)*360.; if (L_true < 0.) L_true+=360.; // f - true anomaly of the sun: double f = M_rad + C * degRad; // Earth-sun distance: o->R =1.000001018*(1.0-e*e)/(1.0+e*cos(f)); // Sidereal time (Theta0) double Sidereal_time=280.46061837+ 360.98564736629*( i->JulianDate-2451545.) + 0.000387933*T*T - T*T*T/38710000.; // Replacement code for Sidereal=fmod(Sidereal,360.) double S_save=Sidereal_time/360.; if (S_save < 0.) Sidereal_time=Sidereal_time-ceil(S_save)*360.; else Sidereal_time=Sidereal_time-floor(S_save)*360.; if (Sidereal_time < 0.) Sidereal_time+=360.; // Obliquity - (Axial tilt) o->obliquity=23.0+26./60.+21.448/3600.-46.8150/3600.*T-0.00059/3600.*T*T + 0.001813/3600.*T*T*T; // right_ascension: tan(alpha) o->right_ascension = atan2(sin(L_true*degRad)*cos( o->obliquity*degRad ), cos(L_true*degRad)); // declination: sin(delta) o->declination = asin(sin( o->obliquity*degRad )*sin(L_true*degRad)); // hour angle H of the sun with respect to the observer's longitude Lobs o->hour_angle=Sidereal_time + i->lon - o->right_ascension / degRad; o->elevation = (asin(sin( i->lat*degRad )*sin( o->declination)+cos(i->lat*degRad)*cos( o->declination )*cos( o->hour_angle*degRad )))/degRad; // Solar Zenit Angle o->Z = 90.-o->elevation; }

这是函数来计算太阳位置。它的工作原理完全相同的鸟和Hulstrom的太阳辐照度模型提到计算器(见上面的链接)。在这里,我使用输入数据保存和输入对象o关于太阳能输出对象,计算数据保存位置后计算。量化——回报的主要的反正切值y / x,以弧度表示(不管它意味着什么,这是来自C / c++手册-

  • 我不是数学家

)。装天花板轮;地板上轮下来。

问题是如果我把旧的日期1849年/ 06/31 11:15太阳常数半径不符合纠正历史记录。在1322.3会SolConst 1367的结果。这是疯狂的。根据历史数据应该是1361.035。因此我希望半径计算是错误的。

地球和太阳的距离修正是另一个函数来计算太阳辐射。代码:

/ /地球和太阳的距离修正,Rsq = 1 / R ^ 2 / /双Rsq = (1.00011 + 0.034221 * cos (d 1) /(6.28318 * 365) + 0.00128 *罪(d 1) / (6.28318 * 365) + 0.000719 * cos (2 * (6.28318 * (d 1) / 365)) + 0.000077 *罪(2 * (6.28318 * (d 1) / 365)));双Rsq = 1.0 / (solpos.R * solpos.R);

我想问你:

  1. 我可以在哪里得到的历史记录来观察太阳-地球半径

  2. 这个公式计算出了什么问题?你能建议更好的公式吗?

user1141649
  • 165年
  • 8
Baidu
map