苏联撤专?我反手掏出人工智能! 第221节
“我拿来拌白菜丝,再滴两滴醋,夏天吃着解腻。”
陈序年蹲在灶台边帮她拉风箱,火苗烧着铁锅底,屋里的温度一点一点涨上来。
“晚秋。”
“干嘛?”
“那块自留地,菜苗出来了没有?”
“出了一半。”
林晚秋把切好的白菜丝倒进大碗里,从罐子里挖了一小勺麻酱拌匀。
“小白菜出的整齐,水萝卜还没冒头,我下午经过后头看了一眼,土有点干,明天得浇点水。”
“明天我早起浇。”
“你别早起了,你每天晚上都要熬到后半夜,早上能多睡一会儿是一会儿,我顺路就浇了,不耽误事。”
两人坐在小方桌前吃晚饭,窝头蘸着麻酱白菜丝,嚼在嘴里又咸又香,陈序年把碗里的饭扒的干干净净,林晚秋从他碗里捞走了最后一根萝卜条。
饭后,林晚秋去外面的水池子洗碗。
陈序年坐在书桌前,拉开抽屉拿出一本空白的硬皮笔记本。
梁启明编程需要三周,这三周他自己也不能闲着。
降维的数学框架已经给了梁启明,隐式格式也讲清楚了,但具体到编程细节,有几个关键的数值处理技巧,梁启明未必能自己摸到。
首先是定点数的标度因子,这台机器做十六位定点运算,没有浮点硬件支持,辐射流体力学里涉及的物理量跨度极大,温度从几千度到几千万度,压力从一个大气压到几十亿个大气压。
所有的实数运算都要靠手工转换成定点数完成,每一步运算都必须追踪小数点在哪个位置上,一旦溢出,后面所有的计算结果全是废数据,整段纸带等于白跑。
梁启明学数学出身,推公式、列方程的功底扎实,但他之前没有碰过计算机编程。
定点数运算里这些溢出的陷井,他不栽一跤记不住,陈序年清楚这一点,所以提前把陷阱标出来。
另一个难点是矩阵方程的迭代求解子程序,六百个网格点耦合在一起,每走一步时间推进,就要解一组六百阶的稀疏线性方程组。
如果用直接法,存储量远远超过4096字的内存容量,根本装不下,只能走迭代法,而迭代法能不能收敛、收敛的快慢,取决于初始猜测值和松弛因子怎么选。
这两个参数的取值跟物理问题本身的性质绑在一起,没有通用的万能公式,得根据具体算例去调。
陈序年在笔记本上一条一条列清单,把梁启明可能踩的坑写下来,每个坑旁边标注了提示方向。
他不打算直接把答案写在纸上递过去,但会在梁启明卡住的时候给他指一条路。
林晚秋洗完碗走进来的时候,他已经写了三页。
“又在写东西?”
林晚秋把碗筷码进柜子,走到桌边看了一眼,纸上全是她看不懂的数字和符号。
“给梁组长准备的参考资料。”
陈序年合上笔记本。
“你们那个梁组长是不是天天熬通宵?昨天他来医务室拿止痛片,黑眼圈都挂下来了。”
“搞计算的都这样。”
“你也这样。”
林晚秋拉开衣柜,取出一件洗好的白大褂挂在门后。
“我看你这个月瘦了不止五斤,锁骨都凸出来了。”
“等这阵子忙完就好了。”
“你每回都说等忙完就好了。”
林晚秋在床沿上坐下,脱了鞋,把脚缩进被窝里。
“从我认识你到现在,你什么时候闲过?”
陈序年放下笔,转过身看着她。
“等这台机器跑出结果来,就能松一口气了。”
“多久?”
“快的话一个月,慢的话两个月。”
林晚秋没说话,她低头把被角往里掖了掖,好一会儿才开口。
“那我把后头那块地的水萝卜种子再补点,等萝卜出来了,正好赶上你忙完,到时候我给你做萝卜炖粉条。”
陈序年笑了一下。
“行,等着吃你的萝卜炖粉条。”
“快写吧,别耽误了,我先睡了。”
林晚秋往里挪了挪,给他留出了半边床的位置。
陈序年转回身,继续写,屋里安静下来,只剩笔尖在纸上划过的声音,和林晚秋慢慢变匀的呼吸。
写到第五页,他停笔,从头把内容检查了一遍。
页面上没有任何来源可疑的数据,写的全是数学方法层面的技巧提示。
就算被钱忠国拿去翻看,也只会觉得这是一个在数值计算领域有积累的人整理出来的工作笔记,挑不出毛病。
他合上笔记本锁进抽屉,关了灯上床。
林晚秋已经睡着了,他掀开被角躺进去,她哼了一声,翻了个身,额头抵在他肩膀上。
明天开始,梁启明就要动手写那一千二百条机器指令了。
……
梁启明动手的比预想的还快。
第二天早上七点,陈序年经过主楼二楼计算室的时候,梁启明已经趴在桌上了。
桌面摊着三大张硫酸纸,画满了程序流程图,每一条分支、每一个判断框都标了编号和说明。
小周和老李一人守着一台手摇计算机,对照纸上的离散格式做手算验证。
“昨晚几点睡的?”
陈序年在门口站了一下。
梁启明头也不抬。
“没睡,方程组的离散格式全推完了,一共十七个子程序,我在流程图上标了编号,你看看有没有逻辑漏洞。”
陈序年走到桌前,拿起最大的那张硫酸纸。
流程图画的很清楚,主程序搁在最上面,往下分出十七条分支,每条分支旁边都标了子程序名称和功能说明。
主循环的结构跟他预想的一致,外层循环走时间步,内层循环走空间网格。
每一步先查状态方程表算温度和压力,再算辐射输运系数,最后把隐式格式的线性方程组组装好送进迭代求解子程序。
时间步长的自适应控制单独拎出来做了一个子程序,根据物理量变化的梯度来自动调步长。
陈序年的目光在第十一个子程序上停住了,旁边标注写的是稀疏矩阵迭代求解。
“这个子程序你打算用什么迭代方法?”
梁启明停下笔,转过身来。
“雅可比迭代,最简单,编程容易。”
“雅可比收敛慢。”
陈序年把硫酸纸放回桌上。
“六百阶的稀疏矩阵,雅可比迭代一步要扫全部网格点一遍,收敛到要求精度至少得迭代几百次,每一步时间推进都要迭代几百次,八百步下来,光迭代就得跑几十万次。”
梁启明皱起眉头。
“那换高斯-赛德尔?收敛快一倍。”
“高斯-赛德尔好一些,但还不够。”
陈序年从口袋里摸出那本硬皮笔记本,翻到昨晚写的第三页。
“你看看这个,逐次超松弛法,在高斯-赛德尔的基础上加一个松弛因子,理论上能把收敛速度再提高三到五倍。”
梁启明接过笔记本,看了半分钟,眼神一下亮了。
“松弛因子……这个值怎么取?”
“跟矩阵的谱半径有关,我在第四页写了一个估算公式,你可以先用理论值,跑起来之后根据实际收敛速度微调。”
梁启明翻到第四页,盯着公式看了一阵子,然后抬起头。
“陈工,你这些东西是从哪本书上看来的?”
“翻过一些外文资料。”
陈序年把笔记本收回来。
“方法不重要,重要的是你把它编进程序里跑通,跑不通的话,再好的方法也是废纸。”
梁启明点了一下头,转过身继续画流程图。
上一篇:在自由美利坚冒充气功大师
下一篇:开局召唤康娜,你告我雇佣童工?
