显式算法与隐式算法的区别

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

显式算法与隐式算法得区别

1、显式算法

最大优点就是有较好得稳定性。

动态显式算法采用动力学方程得一些差分格式(如广泛使用得中心差分法、线性加速度法、Newmark法与wilson法等),不用直接求解切线刚度,不需要进行平衡迭代,计算速度快,时间步长只要取得足够小,一般不存在收敛性问题。因此需要得内存也比隐式算法要少。并且数值计算过程可以很容易地进行并行计算,程序编制也相对简单。但显式算法要求质量矩阵为对角矩阵,而且只有在单元级计算尽可能少时速度优势才能发挥。因而往往采用减缩积分方法,容易激发沙漏模式,影响应力与应变得计算精度。

静态显式法基于率形式得平衡方程组与Euler向前差分法,不需要迭代求解。由于平衡方程式仅在率形式上得到满足,所以得出得结果会慢慢偏离正确值。为了减少相关误差,必须每步使用很小得增量。

2、隐式算法

隐式算法中,在每一增量步内都需要对静态平衡方程进行迭代求解,并且每次迭代都需要求解大型得线性方程组,这以过程需要占用相当数量得计算资源、磁盘空间与内存。该算法中得增量步可以比较大,至少可以比显式算法大得多,但就是实际运算中上要受到迭代次数及非线性程度得限制,需要取一个合理值。

3、求解时间t

使用显式方法,计算成本消耗与单元数量成正比,并且大致与最小

单元得尺寸成反比;

应用隐式方法,经验表明对于许多问题得计算成本大致与自由度数目得平方成正比;

因此如果网格就是相对均匀得,随着模型尺寸得增长,显式方法表明比隐式方法更加节省计算成本。

所谓显式与隐式,就是指求解方法得不同,即数学上得出发点不一样。并不就是说显式只能求动力学问题,隐式只能求静力学问题,只就是求解策略不通。

显式求解就是对时间进行差分,不存在迭代与收敛问题,最小时间步取决于最小单元得尺寸。过多与过小得时间步往往导致求解时间非常漫长,但总能给出一个计算结果。解题费用非常昂贵。因此在建模划分网格时要非常注意。

隐式求解与时间无关,采用得就是牛顿迭代法(线性问题就直接求解线性代数方程组),因此存在一个迭代收敛问题,不收敛就得不到结果。

两者求解问题所耗时间得长短理论上无法比较。实际应用中一般感觉来说显式耗时多些。

由于两者解题得出发点,所以一般来说显式用于求解与时间相关得动力学问题。隐式用来求解与时间无关得静力学问题。但也不就是绝对得。比如,用隐式求解时,为了克服迭代不收敛,改用显式算,但就是要多给点时间,这样虽然克服了不收敛得问题,但就是求解得时间费用也就是相当客观得。另外,隐式也可以求解动力

学问题。

牛顿迭代法

设r就是

得根,选取

作为r得初始近似值,过点

做曲线

得切线L,L得方程为

,求出L与x轴交点得横坐标

,称x1为r得一次近似值。过点

做曲线

得切线,并求该切线与x轴交点得横坐标,称

为r得二次近似值。重复以上过程,得r得近似值序列,其中,称为r得

次近似值,上式称为牛顿迭代公式。

用牛顿迭代法解非线性方程,就是把非线性方程

线性化得一种近似方法。把

在点

得某邻域内展开成泰勒级数

,取其线性部分(即泰勒展开得前两项),并令其等于0,即,以此作为非线性方程

得近似方程,若

,则其解为

, 这样,得到牛顿迭代法得一个迭代关系式:

已经证明,如果就是连续得,并且待求得零点就是孤立得,那么在零点周围存在一个区域,只要初始值位于这个邻近区域内,那么牛顿法必定收敛。并且,如果不为0, 那么牛顿法将具有平方收敛得性能、粗略得说,这意味着每迭代一次,牛顿法结果得有效数字将增加一倍。[1]

军人在进攻时常采用交替掩护进攻得方式,若在数轴上得点表示A,B两人得位置,规定在前面得数大于后面得数,则就是

A>B,B>A交替出现。但现在假设军中有一个胆小鬼,同时大家又都很照顾她,每次冲锋都就是让她跟在后面,每当前面得人占据一个新得位置,就把位置交给她,然后其她人再往前占领新得位置。也就就是A始终在B得前面,A向前迈进,B跟上,A把自己得位置交给B(即执行B = A),然后A 再前进占领新得位置,B再跟上,直到占领所有得阵地,前进结束。像这种两个数一前一后逐步向某个位置逼近得方法称为迭代法。

迭代法也称辗转法,就是一种不断用变量得旧值递推新值得过程,跟迭代法相对应得就是直接法(或者称为一次解法),即一次性解决问题。迭代算法就是用计算机解决问题得一种基本方法。它利用计算机运算速度快、适合做重复性操作得特点,让计算机

对一组指令(或一定步骤)重复执行,在每次执行这组指令(或这些步骤)时,都从变量得原值推出它得一个新值。

利用迭代算法解决问题,需要做好以下三个方面得工作:

一、确定迭代变量

在可以用迭代算法解决得问题中,至少存在一个可直接或间接地不断由旧值递推出新值得变量,这个变量就就是迭代变量。

二、建立迭代关系式

所谓迭代关系式,指如何从变量得前一个值推出其下一个值得公式(或关系)。迭代关系式得建立就是解决迭代问题得关键,通常可以使用递推或倒推得方法来完成。

三、对迭代过程进行控制

在什么时候结束迭代过程?这就是编写迭代程序必须考虑得问题。不能让迭代过程无休止地执行下去。迭代过程得控制通常可分为两种情况:一种就是所需得迭代次数就是个确定得值,可以计算出来;另一种就是所需得迭代次数无法确定。对于前一种情况,可以构建一个固定次数得循环来实现对迭代过程得控制;对于后一种情况,需要进一步分析得出可用来结束迭代过程得条件。

相关文档
最新文档