几种算法误差报告
几种算法误差报告
本文主要探讨了几种计算天顶角的算法,并且根据已经测得的标准数据进行了误差对比,以此来判断几种算法的精度。
原算法的误差
算法的计算步骤
算法的详情我不是很了解,但是我得到了计算后的数据,将其与标准数据做对比。
算法的实现代码
MATLAB代码,new1是通过.csv文件导入得到的.mat数据。
1 | %连接日期与时间 |
算法的最终结果
得到的结果如图:

根据上图可以看出来,在所给的测试数据中,天顶角的计算误差在-0.006~0.01。
五种算法的公共部分
前时间处理部分

Δτ的计算是根据上图用插值法计算的一个线性表达式
\[ \Delta\tau=96.4+0.00158t\\ \]
\[ t=\Delta day=(year_{now}-2060)\times365.2425 \] 参数解释:

根据实际情况,确定了一些参数
参数名称 | 参数符号 | 单位 | 参数值 |
---|---|---|---|
经度 | θ | rad | 1.647765346807846 |
纬度 | φ | rad | 0.699702497124527 |
压强 | P | atm | 0.85862324 |
温度 | T | ℃ | 25 |
在计算过程中,如果月份m<2,那么把月份加12,年份减1,这里的INT是表示向0取整。前处理过程如下:

\[ \omega=0.017202786day^{-1} \]
后角度计算部分






计算时只需要知道经纬度,赤经赤纬,时角就可以了。
第一种算法的误差
算法的计算步骤

算法的实现代码
1 | % 主函数 |
1 | % reportFun1函数 |
1 | % ReadFile函数 |
1 | % Preprocess函数 |
1 | % finalStep函数 |
算法的最终结果

根据文献的第一种算法计算的误差不容乐观,在-0.20.3之间,参考黄冬师兄算的误差,这个扩大了30倍。说明这个算法的精度不是很高,在文献中,这个算法最后也使用了计算数据进行了比较,他给出天顶角的误差范围在-0.190.19,实际计算的比这个范围稍大些,只能说是我们这个数据不够精确或者文献的数据凑得比较好。
第二种算法的误差
算法的计算步骤

算法的实现代码
1 | % 主函数 |
1 | % reportFun2函数 |
其实最大的不同只是reportFun()函数是不一样的,因为这个是算法的核心,主函数也是类似的,写入数据,调用函数,得到输出,最后画一下误差图。
其他的前处理函数,后处理函数都是一模一样的。
算法的最终结果

根据文献的第二种算法计算的误差也是不太OK,而且有个严重的问题。从图上看出来,这个集散的误差范围在-0.20.2之间,参考黄冬师兄算的误差,这个误差其实相对于第一种算法减小的不是很多。而且对比文献,他给出天顶角的误差范围在-0.0340.034,实际计算的比这个范围大了6倍,这个误差还是很大的。
第三种算法的误差
算法的计算步骤

算法的实现代码
1 | % 主函数 |
1 | function [GammaAngle,zAngle] = reportFun3(data) |
算法的最终结果

从图上看出来,这个计算的误差范围在-0.170.17之间。对比文献,他给出天顶角的误差范围在-0.00930.0093,实际计算的比这个范围大了18倍,说明这个差距还是很大的,是有一定问题的。
第四种算法的误差
算法的计算步骤
.png)
.png)
算法的实现代码
1 | % 主函数 |
1 | function [GammaAngle,zAngle] = reportFun4(data) |
算法的最终结果

算法计算的误差在-0.170.17之间。与算法三计算的差不多,文献中写的误差范围是-0.00910.0091,差了17.5倍左右。
第五种算法的误差
算法的计算步骤
使用算法5计算的时候需要给表格中的参数。


.png)
算法的实现代码
1 | % 主函数 |
1 | % reportFun5函数 |
算法的最终结果

图上看误差大概也是-0.170.16,文献的误差范围给的是-0.00250.0027,差距是64倍左右,这个差距是很大的。
分析一下8月7日


看了上面两张图,第一张其实看不出来什么,因为误差相对于测量角度的实际值差了100倍左右,能看出来的只是说一天中太阳天顶角是这么分布的。
第二张图和第一张图结合看其实是能看出来一点东西的,看到其实到了6点左右也是天顶角最小,这也是说明这时候高度角最大,太阳在比较高的地方,这时候计算的误差是小的,在00:00和12:00处误差也较大。

看了上面的三幅图,看到这些计算的结果,可以发现误差的分布也有点稀奇古怪,看不出来是什么类型的分布,因为我觉得数据的总数也不是很大,来计算的点数也不够多。可能这样子反应的规律也不是跟明确。总体上来看,还是误差小的占的比例大,所以可能这也是可以稍微有点欣慰的一件事吧。
总结
几种计算方法的结果


说明
算法 | 文献给的误差范围 | 计算的误差范围 | 相差倍数 |
---|---|---|---|
1 | [-0.19,0.19] | [-0.2,0.3] | 1.05~1.5 |
2 | [-0,034,0.034] | [-0.2,0.2] | 5.8 |
3 | [-0.0093,0.0092] | [-0.17,0.17] | 18.3 |
4 | [-0.0091,0.0093] | [-0.17,0.17] | 18.7 |
5 | [-0.0025,0.0027] | [-0.16,0.16] | 59.3 |
从这个表格中看出,几种计算出来的结果都在只能最高保证在0.16。
参考文献
[1] Roberto Grena Five new algorithms for the computation of sun position from 2010 to 2110 Solar Energy
https://www.sciencedirect.com/science/article/pii/S0038092X12000400