专栏名称: 兔十四
这是一只企图学术但是无法严肃的兔子。
目录
相关文章推荐
51好读  ›  专栏  ›  兔十四

更新:兔十四树轮校正小程序1.3.0版本

兔十四  · 公众号  ·  · 2021-06-24 16:25

正文

请到「今天看啥」查看全文


你好,这是本兔的第 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很好用,我已经跟它和解了,使用指南见下面第二篇推荐阅读。


推荐阅读

兔十四树轮校正小程序上线了

IntCal20来了,还是解释一下再上车吧
碳十四测年不准确吗?
我们应如何理解一个年代







请到「今天看啥」查看全文