误差| 2.不要把低级错误假装成高级错误
Paul Klee, cat and bird
有一天,某人神色慌张地对我说,“陆姐,出事了,刚刚别人送来的数据,比我算的小了很多,我现在就去检查算法,把这个误差搞清楚”。我一把拦住他。
我说:“等会,到底差了多少?”
他说:“好像差了上百倍”
我说:“不可能,到底差了多少?”
他说:“差了大概五十多倍”
我说:“不用去了,是不是你的角度单位是度,别人是弧度?”第二天,双方核实,确实因为角度单位的度和弧度的不同,带来了57倍的差别。这和算法有什么关系?1000倍误差:
他说:“这个软件不适合算这种问题,用其他的软件就没有这个错误。”
800倍误差:
他说:“果然水里和空气里的流动不一样,阻力系数差了800倍。”
57倍误差:
他说:“算法可能不够准确,换个公式。”
2倍误差:
他说:“湍流模型太简单,不能准确计算流动摩擦。”
我不明白,怎么会有人相信,软件、算法、模型能带来几倍到千倍的误差。无论数据错得多么离谱,他也敢声称是因为算法不够精准。其实,不同级别的错误导致不同级别的误差。往往低级错误带来的巨大误差,才会导致我们死得很惨。软件、算法、模型这种高级错误反而带来的误差最小,很多时候都可以忽略。1. 最低级的错误
搞错了数据单位,搞错了尺寸、搞错了形状、搞错了状态。
2. 低级错误
仿真的边界条件与实际的边界不一样。
需要很密集网格的地方几乎没画网格。
3. 中级错误
使用了不合适的算法和模型。
用二维流动替换三维流动。
没有搞明白是层流还是湍流。
4. 高级错误
算法、模型不够精准。
我看过无数的算例,包括我自己的算例,每次出错,都是低级错误,难得见到谁有机会犯下高级错误。实际上,我们只要消灭低级错误,基本解决中层错误,把误差降低到10%的量级,对于工程设计已经够用了。我们常见,很多人勤勤恳恳地在低级错误中打转,拿出来的数据误差大得不能用。但是,谁愿意承认,误差大是因为他粗心搞错了尺寸,糊里糊涂设置错了边界。于是,他推出算法、模型这些只会带来1%量级误差的高级错误,替他背几倍误差的黑锅。数据错了,是因为这些高级错误还没有解决。他可以理直气壮地怪企业没有加大投入打基础,怪国家落后,怪上帝为难人类。他除了命不好,没有其他责任。重复得多了,这还成了不能反驳的道理。时间长了,大家还形成了默契。这成了一层谁也不敢触碰的面纱,让多少低级错误,躲在背后窃笑。希望你敢于打破这层面纱,面对让我们难堪的现实。去扫清这些低级错误,认真核对每一个数据,深入分析每一种现象,反复检查每一个设置。用你所有的精力,去消灭你有能力消灭的错误,获取虽不精准但是可靠的数据。
误 差
相关文章,在仿真秀官网搜索:
1. 与误差斗争一辈子,不如学会包容误差