今天试图整理前几周的工作,实际上从周一就开始整理了,迟迟没有完成。。。大概可以归咎于数值计算对于输入的不同模型难以做到universal的调参,而我希望得到的是一个对于不同模型都较为普适的程序,并且尽量封装在一个程序内,事实证明这么做所需克服的困难已经接近了入不敷出的地步。
我的原始思路是在制作一个以EoS和TOV初值条件为输入,输出TOV解的求解器的基础上,输出Mass-radius, Pressure-radius, Density-radius图像,SpacetimeStructure-radius图像,TotalMass-MaxRadius-initialcondition图像,最后进行不同EoS的对比。最终期望是整个程序所需输入的参数只有EoS数据和初值条件。。。
面临的问题:如果需要大到输入参数尽量少的期望,就必须减少引入中间变量,这导致的问题是每一个新函数几乎都需要嵌套旧函数。这一方面意味着,即时程序能够正常运行,最后引入的函数(最终所需的输出结果)运行时需要将前面的函数悉数运行一遍,运行时间非常长,且MMA的全局变量和局部变量结构非常奇怪,程序变得冗长无比;另一方面,由于NDSolve返回一个规则,导致嵌套可能带来各种各样的问题,有时根本运行不起来;最后,函数的嵌套大大增加了debug和调参时的工作量,且及其影响心情。
实际上这些问题但凡多引入几个中间变量都能迎刃而解,对简洁的追求最终却让程序臃肿不堪,预期节约的时间被尽数索回,可以说是非常的惨。
删了订阅号之后很久没有码字,见谅见谅。