首页>总结报告>欧拉法总结(7篇)

欧拉法总结(7篇)

时间:2024-03-31 10:42:01 总结报告

欧拉法总结 第1篇

在数值求解常微分方程的过程中,我们希望得到一个与真实解足够接近的数值解。一般来说,我们认为一个数值方法的精度与其阶数有关。p阶方法是指一种数值方法,它在每个步骤中的误差与步长$h$的p次方成正比,也就是说,它的全局误差与步长$h^{p+1}$成正比。

具体来说,假设我们使用一个p阶方法来求解方程$y'=f(t,y)$,在第$i$个步骤中,我们使用这个方法计算得到数值解$y_{i}$,真实解为$y(t_i)$。那么这个方法在当前步骤中的局部截断误差为$LTE_i = O(h^{p+1})$。因此,该方法在整个时间区间上的全局误差为$O(h^p)$,即:

其中,$n$表示最终时间点。

通常来说,p阶方法的计算量比低阶方法要大,但是可以得到更高精度的数值解。如果我们需要更高精度的数值解,可以考虑使用更高阶的数值方法。在实际应用中,我们需要在计算量和精度之间进行权衡,并选择合适的数值方法。

欧拉法总结 第2篇

欧拉方法的实现比较简单,只需要按照上述公式进行迭代即可。具体来说,我们可以按照以下步骤实现欧拉方法:

1. 设定初始条件y0和步长h; 2. 根据欧拉方法公式,计算y1; 3. 重复步骤2,直到求解出所需的数值解。

以下是分别用MATLAB、Python、C++和R语言实现数值分析中的欧拉方法的示例代码:

MATLAB代码:

Python代码:

C++代码:

R语言代码:

欧拉法总结 第3篇

这里给出一些上面提到的几个数值方法的重点、难点和易错点的总结:

欧拉方法:

改进欧拉方法:

在实际问题中,选择数值方法时需要根据需要考虑精度、计算量、稳定性等因素,同时需要注意选择合适的步长和参数。对于每个方法的具体实现,需要认真理解其公式和算法,并进行逐步调试,避免出现错误。

欧拉法总结 第4篇

我们使用当前点的斜率计算下一个点时,如果在这个小区间内,斜率的变化很大,那这种近似就会由较大偏差,需要更小的步长才能提高精度。如果我们将两个端点的斜率修正当前点的斜率,是不是就会好一些

如下图所示,红色曲线y'=\frac{y}{2x}的原函数图像,我们从初始值O点开始迭代,单次迭代,我们就到达A,再此迭代可以到达B。如果我们将斜率修正为两者平均,就可以得到单次迭代到达C点,它将离曲线更近。

上图的代码

即修正后在步长为h下的迭代公式变成

\begin{aligned} x_{n+1} &= x_n + h\\ y_{n+1} &= y_n + h\left(\frac{A_n+B_n}{2}\right)\\ \widetilde{y_{n+1}} &= y_n + hA_n\\ B_n &= f(x_{n + 1}, \widetilde{y_{n+1}}) \end{aligned} \\

可以证明它是一个二阶方法,证明这里就略过了。

这个方法有很多的名字:Heun’s method, Improved Euler method, Modified Euler method, RK2 (这个RK是龙格库塔,2的意思是这是一个二阶的方法e\sim ch^2)

欧拉法总结 第5篇

图:物质点法示意图(a)材料区域;(b)质点代表区域;(c)物质点法离散

图:MPM与SPH计算效率比较

上图比较了LS-DYNA的SPH模块和xxx课题组研发的冲击爆炸三维物质点法数值仿真软件MPM3D在计算方块平动时每个时间步所需的CPU时间和质点总数之间的关系,可见LS-DYNA的SPH模块的计算量随着质点总数的增加速率远高于MPM3D。在32位个人计算机上,LS-DYNA的SPH模块当质点总数超过106万时崩溃,而MPM3D单机可以求解的质点总数可达350多万。比较了由LS-DYNA的并SPH模块和MPM3D得到的Taylor杆碰撞问题的最终构形俯视图,SPH结果中出现了多处数值断裂和不稳定现象。

图:MPM与SPH求解Taylor杆冲击的比较

物质点法最初采用显式积分,适合于分析冲击爆炸等载荷作用时间短的瞬态问题。针对准静态和结构动力学问题,Cummins等和Sulsky等给出了物质点法的隐式积分算法,采用迭代方法求解动量方程,无需显式组装切线刚度矩阵。Guilkey等则采用直接法求解动量方程组,提出了需显式组装切线刚度矩阵的隐式积分算法。

欧拉法总结 第6篇

可以通过一个具体的例子来理解欧拉方法。

假设我们有一个简单的常微分方程:

其中,k是一个常数,y是未知函数。

我们希望使用欧拉方法求解这个方程。首先,我们需要将自变量t的区间[t_0,t_n]等分成n个子区间,每个子区间长度为h=\frac{t_n-t_0}{n}。然后,我们选择一个起始点$t_0$和对应的初值$y_0$。在这个例子中,我们可以选择t_0=0,y_0=1。

接下来,我们可以使用欧拉方法逐步计算出t_1,t_2,\ldots,t_n处的近似解y_1,y_2,\ldots,y_n。具体而言,我们可以使用欧拉方法的公式:

将它应用于我们的例子中,得到:

其中,i=0,1,2,\ldots,n-1。这个公式表示的是,通过使用f(t_i,y_i)=ky_i来估计在t_i处的斜率,我们可以得到下一个近似解y_{i+1},即将当前近似解y_i沿着斜率方向向前推进一个步长h。

通过计算,我们可以得到以下结果:

这个表格显示了在$n$个子区间中,每个子区间的近似解。我们可以看到,在每个子区间内,近似解按指数级别增长。这是因为我们的方程是一个指数增长的函数,欧拉方法使用常数斜率估计了这个增长,因此在每个子区间内的近似解也呈指数增长。

当然,这个例子是非常简单的。在实际的应用中,我们通常会遇到更加复杂的常微分方程,需要使用更加高级的数值方法来求解。但是,欧拉方法作为最基础、最简单的数值方法,可以为我们提供一个初步的了解。

欧拉法总结 第7篇

一般的计算库采用的就是RK4作为标准方法。

两次斜率平均可以减少误差,那多个平均是不是也可以?当然是的,不过需要使用二阶差分,而不是直接取多个步骤平均,因为多个直接平均就不准了。

RK4的斜率计算公式为:

A_{n+1} = \frac{A_n + 2B_n + 2C_n + D_n}{6} \\

具体的A_n,B_n,C_n,D_n计算以及迭代公式,如下

\begin{aligned} A_n&=f(x_n,y_n),\tilde{x}_1&= x_n + h/2, \tilde{y}_1&=y_0+A_n h/2\\ B_n&=f(\tilde{x}_1,\tilde{y}_1),\tilde{x}_2&= x_n + h/2, \tilde{y}_2&=y_0 + B_n h/2\\ C_n&=f(\tilde{x}_2,\tilde{y}_2),\tilde{x}_3&= x_n + h, \tilde{y}_3&=y_0+C_n h\\ D_n&=f(\tilde{x}_3,\tilde{y}_3) \end{aligned} \\y_{n+1} = y_n+A_{n+1}h = y_n + \frac{A_n+2B_n+2C_n+D_n}{6} h \\

其实就是取邻近几个点的加权平均。

我们来看一下效果,如图微分方程为y' = \frac{y}{2x}

可以看到,欧拉方法和RK2总体上比较接近,不过在一卡开始有一部分差距变大了一点,主要是因为斜率变化较大。在同步长下RK4要比RK2以及Euler方法更好,因为这里步长取得比较大,所以RK4距离原函数还有一定距离,把步长取小一点就可以了。

数值计算的陷阱:在数值计算中,需要注意斜率不存在的点,但是从微分方程无法看出这些奇点所处的位置。比如y'=y^2它的解是y=\frac{1}{c-x},存在奇点x=cx=c