爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 23356|回复: 19

[程序设计] 分享一个求取太阳高度角的小程序

[复制链接]
发表于 2015-6-26 14:48:38 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
自己写的,经过验证应该是正确的,输入参数包括年、月、日、小时、分钟和经纬度。
但是在求真太阳时的时候并没有考虑地球绕日轨道不是标准的圆形所带来的时差,不过这个时差好像最大也就十几分钟,因此就忽略不计了。

直接贴上代码:

function HSI=calHSI(year,month,day,hour,min,lat,lon)

%HSI太阳高度角(单位:°)
%year年
%month月
%day日
%hour小时
%min分钟
%lat纬度(单位:°)
%lon经度(单位:°)

d=datenum(year,month,day)-datenum(year,1,1)+1;
T=2*pi*(d-1)/365;   %单位:弧度
SD=(0.006918-0.399912*cos(T)+0.070257*sin(T)-0.006758*cos(2*T)+0.000907*sin(2*T)-0.002697*cos(3*T)+0.00148*sin(3*T));
ST=hour+min/60+(lon-120)/15;
w=15*(ST-12);
HSI=asind(sind(lat)*sin(SD)+cosd(lat)*cos(SD)*cosd(w));
end

评分

参与人数 2金钱 +12 贡献 +2 收起 理由
baiduwenku + 6 赞一个!
Aires + 6 + 2

查看全部评分

密码修改失败请联系微信:mofangbao
发表于 2016-11-9 23:21:33 | 显示全部楼层
w要转换成弧度就对了
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

发表于 2015-6-26 16:17:49 | 显示全部楼层
谢谢分享                             
密码修改失败请联系微信:mofangbao
发表于 2015-6-27 19:54:33 | 显示全部楼层
谢谢分享哇
密码修改失败请联系微信:mofangbao
发表于 2015-6-28 19:18:05 | 显示全部楼层
d:\11png你好,我把你的小程序编成了Fortran,程序如下,但是为什么结果是不对的,麻烦帮忙看一下吧
PROGRAM main
IMPLICIT NONE
integer::julianday,i
real::T,pi,SD,lon,lat,ST,HSI,w
real::hour(24)
lon=145.
lat=36.
data hour /1.,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.,12.,13.,14.,15.,16.,17.,18.,19.,20.,21.,22.,23.,24./

do i=1,24
pi=3.141592654
julianday=735701-735600+1
T=2*pi*(julianday-1)/365   !单位:弧度
SD=(0.006918-0.399912*cos(T)+0.070257*sin(T)-0.006758*cos(2*T)+0.000907*sin(2*T)-0.002697*cos(3*T)+0.00148*sin(3*T))
ST=hour(i)+(lon-120)/15
w=15*(ST-12)
lat=pi/180.*lat
lon=pi/180.*lon
HSI=asin(sin(lat)*sin(SD)+cos(lat)*cos(SD)*cos(w))
HSI=HSI*180/pi
write(*,*)HSI
end do
!write(*,*)HSI
END
密码修改失败请联系微信:mofangbao
发表于 2015-6-28 19:20:37 | 显示全部楼层
怎么发图片,我想把计算结果发你,但是不会发图片,见谅,就是结果是正负掺杂,应该不对
11.png
密码修改失败请联系微信:mofangbao
发表于 2016-1-26 02:35:30 | 显示全部楼层
好东西,学习了!
密码修改失败请联系微信:mofangbao
发表于 2016-1-26 10:21:52 | 显示全部楼层
本帖最后由 yangwei19981 于 2016-1-26 10:23 编辑
听雨残荷 发表于 2015-6-28 19:18
你好,我把你的小程序编成了Fortran,程序如下,但是为什么结果是不对的,麻烦帮忙看一下吧
PROGRAM main
...

HSI=asin(sin(lat)*sin(SD)+cos(lat)*cos(SD)*cos(w))中,w是弧度,你要进行变化,w=pi/180.*w; 同时最后lat, lon也要变成度进行循环。
密码修改失败请联系微信:mofangbao
发表于 2016-3-16 19:41:45 | 显示全部楼层
听雨残荷 发表于 2015-6-28 19:18
你好,我把你的小程序编成了Fortran,程序如下,但是为什么结果是不对的,麻烦帮忙看一下吧
PROGRAM main
...

请问一下,我现在也出现了正负混杂的结果,到底是为什么会出现这样呢?
密码修改失败请联系微信:mofangbao
发表于 2016-3-17 11:57:33 | 显示全部楼层
说的真好!送赞一个。
密码修改失败请联系微信:mofangbao
发表于 2016-3-18 11:03:18 | 显示全部楼层
听雨残荷 发表于 2015-6-28 19:20
怎么发图片,我想把计算结果发你,但是不会发图片,见谅,就是结果是正负掺杂,应该不对

请问,你解决了吗,是什么原因。我的也是,出现负值
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表