你好,这是本兔的第
121
篇推
送
。
2019年6月上线,2020年8月更新过一次。本以为在新的校正曲线出来之前,本程序是暂时不会更新的。
不想人算不如天算,
垂死病中惊坐起
:
早在半年前,就收到热心群众的反馈,在校正某一个数据的时候出现问题:
程序的原本设定是,如果校正的数据超过曲线的年代上或下限,我就让它显示“
超出年代范围
”。但是这个6540明显地处于任何一条校正曲线的校正范围之内,就有点
不河狸
了。后台对于“超出年代范围”的判定的条件是我自己写的,要求校正后日历年代在1sigma范围内的第一个年代区间的实际概率为0,换句话说就是校正程序
什么都没算出来
的时候。
至于6540±100这个看上去这么正常的数据它为什么算不出来,当时没仔细想,只是顺手给了两个解决的方法:
把碳十四年代稍微改一下,或者把误差稍微改一下:
忽略其中CalBP和CalBC的差别,其实这两个结果还是比较接近的,毕竟
本来就
±100了,稍微早那么10年
也不会影响大局。所以尊敬的用户,如果后续遇到类似的问题(希望不要),在我解决掉之前也可以采取类似的处理方式。
不过半年去了,我的良心
(这个真的有)
仍然不能让我放任这个问题,恰好最近比较闲,就翻出这个问题打算解决一下。正如之前在第一个版本发布的时候就说过,这个微信小程序其实是我从自己写过的MATLAB程序
强行翻译
过来的,但是因为两种语言毕竟不太一样,所以翻译的过程中也做过相当多的调整。查bug当然要先去检查一下源头,结果发现这组输入在MATLAB上运行并没有障碍。
原本的程序能运行,说明问题应该不大,计算上没有错误(这个有问题可能就出大事了),只能是微信小程序里的问题了。当我打开那个安装至今用过三次的微信开发者工具时,我承认我已经看不懂自己两年前写的那些劳什子了。之前看到一个段子,说程序猿最痛恨的事情有两件:
写注释
,和
别人不写注释
。虽然我不是程序猿,但是现在我恨极了当年那个不写注释的自己。于是我就稀里糊涂地
改了一个参数
,然后等它报错,结果突然它就运行了,算出来结果和上面MATLAB还比较接近。
我大概是有史以来是最坦诚的程序开发者了……不盈利就是这么耿直。真的说不太清楚改了个什么玩意儿,总之现在算是在表面上解决了问题。我目前的猜测是微信的
运算精度
和MATLAB不一样,但是我没有确凿的证据。
至
于这么一个小参数
有没有把别的地方改坏,还是
用前面那两个替代的
6550
±
100和
6540±
99来验证一下吧。
看上去确实是一模一样的。
此外,这个小小的程序总共1M多,有一大半空间都是为了存校正曲线,
于是在新版本中删掉了较为古早、如今已经不常用的的IntCal04
。
总之,这是一个比较简单的更新,
解决了一个比较小的问题
,
删了一条比较不常用的曲线
。
欢迎继续向我报错,给我多看几次自己写过的代码的机会。毕竟两年不看就忘得差不多了。
最后……有人问校正数据发表的时候怎么引用,真把我问住了,总不能引用微信公众平台吧?虽然微信小程序和MATLAB的代码我都在GitHub上传过一份,但是后续的更新并没有同步。再次澄清一下,这个程序是本兔跟那个只在Firefox上运行的老OxCal闹情绪的时候写着玩的,就是为了大家手头方便,在田野或者看文章的时候参考用。
正式发表建议还是用OxCal吧
。最新版的OxCal很好用,我已经跟它和解了,使用指南见下面第二篇推荐阅读。