大三开始,天文班的同学陆续学习各种专业的课程。
天体力学和天体测量方向相关的基础课程包括天体力学基础 —— 应用各种力学规律研究天体的运动和形状,和球面天文 —— 运用数学方法研究投影在天球上的天体的位置及其变化。
天体物理方向,包括理论天体物理 —— 讲述如何用物理的理论方法研究天体的物理性质和过程,以及实测天体物理,也就是如何用具体的观测设备和方法测量并得到天体的颜色、本身亮度、光谱等等信息。
给拉面留下深刻印象,并且在之后的实际应用中觉得特别有用的还有两门课程。天文数据处理,以及,数值计算方法。
天文数据处理
对于天文这样以观测为基础的学科,观测数据的处理和分析至关重要。对于观测到的数据,如何确定其误差,如何消除干扰,以得到尽量真实的数据;对于包含很多数据点的样本,如何分析其在空间或时间上的相关性质和统计趋势;如何用快速傅里叶变换的方法将时域分析转换到频域进行分析,等等。对于不同的天体,个体或者大样本的不同研究,天文数据处理的基本方法都在这门课程中有所提及。
具体的方法之外,给拉面留下最深印象的是关于误差的概念。
天文学中所涉及到的体量巨大的数据,是对天文的各个量的直接或间接的测量得到的。在学习数据处理这门课之前,拉面没有仔细想过,数据,其实不论是天文观测得到的数据,还是生活中其他地方涉及到的统计数据,很多都是有误差的。
任何测量,都是观测者在给定的情况下,运用某种方法,通过特定的仪器进行的。而不同的观测者,不同的情况,不同的方法,以及不同的仪器,都可能导致实际得到的测量值和真实的数据值之间存在偏差。也就是说,测量结果存在不确定性,存在误差。
并且,不同的观测中,这样的偏差也就是误差可能是各不相同的。所以对于任何得到的观测结果以及不同的观测结果,都不能只考虑或者比较观测的平均值或者中间值本身,还应当考虑数据结果的误差,分析数据的可靠程度。如果误差过大,单纯使用数据本身就不能给出有效的结论,没有实际的意义。
比如说,对于星系进行数目的统计,在这样的计数型数据中,由于只能在有限的观测区域中对星系进行计数,观测区域内星系的出现像“随机事件”一样,不可能每次计数都完全相同,会导致统计波动误差。这样的事件往往服从泊松分布,其误差被称为泊松误差。
如果找到了100个星系,这一计数的泊松误差是100开根号,也就是10,计数结果是100 -10,误差的值10相比100的计数值,相对误差是10%。如果能找到更多的星系,比如10000个,其泊松误差是100,计数结果是10000 -100,相对误差是1%。相对误差越小,测量精度越高。这也是为什么对于数目统计而言,总是希望样本更大,数目更多,观测数据的统计稳定性就越高。
天文数据处理的授课老师是一位低调平和的女老师,白羊老师。天文系不乏科研活跃的明星老师,经常能听到他们又做出了什么重要的发现,同学们也会有时讨论系里哪个老师科研很厉害之类的。白羊老师从来没有出现在这些地方。在上这门课之前和之后,拉面都没有听说过关于白羊老师的新闻。但是,在整个大学学习期间,拉面觉得白羊老师是讲课讲得最好的老师。
数据处理的内容其实很枯燥,既没有多彩的图片,也没有精妙的理论,但是拉面觉得白羊老师讲得深入浅出,十分清晰,受益匪浅。“像白羊老师一样,做一位讲课最好的老师。”拉面觉得自己不是对科研成就有多大追求的人,觉得如果自己能在讲课上面做到白羊老师这样,那也是非常了不起的事情。
上这门课的时候,拉面只是隐约感觉这些内容是实用的。等到开始接触科研之后,拉面庆幸当年自己有认真学习这门课程,全是有用的技能。即使是课程中有一些拉面当时不太理解的部分,至少在后来遇到这种类型的数据的时候,拉面是知道个大概的,可以再去有的放矢地查找具体的方法,进一步学习并且应用起来。
数值计算方法
数值计算方法是另一门非常实用的课程,针对某些无法解析得到精确解的问题,通过设计和分析特定的计算的方式,得到近似的但一定程度上足够精确的结果。比如,将连续模型的问题转换为离散形式的问题,用离散形式的解来近似原本连续模型的解,或者从一个初始估计值出发通过迭代,收敛得到精确解的近似值,等等。
天文系的这门课程针对天文中主要会用到的数值计算方法进行学习和联系。
在课程末尾,老师安排大家完成一个课程实践内容:利用龙格-库塔法计算三体问题。
两个有质量的物体,两个质点之间受万有引力的作用,它们的轨道是可以精确计算的。也就是说,二体问题的运动方程是可以严格求解的。孤立的双星系统,行星及其一颗卫星的运动,都是二体问题。在太阳系中,太阳的质量占太阳系总质量接近99%,是太阳系的中心天体,其他小天体都绕它运动。每一颗行星,包括地球,和太阳之间都近似形成一个二体系统,而其他行星和天体对这颗行星的引力只会对这颗行星产生叠加在其上的微小的影响。
实际上,当二体系统中增加一个物体,增加第三个质点的时候,就出现了三体问题。三体问题,三个有质量的点,给定初始位置和初始速度,在相互之间万有引力的作用下运动,它们的运动规律和二体问题不一样,是无法精确求解的。当初始的位置和速度发生微小改变的时候,后续的运动轨道有可能会天差地别,所以对于三体问题,是无法从数学上预测三体运动的所有情况的。
因为三体问题不能严格求解,在研究天体的运动时,通常根据情况采用各种近似的解法。其中的一种方法就是数值计算方法,对于给定的初始位置和速度,考虑三个天体之间的万有引力,直接根据微分方程计算得出天体在给定时刻的具体位置以及速度。而龙格-库塔法,是数值计算方法这门课程的实践内容里老师给出的具体方法,是对运动轨道积分方程进行近似求解的一种数值方法。
同学们要完成的任务,是对于给定质量的三个天体,设定它们的初始位置和初始速度,基于龙格-库塔法写出程序,并应用程序来计算后续时间里天体的运动轨迹。在跑通整个程序之后,同学们还需要对初始位置和速度进行改变,看看这些改变会给这些天体的运动轨迹带来怎样的影响。
虽然拉面他们学过编程,这还是第一次将学到的技能应用于一个具体的问题,并且需要编写的代码也比编程课上的一段段练习小程序要长不少。经过一段时间,大家通过尝试和讨论,不断查找和修正错误,对各自的结果进行对比,最终都完成了自己的程序。拉面试着改变初始条件。果然,只是初始条件的微小改变,天体后续的运动轨迹就会完全不同,表现出混沌的状态。
这样的一个课程实践练习,不仅让拉面更直观地了解到三体问题的本质,更重要的,给了拉面一个很好的编程解决具体问题的初步练习,帮助拉面和同学们一起迈出了关键的一步。
如何针对科学问题计划和编写程序并解决问题,拉面在后来的科研工作中没有遇到太大的麻烦。拉面回想,除了计算机语言的相关课程的学习,自己绝对是受益于这次课程当中的这个小练习的。
点击弹出菜单