马上注册并关注水世界微信号,获得更多资料
您需要 登录 才可以下载或查看,没有帐号?注册
扫一扫,用微信登录
x
上篇文章提到了网格的分辨率。显然,网格分别率越精细,所得到的流动参数的结果越精细,在不考虑计算资源和时间等成本限制的情况下,是不是网格越精细越好呢? 事实上并不是如此!!! 抛开计算资源和计算时间等成本因素,网格数量的增大会导致另一个变量的增大,那就是误差。 所谓误差,也就是模型结算结果与实际值的偏差,显然误差越小就表明模型越可信,而我们进行的率定、验证等一系列工作,无非就是为了让模型更可信。对于数值计算的误差,一共分为4种:模型误差、观测误差、截断误差、舍入误差。 ● 模型误差 以前的文章也讨论过,使用数值计算方法模拟实际问题时,首先必须建立数学模型,而由于实际问题的复杂性,在对实际问题进行抽象与简化时,往往为了抓住主要因素而人为的忽略次要因素。这样就会使建立起来的数学模型只是复杂客观现象的一种近似描述,它与实际问题之间总会存在一定的误差。这种数学模型与实际问题之间出现的误差即模型误差。 模型误差在我们选用模型的时候就已经确定了,对于模型的使用者来说无需关心。(事实上,仅对于模型使用者,是没有能力也没有必要去改善它) 例如,描述地球上某一个质点自由下落时的规律,其数学模型表达式: 上述模型忽略了空气阻力等因素,如果用f(t)表示真正的运动规律,模拟模型误差为: ● 观测误差 在数学模型中往往包含一些由观测或实验得来的物理量,由于工具精度和测量手段的限制,他们与实际大小之间必然存在误差。比如对于3EWATER往往需要输入底部粗糙系数、涡流粘性系数、涡流扩散系数等,这些是需要用户根据实际情况确定的。 虽然会有误差,不同通过率定过程,即可将误差控制在可接受范围内。 ● 截断误差 即便是对实际问题进行抽象和简化,由此得出的数学模型在很多情况下要得到准确解是困难的(模型方程大都为非线性,目前还无法求出其解析解),通常要用数值方法求出它的近似解。常用有限的过程逼近无线过程,用能计算的问题代替不能计算的问题。这种模型的精确解与由数值方法求出的近似解之间的误差称为截断误差,由于截断误差是数值方法固有的,故又称为方法误差。 例如,指数函数ex的Taylor展开式: 利用上式可计算积分: 显然积分的准确值必须通过无穷步计算得到。而实际上我们只能截取有限项的代数和来获得近似值。若取前3项之和作为近似值,则有: 这里所产生的截断误差: 最后重点来了!!! ● 舍入误差 在数值计算过程中遇到的数据可能位数很多,也可能是无穷小数,如√2、⅓、π等,但计算时只能对有限位数进行运算(32位操作系统和64位操作系统有效数字位数不同),因而往往要进行四舍五入,这样产生的误差成为舍入误差。 少量的舍入误差是微不足道的,但是在计算机完成了千百万次运算之后,舍入误差的积累可能是十分惊人的。 现在问题来了,计算机对模型的计算实质上就是在每个网格上对模型方程进行求解,网格越多,求解的次数也就越多(这也就是为什么网格越多计算时间越长),对应的舍入误差也就可能越大。 也就是说,很可能你画了很多的网格,花了大量的资源进行计算,得到的结果反而误差更大,吃力不讨好。 注意:上述讨论的网格增多导致误差增大用的字眼都是“可能”,因为计算机每一次计算产生的舍入误差既可能是“四舍”也可能“五入”,“舍”和“入”如果带来的误差相互抵消的话,总的舍入误差也不会变大。 |