也谈仿真与力学
2016年03月13日 杂谈 力学 科技 仿真 思 添加评论昨天乙寅发了一篇关于仿真的文章,文章写得很好,从字里行间不难看出他深厚的理论功底。对于现在仿真界的情况,乙寅的描述我是赞同的,不过我更倾向于认为仿真界的情况是鱼龙混杂的。究其原因,乙寅讲得非常到位:
仿真的定量结果取决于大量的无法获知的输入参数。越是复杂的问题自由度越高。大家只是在调整仿真结果已符合实际,而不是根据仿真结果确定实际。当然在一次调整过程中得到的经验又可以投入下一次仿真,每次仿真也并非全无凭据。
仿真像一个计算机程序,给个输入就有输出,但是仿真不是“Garbage in Garbage out”(垃圾进垃圾出),仿真是“Not garbage in still maybe garbage out“。将仿真简单的理解为计算机程序本身就是极端错误的。仿真不是计算机科学,不是一个已经抽象完毕的数学问题,不是一个固定的可执行文件就能完成的工作。对于物体力学问题的仿真是力学的一部分,而力学是建立在对于现实世界的理解和建模之上,而仿真仅仅是一个求解力学模型的强有力手段(这一点我还是比较积极看好的)。再好的数学上的结果,如果不能够反映到对现实世界的现象解释和预测上,在力学上都是”不正确的“。正是因为拥有了强有力的计算工具,仿真模型是对于实际问题的抽象是正确的、是可行的、是合理的成为仿真成功的最关键因素之一。这里不提是准确的是因为大部分仿真模型是不准确的,基于对于问题的理解大多数时候对于模型的简化不但可以减少模型的复杂度,而且可以提高结果的稳定性和准确度。过于复杂和“精细”的建模带来的是大量的未知参数,而不是计算的准确性。我不认为一个拥有更多自由度和复杂性的模型就一定能得出更好的结果,而且实际上很多时候简化的模型得出的结果往往更好,也更具有启发性。我想这也是为什么乙寅还会强调解析解和半解析解的重要原因吧,那些理论不应该过时。这也就是为什么即使输入无误,仿真同样可以给你完全没有关系的结果;同样地,即使输出看起来很正确,如果其背后的物理解释不正确,这样的仿真也一样是错误的。通用有限元软件确实一方面简化了仿真的难度,另一方面也导致了大量的”错误“的计算结果(我相信在这个错误和有限元软件应该关系不大,绝大部分都是模型的错误和参数的不当选取造成的),正如乙寅提到:
软件的使用门槛实在过低,任何不懂应力应变位移和本构协调平衡的人都可以自豪地从事力学分析。从此泥沙俱下,再不能正本清源。这对于技术的进步和普及无疑是好事,但对于一门深具传统的、矜持自赏的学科,只是雪上加霜。
然而,与乙寅对于仿真的态度相比,我对仿真的看法可能更加积极一些。第一,仿真确实可以解决大量的经典力学理论无力获得解析解、半解析解、近似解的问题。第二,仿真如果拥有正确的模型,确实可以获得有启发性的结果,参数研究无疑可以提供无解析解情况下问题变化趋势的有用信息。第三,仿真提供了分析力学理论正确性的快速手段。一些精美的力学模型获得的解析解是级数解或者无法求解,但是通过仿真手段可以获得其准确的数值解。我不愿意否定仿真作为力学新的更高的起点的作用,但是对于仿真现状中不注意力学模型的研究和探讨的风气倒是并不赞同。仿真是一把利剑,一方面极大地降低了求解力学模型的难度,另一方面却导致了大量错误结果的出现。我并不觉得错在仿真,而是使用仿真的人。对于从业人员,我希望能够多一分研究和思考,少一分算通就行的想法(不是说模型足够像就是好的模型)。
但是,反过来说,对于崇拜“公式”的风气我也一样不支持。有些研究工作不是基于对于问题的力学建模,然后使用仿真作为求解手段,而是本末倒置地将仿真结果作为真实结果,再进行曲线拟合获得一堆“公式”。我认为这是历史的退步,或者是没有跟上时代潮流的现象。过往的时代,可能拟合的公式可以免去附上冗繁的数据表,但是现在直接传输基于这些仿真结果的插值程序的难度几乎零,一个数万点的仿真结果,仅需数秒就能任意传递。既然是基于仿真结果,就没有必要再去使用拟合方法为“准确”的仿真结果增加误差。这是一个逻辑悖论问题,如果认为拟合解的物理意义更清楚,而仿真解却不能准确的反映这一物理意义,那么仿真解本身的准确性就是个大的疑问,毕竟同样的力学理论仿真解理论上讲可以以任意精度逼近真实解;如果认为拟合解本身就不准确,那么为什么还要用准确的结果去引入误差来迎合那个错误的解呢?关于这个一种可能实现在Mathematica中是存在的,我稍后在行板块中介绍一下这项技术。