十月九日,周二。秋雨连绵,淅淅沥沥下了一整天,将清华园笼罩在一片湿冷的灰蒙之中。雨水顺着法桐宽大的叶片滑落,在湿漉漉的地面上汇成细流。
上午的《力学》课,教授在讲解“小振动”和“简正模式”,从单摆、耦合摆,引申到连续体的本征振动。抽象的微分方程和矩阵运算,在窗外单调的雨声衬托下,更显晦涩。
许多同学对着黑板上复杂的本征值方程,眼神发直。许源也觉得吃力,尤其是在理解多自由度系统简正坐标的物理意义时,总觉得隔着一层纱。
他看向旁边的徐嘉庆,发现他也微微蹙着眉,笔尖在笔记本上反复划着几个关键的变换步骤,显然也在某个关节上卡住了。
下课后,两人都没急着离开,坐在教室里,就着窗外昏暗的天光,对着笔记和教材继续琢磨。雨水敲打着玻璃窗,发出细密的声响。
教室里人走得差不多了,只剩下他们俩,还有几个同样眉头紧锁、留在座位上苦思冥想的同学。安静中,只有翻书声和笔尖划过纸张的沙沙声。
“这里,”徐嘉庆忽然低声开口,将笔记本推过来,指着他自己画的一个示意图——两个用弹簧连接的质点,标注了位移和坐标变换,“如果引入新的坐标Q1和Q2,分别对应质心运动和相对运动,原来的耦合微分方程就能解耦……”
许源凑过去看,随着他的讲解,那些纠缠在一起的物理量和方程,在新的坐标下逐渐分离,变得清晰可解。
他恍然大悟,原来关键在于找到那组“好”的坐标,将系统的集体运动和内部运动分离出来。他接过笔,在旁边补充了能量表达式的变换,果然,在新的坐标下,系统的动能和势能也呈现出简洁的、不耦合的形式。
“这就是简正坐标的妙处。” 他感叹道。
“嗯,本质是寻找系统内在的对称性和独立运动模式。” 徐嘉庆总结道,目光重新落回自己的笔记,但眉头已经舒展开来。
雨依旧下着,他们收拾好东西,撑开伞,走入雨幕。湿冷的空气扑面而来,但刚才共同解开难题的清明感,让这秋雨也似乎不那么恼人了。去食堂的路上,积水映出昏黄的路灯光晕,他们的身影在湿滑的地面上拉得很长,又因为雨伞的遮挡,时而分开,时而重叠。
下午,《计算物理基础》的课程内容进入了“常微分方程数值解法”。
从简单的欧拉法、改进欧拉法,到更精确的龙格-库塔法。理论讲解后,是上机实践,要求用不同方法数值求解一个描述非线性振子的范德波尔方程,并比较精度和稳定性。编程本身不算复杂,但对算法细节的理解和参数选择要求很高。许源和徐嘉庆坐在相邻的电脑前,各自编写代码。
一开始还算顺利,但当尝试用四阶龙格-库塔法求解,并尝试改变步长和初始条件时,许源的程序出现了数值发散的问题,解很快就变得不合理。他检查了几遍代码逻辑,没发现明显错误。
“可能是步长太大,或者这个方程在某些参数区域本身刚性很强,对算法稳定性要求高。” 徐嘉庆的声音从旁边传来,他探过身,看着许源屏幕上爆炸的曲线。
“我试试减小步长,或者换用隐式方法?” 许源说着,开始修改参数。
“隐式方法编程更复杂。也可以试试自适应步长的龙格-库塔。” 徐嘉庆建议,同时在自己的程序里调整了参数,他的解曲线相对稳定。“或者,检查一下你计算导数那个子函数,有没有可能是浮点数精度问题,或者在某个奇点附近除零了?”
许源依言仔细检查,果然发现在某个特定相位,分母可能趋近于零,而他之前没有做保护性判断。加上一个很小的偏移量后,数值发散问题解决了。两人相视一笑,那是一种程序员之间才懂的、解决了一个棘手bug后的默契与轻松。窗外的雨声似乎也成了这代码世界里和谐的白噪音。
十月十一日,周四。物理实验(一)迎来了“迈克尔逊干涉仪”实验。这个实验光学原理深刻,操作极为精密,对光路调节、仪器读数、环境稳定性的要求都达到了新的高度。实验室里遮光窗帘拉得严严实实,只有仪器上的指示灯和激光器发出的微弱红光提供照明。空气里弥漫着一种小心翼翼的安静。
许源和徐嘉庆按照实验步骤,先进行“等倾干涉”条纹的观察与测量。调节平面镜的倾角,在观察屏上寻找清晰的同心圆环,然后利用微动手轮移动动镜,测量条纹“涌出”或“陷入”的数目,从而计算激光波长。