6.1 欧拉方法与改进欧拉方法

news2024/10/5 20:18:21


 

6.1.1 欧拉方法

欧拉方法是一种数值解常微分方程(ODE)的方法,可以用于近似求解给定的初值问题。它是以欧拉命名的瑞士数学家莱昂哈德·欧拉所发明的,因此得名。

欧拉方法的基本思路是将连续的常微分方程转化为离散的形式。具体而言,我们将自变量$t$的区间[t_0,t_n]等分成n个子区间,每个子区间长度为h=\frac{t_n-t_0}{n}。然后,我们选择一个起始点t_0和对应的初值y_0,并从t_0开始,使用欧拉方法逐步计算出t_1,t_2,\ldots,t_n处的近似解y_1,y_2,\ldots,y_n,直到达到目标终点t_n为止。

欧拉方法的具体实现是基于以下公式:

 

其中,f(t,y)是给定的常微分方程,y_i是在t_i处的近似解,h是步长,通常设置为常数。这个公式表示的是,通过使用f(t_i,y_i)来估计在t_i处的斜率,我们可以得到下一个近似解y_{i+1},即将当前近似解y_i沿着斜率方向向前推进一个步长h。

欧拉方法是一种比较简单和直观的数值求解方法,但它也有一些缺点。例如,欧拉方法的误差通常会随着步长h的减小而减小,但这种减小速度是线性的,而不是二次或更高阶的。此外,欧拉方法在求解具有较大振荡或非线性的问题时,可能会导致数值解的不稳定性。因此,有时候需要使用更高阶的数值求解方法,例如改进欧拉方法或龙格-库塔方法,以提高求解精度和稳定性。

 

 我的理解:

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

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

 

其中,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。

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

it_iy_i
001
1h1+kh
22h(1+kh)^2
\cdots\cdots\cdots
nnh(1+kh)^n

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

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

 1.2 欧拉公式的局部截断误差与精度分析

欧拉方法的局部截断误差是指在每个步骤中,欧拉方法计算得到的数值解与真实解之间的差距。具体而言,如果我们使用欧拉方法计算出的数值解为$y_i$,而真实解为$y(t_i)$,那么局部截断误差为:

也就是说,局部截断误差是在每个步骤中欧拉方法未能精确计算出下一个点的误差。

欧拉方法的精度分析可以通过比较局部截断误差与步长$h$的关系来进行。具体而言,我们可以使用泰勒展开式将真实解表示为:

这里$O(h^3)$表示高阶无穷小,即在$h$趋近于0时,比$h^3$更小的项。将欧拉方法的数值解代入上式,并使用欧拉方法的定义,我们可以得到:

将上式代入局部截断误差的定义,我们可以得到:

也就是说,欧拉方法的局部截断误差是二阶无穷小,与步长$h^2$成正比。因此,欧拉方法的全局误差与步长$h$成线性关系,即:

 

这表明欧拉方法是一种一阶精度的数值方法。如果我们想要提高数值解的精度,可以选择使用更高阶的数值方法,如改进欧拉方法或龙格-库塔方法等。

 定义2 我的理解:

在数值求解常微分方程的过程中,我们希望得到一个与真实解足够接近的数值解。一般来说,我们认为一个数值方法的精度与其阶数有关。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阶方法的计算量比低阶方法要大,但是可以得到更高精度的数值解。如果我们需要更高精度的数值解,可以考虑使用更高阶的数值方法。在实际应用中,我们需要在计算量和精度之间进行权衡,并选择合适的数值方法。

 1.3 改进欧拉方法

改进欧拉方法是一种二阶精度的数值方法,它可以用来求解形如$y' = f(t,y)$的常微分方程。与欧拉方法类似,改进欧拉方法也是一种显式的数值方法,它在每个步骤中需要计算一个斜率,然后使用这个斜率来更新数值解。

具体而言,假设我们要在$t_i$处计算数值解$y_i$,步长为$h$。首先,我们使用欧拉方法计算出一个初始估计值:

 

然后,我们计算在$t_{i+1/2}$处的斜率:

 

最后,我们使用斜率$k_{i+1/2}$来更新数值解:

 

改进欧拉方法的局部截断误差为$O(h^3)$,全局误差为$O(h^2)$,因此它比欧拉方法更精确。改进欧拉方法的计算量比欧拉方法要大,但比龙格-库塔方法要小,因此在一些实际问题中被广泛使用。

 

总结:

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

欧拉方法:

  • 重点:一阶数值方法,使用简单,容易实现。
  • 难点:可能会有精度不够高的问题。
  • 易错点:在选择步长的时候需要注意,如果步长过大,会导致数值解不够精确。

改进欧拉方法:

  • 重点:二阶数值方法,比欧拉方法精度更高。
  • 难点:相对于欧拉方法来说,计算量略微增加。
  • 易错点:在使用该方法时,需要注意斜率的计算,以及在更新数值解时要使用$t_{i+1/2}$处的斜率。

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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/452141.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

全功能药效团图谱(Full-feature pharmacophore map)是什么?怎么绘制?

药效团和全功能药效团图谱是什么? 药效团是指与靶点相互作用并导致生物活性的化学基团或者分子结构片段。【药效团通常包括氢键受体/供体、疏水部位、离子化部位等关键成分】 "全功能药效团图谱" (Full-feature pharmacophore map&#xff0…

.net6 core web项目发布部署到Linux,以守护进程服务的形式部署启动,nginx实现转发

一、发布项目 1、以文件夹形式 2、目标运行时选对应的平台(Linux-x64) 3、文件夹选项:在发布前删除所有现有文件 二、部署项目(安装.net6环境:参考Linux安装 dotnet sdk 6.0) (1)…

toRef

toRef就是把什么东西变成ref 用这个页面来讲解 改成这样就用不了,失去了响应的功能 为什么会这样? 看这个页面,其实这个Proxy的实现就响应式的原理,但是let namep.name实际上就是let name张三,只是把这个值给了name&…

Android 日志框架使用

在实际开发中,经常会遇到需要打印日志并保存到文件中,便于后面取日志分析代码运行情况,当然如果只是打印日志不需要记录文件,使用android自带的log工具就完全够了, Log打印日志会记录到系统日志中,可以取出…

光敏电阻传感器模块资料

实物项目案例 实物图: PCB图: 原理图: 用途: 光线亮度检测,光线亮度传感器,智能小车寻光模块 模块特色: 1、采用灵敏型光敏电阻传感器 2、比较器输出,信号干净,波形好&#x…

【Leetcode】10. 正则表达式匹配

10. 正则表达式匹配(困难) 题解 如果从左向右进行匹配的话,需要考虑字符后是否有 * 。 因此选择从右向左扫描更为简单。 *前面肯定有一个字符,它像是一个拷贝器,能够复制前面的单个字符,甚至也可以把这个…

Java 1.8新特性

接口的默认方法 Java 8允许给接口添加一个非抽象的方法实现,只需要使用default关键字即可,这个特征又叫做扩展方法 interface Formula {double calculate(int a);default double sqrt(int a) {return Math.sqrt(a);} }Formula接口在拥有calculate方法之…

【Linux初阶】进程的相关概念 | 进程管理 查看进程 获取进程标识符 fork进程创建

🌟hello,各位读者大大们你们好呀🌟 🍭🍭系列专栏:【Linux初阶】 ✒️✒️本篇内容:进程的概念,进程管理初识(描述、管理进程),查看进程的基础方法…

【Nav2】ROS2 Eloquent中使用robot_state_publisher发布松灵Scout mini的urdf

【背景】 本来打算把ROS1版本的松灵Scout mini 模型描述文件直接移植到ROS2的工作空间里去,用robot_state_publisher加载出来,结果行不通;于是找到了ROS2版本的Scout mini 模型描述,结果因为我用的是 Eloquent 版本,而…

MobTech MobPush|A/B测试提升运营决策

在实际推送过程中,我们常常有这样的困惑: 我们如何确定哪种推送内容更能吸引用户? 我们如何衡量推送效果的提升程度? 我们如何优化推送方案,实现更高的ROI? 为了解决这些困惑,我们需要一种科…

碳中和成“必答题”,宁德时代创造产业“零碳”新维度

文 | 智能相对论 作者 | leo陈 2021年,麻省理工学院的教授索尔格里菲斯出版了《零碳未来》一书,这本著作总结了数十年的研究经验和数据,紧迫地提出,我们需要可以利用现有技术和资源快速应对气候变化的“零碳行动方案”。 既要保…

Netty时间轮源码解析

Netty主要应用用于网络通信,Netty还有一个非常重要的应用领域,即时通信系统IM, 在IM聊天系统中,有成千上万条条链路, Netty是如何管理这些链路的呢 ? Netty还有一套自带的心跳检测机制,这套检测机制的原理是…

HCIP-7.0华为交换机技术基础学习

交换机基础 1、交换机工作原理1.1、VLAN虚拟局域网1.1.1、VLAN帧格式1.1.2、VLAN的划分方式:1.1.3、PVID1.1.4、Access端口类型1.1.5、Trunk端口类型1.1.6、Hybird端口类型 1.2、MUX VLAN应用场景和原理1.2.1、MUX VLAN原理1.2.2、MUX VLAN配置 1、交换机工作原理 …

软件测试—用例篇(上)

软件测试—用例篇 🔎测试用例的概念🔎测试用例的好处🔎测试用例的设计方法🌸基于需求的设计方法🌸等价类划分法🌸边界值分析法🌸判定表 🔎结尾 🔎测试用例的概念 为了实…

【Python】如何用pyth做游戏脚本(太简单了吧)

文章目录 前言一、开发前景二、开发流程3.1、获取窗口句柄,把窗口置顶3. 2、截取游戏界面,分割图标,图片比较 二、程序核心-图标连接算法(路径寻找)四、开发总结五、源码总结 前言 简述:本文将以4399小游戏…

使用@Import注解给容器中快速导入一个组件

注册bean的方式 向Spring容器中注册bean通常有以下几种方式: 包扫描给组件标注注解(Controller、Servcie、Repository、Component),但这种方式比较有局限性,局限于我们自己写的类Bean注解,通常用于导入第…

软测如果这么学,培训班都得倒闭,直接省去上万元的学费

俗话说外行看热闹,内行看门道。 写这篇文章,是希望把我的一些我认为是非常有价值的经验总结出来,能够帮助刚做测试不久的新同学,或者是测试经验丰富的老同学以共享。 希望我们可爱的新同学,准备要在测试领域耕耘的伙…

Git推出大文件储存工具Git LFS,但它真的好用吗?

Git LFS(全称为Git Large File Storage,Git大文件存储)被许多团队用来管理和存储大文件。本篇文章将解释Git LFS是什么,它的功能和使用场景,以及它究竟是不是管理大文件的最佳版本控制工具。 什么是Git LFS&#xff0…

共治、共建、共享!龙蜥社区第 16 次运营委员会会议顺利召开!

4 月 14 日,龙蜥社区在凝思软件召开了第 16 次运营委员会会议,本次会议由统信软件运营委员会委员崔开主持。来自阿里云、红旗软件、海光、Intel、联通软研院、浪潮信息、凝思软件、普华基础软件、统信软件、万里红、新华三、中科方德等理事单位的 23 位委…

第一章 Go环境搭建

前言 Golang是一种比较新颖的编程语言,其强大的功能以及底层的强大支撑快速的成为了编程语言的佼佼者,使其备受欢迎。 1、Go的安装与配置 如果你有一定的开发经验或者学习知识肯定知道,如何语言的开发都需要进行环境的配置与相关资源的安装…