微分方程数值解法

合集下载

微分方程与数值解法的综述

微分方程与数值解法的综述

微分方程与数值解法的综述微分方程是数学中的一门重要分支,它描述了物理、工程和自然现象中的变化规律。

然而,许多微分方程往往无法通过解析方法得到解析解,这就需要借助数值解法来近似求解。

本文将从微分方程的基本概念入手,介绍常见的数值解法,并探讨其应用领域和优缺点。

一、微分方程的基本概念微分方程是描述函数和它的导数之间关系的方程。

根据方程中出现的未知函数的最高阶导数的阶数,微分方程可分为常微分方程和偏微分方程。

常微分方程中的未知函数只涉及一个自变量,而偏微分方程中的未知函数涉及多个自变量。

在常微分方程中,我们常常遇到一阶和二阶微分方程。

一阶微分方程的一般形式为dy/dx = f(x, y),其中y是未知函数,f(x, y)是已知函数。

二阶微分方程的一般形式为d^2y/dx^2 = f(x, y, dy/dx),其中y是未知函数,f(x, y, dy/dx)是已知函数。

二、数值解法的基本思想数值解法是一种近似求解微分方程的方法。

其基本思想是将微分方程转化为差分方程,并在离散的点上求解差分方程。

数值解法的精度和稳定性是评价其优劣的主要标准。

常见的数值解法包括欧拉法、改进的欧拉法、龙格-库塔法等。

欧拉法是最简单的一种数值解法,它通过将微分方程中的导数用差商来近似,从而得到差分方程。

改进的欧拉法通过在欧拉法的基础上引入更高阶的差商,提高了数值解的精度。

龙格-库塔法是一类经典的数值解法,通过计算多个差分方程的加权平均值来逼近微分方程的解。

三、数值解法的应用领域数值解法在科学计算中有着广泛的应用。

它在物理学、工程学、经济学等领域中发挥着重要作用。

在物理学中,微分方程广泛应用于描述运动、波动、电磁场等自然现象。

利用数值解法可以求解这些微分方程,从而得到物理系统的演化规律。

在工程学中,微分方程常用于建模和仿真。

例如,通过求解热传导方程可以分析材料的热传导性能,从而指导工程设计和优化。

在经济学中,微分方程常用于描述经济系统的动态演化。

微分方程的数值解法

微分方程的数值解法

微分方程的数值解法微分方程是自然科学和现代技术领域中一种最基本的数学描述工具,它可以描述物理世界中的各种现象。

微分方程的解析解往往很难求出,因此数值解法成为解决微分方程问题的主要手段之一。

本文将介绍几种常见的微分方程的数值解法。

一、欧拉法欧拉法是微分方程初值问题的最简单的数值方法之一,它是由欧拉提出的。

考虑一阶常微分方程:$y'=f(t,y),y(t_0)=y_0$其中,$f(t,y)$表示$y$对$t$的导数,则$y(t_{i+1})=y(t_i)+hf(t_i,y_i)$其中,$h$为步长,$t_i=t_0+ih$,$y_i$是$y(t_i)$的近似值。

欧拉法的精度较低,误差随着步长的增加而增大,因此不适用于求解精度要求较高的问题。

二、改进欧拉法改进欧拉法又称为Heun方法,它是由Heun提出的。

改进欧拉法是在欧拉法的基础上进行的改进,它在每个步长内提高求解精度。

改进欧拉法的步骤如下:1. 根据当前$t_i$和$y_i$估算$y_{i+1}$:$y^*=y_i+hf(t_i,y_i),t^*=t_i+h$2. 利用$y^*$和$t^*$估算$f(t^*,y^*)$:$f^*=f(t^*,y^*)$3. 利用$y_i$、$f(t_i,y_i)$和$f^*$估算$y_{i+1}$:$y_{i+1}=y_i+\frac{h}{2}(f(t_i,y_i)+f^*)$改进欧拉法具有比欧拉法更高的精度,但是相较于其他更高精度的数值方法,它的精度仍然较低。

三、龙格-库塔法龙格-库塔法是一种广泛使用的高精度数值方法,它不仅能够求解一阶和二阶常微分方程,还能够求解高阶常微分方程和偏微分方程。

其中,经典的四阶龙格-库塔法是最常用的数值方法之一。

四阶龙格-库塔法的步骤如下:1. 根据当前$t_i$和$y_i$估算$k_1$:$k_1=f(t_i,y_i)$2. 根据$k_1$和$y_i$估算$k_2$:$k_2=f(t_i+\frac{h}{2},y_i+\frac{h}{2}k_1)$3. 根据$k_2$和$y_i$估算$k_3$:$k_3=f(t_i+\frac{h}{2},y_i+\frac{h}{2}k_2)$4. 根据$k_3$和$y_i$估算$k_4$:$k_4=f(t_i+h,y_i+hk_3)$5. 根据$k_1$、$k_2$、$k_3$和$k_4$计算$y_{i+1}$:$y_{i+1}=y_i+\frac{h}{6}(k_1+2k_2+2k_3+k_4)$龙格-库塔法的精度较高,在求解一些对精度要求较高的问题时,龙格-库塔法是一个比较好的选择。

微分方程数值解法

微分方程数值解法

微分方程数值解法
微分方程是天文学、力学、电磁学等领域很重要的概念,这些领域的研究需要利用到微分
方程的数值解法去求解。

微分方程数值解法是一种将数学模型转换成计算机可以计算的过程,也就是将复杂的问题表达成一组导数和数值,然后利用计算机把这些数值分析和解决
出来。

微分方程数值解法的基本原理是通过二阶多项式的拟合,得出最优的近似解,这种解法是
在一维常微分方程组上应用的,由多个单个微分方程构成,所计算出来的值是多项式函数,这就是微分方程数值解法计算出来的结果。

微分方程数值解法有很多,其中最常用的有有限差分法、有限体积法、有限元法、网格化法、积分中心方法等。

有限差分方法是将问题分解成若干小的结点,然后把微分方程分割
成若干子部分,再做到多次离散估算的过程,最后可以得出拟合函数的解;有限体积方法
是通过将物理风险划分成多个单元,再用均匀的离散步长取点,最后以数值积分法解决微
分方程;有限元方法是利用有限元积分理论,将物理场定义在离散网格中,再利用数学技巧,得出最终的近似解;网格化法是把问题的空间划分成若干小的子空间,再基于某些准则利用焦点或者双精度网格单元,得出空间的分段函数;积分中心方法是把微分方程的方程组再利用积分解析的方法去求解,其中采用了梯形法或者抛物线法等数值积分方法。

最后,无论是那种方法,它们都将在一个规定的步长内对问题做出最有系统、最准确的近
似解,并且它们之间都具有某种交互性,当使用有限元方法可以基于积分中心法得出近似解,而积分中心法又可以基于有限差分方法进行改进,因此在实际领域,结合不同的数值
解法才能更好的满足需求。

微分方程的数值解法与近似求解技巧

微分方程的数值解法与近似求解技巧

微分方程的数值解法与近似求解技巧微分方程是数学中的重要概念,广泛应用于物理、工程、经济等领域。

在实际问题中,我们常常遇到无法直接求解的微分方程,这时候就需要借助数值解法和近似求解技巧来解决。

本文将介绍微分方程的数值解法和近似求解技巧,帮助读者更好地理解和应用这些方法。

一、数值解法1. 欧拉法欧拉法是最基础的数值解法之一,通过离散化微分方程,将其转化为差分方程,从而得到近似解。

欧拉法的基本思想是将微分方程中的导数用差商代替,然后通过迭代逼近真实解。

以一阶常微分方程为例,欧拉法的迭代公式如下:\[y_{n+1} = y_n + hf(x_n, y_n)\]其中,\(y_n\)表示第n个点的近似解,\(x_n\)表示对应的自变量的取值,h为步长,\(f(x_n, y_n)\)表示微分方程中的导数。

2. 改进的欧拉法改进的欧拉法是对欧拉法的改进,通过使用两个近似解的平均值来计算下一个点的近似解,从而提高了数值解的精度。

改进的欧拉法的迭代公式如下:\[y_{n+1} = y_n + \frac{h}{2}(f(x_n, y_n) + f(x_{n+1}, y_n + hf(x_n, y_n)))\]3. 二阶龙格-库塔法龙格-库塔法是一种常用的数值解法,通过计算多个近似解的加权平均值来提高数值解的精度。

其中,二阶龙格-库塔法是最简单的一种。

二阶龙格-库塔法的迭代公式如下:\[k_1 = hf(x_n, y_n)\]\[k_2 = hf(x_n + \frac{h}{2}, y_n + \frac{k_1}{2})\]\[y_{n+1} = y_n + k_2\]二、近似求解技巧1. 线性化方法线性化方法是一种常用的近似求解技巧,通过将非线性微分方程线性化,然后使用线性方程的求解方法来得到近似解。

以二阶线性微分方程为例,线性化方法的基本思想是将非线性项进行线性化处理,然后使用线性微分方程的求解方法来得到近似解。

微分方程的数值解法

微分方程的数值解法

微分方程的数值解法微分方程是描述自然界中众多现象和规律的重要数学工具。

然而,许多微分方程是很难或者无法直接求解的,因此需要使用数值解法来近似求解。

本文将介绍几种常见的微分方程数值解法。

1. 欧拉方法欧拉方法是最简单的数值解法之一。

它将微分方程转化为差分方程,通过计算离散点上的导数来逼近原方程的解。

欧拉方法的基本思想是利用当前点的导数值来估计下一个点的函数值。

具体步骤如下:首先,将自变量区间等分为一系列的小区间。

然后,根据微分方程的初始条件,在起始点确定初始函数值。

接下来,根据导数的定义,计算每个小区间上函数值的斜率。

最后,根据初始函数值和斜率,递推计算得到每个小区间上的函数值。

2. 龙格-库塔方法龙格-库塔方法是一种常用的高阶精度数值解法。

它通过进行多次逼近和修正来提高近似解的准确性。

相比于欧拉方法,龙格-库塔方法在同样的步长下可以获得更精确的解。

具体步骤如下:首先,确定在每个小区间上的步长。

然后,根据微分方程的初始条件,在起始点确定初始函数值。

接下来,根据当前点的导数值,使用权重系数计算多个中间点的函数值。

最后,根据所有中间点的函数值,计算出当前点的函数值。

3. 改进欧拉方法(改进的欧拉-克罗默法)改进欧拉方法是一种中阶精度数值解法,介于欧拉方法和龙格-库塔方法之间。

它通过使用两公式递推来提高精度,并减少计算量。

改进欧拉方法相对于欧拉方法而言,增加了一个估计项,从而减小了局部截断误差。

具体步骤如下:首先,确定在每个小区间上的步长。

然后,根据微分方程的初始条件,在起始点确定初始函数值。

接下来,利用欧拉方法计算出中间点的函数值。

最后,利用中间点的函数值和斜率,计算出当前点的函数值。

总结:微分方程的数值解法为我们研究和解决实际问题提供了有力的工具。

本文介绍了欧拉方法、龙格-库塔方法和改进欧拉方法这几种常见的数值解法。

选择合适的数值解法取决于微分方程的性质以及对解的精确性要求。

在实际应用中,我们应该根据具体情况选择最合适的数值解法,并注意控制步长以尽可能减小误差。

数值积分与微分方程数值解法

数值积分与微分方程数值解法

数值积分与微分方程数值解法数值积分和微分方程数值解法是数值计算中的重要组成部分,在科学计算、工程分析和实际问题求解中起着不可或缺的作用。

本文将介绍数值积分的基本概念和常用方法,以及微分方程数值解法的应用和实现过程。

一、数值积分的基本概念和常用方法数值积分是求解定积分近似值的方法,通过将连续函数的积分转化为离散形式的求和,以达到近似计算的目的。

常用的数值积分方法包括矩形法、梯形法、辛普森法等。

(1)矩形法:将积分区间等分为若干子区间,然后在每个子区间内取点,用函数在相应点处的取值近似代替该子区间内的函数值,最后将所有子区间的函数值相加得到近似积分值。

(2)梯形法:与矩形法类似,但是将每个子区间近似为一个梯形,通过计算梯形的面积来近似计算积分值。

(3)辛普森法:将积分区间等分为若干子区间,然后在每个子区间内取三个点,根据这三个点构造出一个二次函数,并用该二次函数的积分来近似计算积分值。

二、微分方程数值解法的应用和实现过程微分方程数值解法是对微分方程进行近似求解的方法,通过离散化微分方程来构造数值格式,然后通过数值计算来求解。

常用的微分方程数值解法包括常微分方程的欧拉法、改进欧拉法和龙格-库塔法,以及偏微分方程的有限差分法、有限元法等。

(1)常微分方程数值解法:- 欧拉法:根据微分方程的定义,将微分项近似为差分项,通过迭代逼近真实解。

- 改进欧拉法:在欧拉法的基础上,通过利用两个点的斜率来逼近解的变化率,提高精度。

- 龙格-库塔法:通过多次迭代,根据不同的权重系数计算不同阶数的近似解,提高精度。

(2)偏微分方程数值解法:- 有限差分法:将偏微分方程中的一阶和二阶导数近似为差分项,通过离散化区域和时间来构造矩阵方程组,然后通过求解线性方程组来获得数值解。

- 有限元法:将区域进行剖分,将偏微分方程转化为变分问题,通过选取适当的试函数和加权残差法来逼近真实解。

总结:数值积分和微分方程数值解法是数值计算中重要的工具,能够帮助我们处理实际问题和解决科学工程中的复杂计算。

微分方程数值解法及应用研究

微分方程数值解法及应用研究

微分方程数值解法及应用研究微分方程是研究自然科学和工程技术领域中各种现象和过程的基本数学模型。

然而,许多微分方程的解析解往往难以获得,因此需要借助数值解法来近似求解。

本文将介绍微分方程的数值解法及其在实际应用中的研究。

微分方程数值解法是一种通过离散化微分方程来近似求解的方法。

其中最常用的方法之一是欧拉方法。

欧拉方法通过将连续的微分方程转化为离散的差分方程,逐步逼近真实解。

具体而言,欧拉方法通过逐步迭代来计算微分方程在给定初始条件下的近似解。

假设我们需要求解的微分方程为y'(x) = f(x, y(x)),初始条件为y(x0) = y0。

利用欧拉方法,可以得到如下递推公式: yn+1 = yn + h*f(xn, yn)其中,h为步长,xn和yn分别表示第n个离散点的自变量和因变量。

通过多次迭代计算,可以得到微分方程在给定步长下的数值解。

除了欧拉方法外,还有许多其他常用的微分方程数值解法。

其中,龙格-库塔方法是最为经典和常用的高精度数值解法之一。

龙格-库塔方法通过计算不同阶级的差分公式来提高数值解的精度。

最常用的是经典的四阶龙格-库塔方法,也称为RK4方法。

与欧拉方法相比,RK4方法的精度更高,并且适用于解决更加复杂的微分方程。

此外,还有变步长的自适应数值解法,如龙格-库塔法的自适应步长版本和变步长的欧拉法,可以根据误差控制准则自动选择适当的步长,以提高数值解的精度和计算效率。

微分方程数值解法在实际应用中具有广泛的研究价值和实用意义。

在物理学中,微分方程数值解法可以用来模拟物质的运动、传热传质等过程。

例如,通过求解流体力学方程(如纳维-斯托克斯方程)的数值解,可以研究风、水、气体等流体的运动规律,从而优化工程设计和改进环境保护措施。

在工程技术领域,微分方程数值解法可以应用于信号处理、图像处理、控制系统等诸多领域。

例如,利用微分方程数值解法来优化控制系统的参数,可以提高机器人、航天器和工业自动化等领域的自动控制性能。

微分方程的数值解法

微分方程的数值解法

微分方程的数值解法微分方程(Differential Equation)是描述自然界中变化的现象的重要工具,具有广泛的应用范围。

对于一般的微分方程,往往很难找到解析解,这时候就需要使用数值解法来近似求解微分方程。

本文将介绍几种常见的微分方程数值解法及其原理。

一、欧拉方法(Euler's Method)欧拉方法是最基本也是最容易理解的数值解法之一。

它的基本思想是将微分方程转化为差分方程,通过给定的初始条件,在离散的点上逐步计算出函数的近似值。

对于一阶常微分方程dy/dx = f(x, y),利用欧拉方法可以得到近似解:y_n+1 = y_n + h * f(x_n, y_n)其中,h是步长,x_n和y_n是已知点的坐标。

欧拉方法的优点在于简单易懂,但是由于是一阶方法,误差较大,对于复杂的微分方程可能不够准确。

二、改进的欧拉方法(Improved Euler's Method)改进的欧拉方法又称为改进的欧拉-柯西方法,是对欧拉方法的一种改进。

它通过在每一步计算中利用两个不同点的斜率来更准确地逼近函数的值。

对于一阶常微分方程dy/dx = f(x, y),改进的欧拉方法的迭代公式为:y_n+1 = y_n + (h/2) * [f(x_n, y_n) + f(x_n+1, y_n + h * f(x_n, y_n))]相较于欧拉方法,改进的欧拉方法具有更高的精度,在同样的步长下得到的结果更接近真实解。

三、四阶龙格-库塔方法(Fourth-Order Runge-Kutta Method)四阶龙格-库塔方法是一种更高阶的数值解法,通过计算多个点的斜率进行加权平均,得到更为准确的解。

对于一阶常微分方程dy/dx = f(x, y),四阶龙格-库塔方法的迭代公式为:k1 = h * f(x_n, y_n)k2 = h * f(x_n + h/2, y_n + k1/2)k3 = h * f(x_n + h/2, y_n + k2/2)k4 = h * f(x_n + h, y_n + k3)y_n+1 = y_n + (k1 + 2k2 + 2k3 + k4)/6四阶龙格-库塔方法是数值解法中精度最高的方法之一,它的计算复杂度较高,但是能够提供更为准确的结果。

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

《微分方程数值解法》【摘要】自然界与工程技术中的很多现象,可以归结为微分方程定解问题。

其中,常微分方程求解是微分方程的重要基础内容。

但是,对于许多的微分方程,往往很难得到甚至不存在精确的解析表达式,这时候,数值解提供了一个很好的解决思路。

,针对于此,本文对常微分方程数值解法进行了简单研究,主要讨论了一些常用的数值解法,如欧拉法、改进的欧拉法、Runge —Kutta 方法、Adams 预估校正法以及勒让德谱方法等,通过具体的算例,结合MA TLAB 求解画图,初步给出了一般常微分方程数值解法的求解过程。

同时,通过对各种方法的误差分析,让大家对各种方法的特点和适用范围有一个直观的感受。

【关键词】 常微分方程 数值解法 MA TLAB 误差分析引言在我国高校,《微分方程数值解法》作为对数学基础知识要求较高且应用非常广泛的一门课程,不仅在数学专业,其他的理工科专业的本科及研究生教育中开设这门课程.近四十年来,《微分方程数值解法》不论在理论上还是在方法上都获得了很大的发展.同时,由于微分方程是描述物理、化学和生物现象的数学模型基础,且它的一些最新应用已经扩展到经济、金融预测、图像处理及其他领域 在实际应用中,通过相应的微分方程模型解决具体问题,采用数值方法求得方程的近似解,使具体问题迎刃而解。

2 欧拉法和改进的欧拉法2.1 欧拉法2.1.1 欧拉法介绍首先,我们考虑如下的一阶常微分方程初值问题 ⎩⎨⎧==00)(),('y x y y x f y(2--1)事实上,对于更复杂的常微分方程组或者高阶常微分方程,只需要将x 看做向量,(2--1)就成了一个一阶常微分方程组,而高阶常微分方程也可以通过降阶化成一个一阶常微分方程组。

欧拉方法是解常微分方程初值问题最简单最古老的一种数值方法,其基本思路就是把(2--1)中的导数项'y 用差商逼近,从而将一个微分方程转化为一个代数方程,以便求解。

设在[]b a ,中取等距节点h ,因为在节点n x 点上,由(2--1)可得:))(()(',n n n x y x f x y =,(2--2)又由差商的定义可得:hx y x y x y n n n )()(('1-≈+)(2--3) 所以有 ))(,()()(1n n n n x y x hf x y x y +≈+ (2--4)用)(k x y 的近似值k y )1,(+=n n k 代入(2--4),则有计算1+n y 的欧拉公式))(,(1n n n n x y x hf y y +=+ (2--5)2.1.2欧拉法误差分析从欧拉公式中可以看出,右端的n y 都是近似的,所以用它计算出来的1+n y 会有累计误差,累计误差比较复杂,为简化分析,我们考虑局部截断误差,即认为n y 是精确的前提下来估计11)(++-n n y x y ,记为1+n ε,泰勒展开有)()()(''2)(')()(1321++<<+++=n n n n n x x h O y h x hy x y x y ξξ(2--6)联立(2--5),(2--6)即得1+n ε=)(''22ξy h +)(3h O =)(2h O ,根据数值算法精度的定义,如果一个数值方法的局部截断误差1+n ε=)(1+p h O 则称这个算法具有P 阶精度,所以,欧拉方法具有一阶精度或者称欧拉方法为一阶方法。

2.2 改进的欧拉方法2.2.1 改进的欧拉法介绍用数值积分离散化问题(1),两边做积分有: dx x y x f x y x y n nx x n n ⎰+=-+1))(,()()(1(2--7)对右端积分使用梯形积分公式可得:[]))(,())(,(2))(,(111+++≈⎰+n n n n x x x y x f x y x f hdx x y x f n n(2--8)同欧拉方法,用)(k x y 的近似值k y )1,(+=n n k 代入(2--7),联立(2--8)得到改进的欧拉方法计算公式: ),(),((2111+++++=n n n n n n y x f y x f hy y (2--9)一般来说,如果求解1+n y 时,算法右端不包含1+n y ,称为显性计算公式,如果包含,则求解时还需要解方程,这种称为隐式计算公式。

显然公式(2--9)是一个隐式计算公式,事实上,改进的欧拉方法是用欧拉方法先求一个预测值1+n y ,再用这个预测值来计算1+n y ,即:⎪⎩⎪⎨⎧++=+=++++),(),((2),(1111n n n n n n n n n n y x f y x f hy y y x hf y y (2--10)2.2.2改进的欧拉法误差分析同欧拉法误差分析类似,用泰勒展开容易知道改进的欧拉方法具有二阶精度,证明略。

2.3 算例2.3.1(一阶常微分方程)求解初值问题⎪⎩⎪⎨⎧∈-==]1,0[21)0('x yx y y y解析:在MATLAB 中求解这个方程y=dsolve('Dy=y-2*x/y','y(0)=1','x') 得y =(2*x+1)^(1/2)它的解析解为x y 21+=,下面我们分别用欧拉方法和改进的欧拉方法来求其数值解。

欧拉方法:创建M 文件euler1.m,内容如下: function [x,y]=euler1(fun,x0,xfinal,y0,n) if nargin<5,n=50; endh=(xfinal-x0)/n; x(1)=x0;y(1)=y0;for i=1:nx(i+1)=x(i)+h;y(i+1)=y(i)+h*feval(fun,x(i),y(i));End再定义函数方程组中的函数f1,创建f1.m文件,内容如下:function f=f1(x,y)f=y-2*x/y在MATLAB中输入:[x,y]=euler1('f1',0,1,1,20)输出f,[x,y]的值,将数值解跟精确解画图表示,输入:plot(x,y,'r*-',x,sqrt(1+2*x),'g+--');xlabel('x');ylabel('y');title('y‘=y-2x/y');legend('数值解','精确解')得到图形,保存为euler1.fig,图形如下:改进的欧拉方法:创建M文件eulerprove1.m,内容如下:function [x,y]=eulerprove1(fun,x0,xfinal,y0,n)if nargin<5,n=50;endh=(xfinal-x0)/n;y(1)=y0,x(1)=x0;for i=1:nx(i+1)=x(i)+h;y1=y(i)+h*feval(fun,x(i),y(i))/2;y2=h*feval(fun,x(i+1),y1)/2;y(i+1)=y1+y2End在MATLAB的command窗口输入: [x,y1]=eulerprove1('f1',0,1,1,20)返回f,x1,y1的值,作图,输入:plot(x,y1,'r*-',x,sqrt(1+2*x),'g+--');xlabel('x');ylabel('y');title('y‘=y-2x/y');legend('数值解','精确解'),将图片保存为eulerprove1.fig,图形如下:为了便于比较两种方法的误差,将两者的误差作到同一个图上,继续输入:plot(x,abs(y-sqrt(1+2*x)),'y*-',x,abs(y1-sqrt(1+2*x)),'g+--');xlabel('x');ylabel('y');title('误差曲线');legend('欧拉方法','改进的欧拉方法')将图片保存为error1.fig,图形如下:从该图形来看,改进的欧拉方法与欧拉方法误差接近,欧拉方法误差稍微大些,将x 的取值扩宽,n 取值增大时,可以发现改进的欧拉方法相比欧拉方法有更高的精度。

2.3.2(高阶微分方程)对于二阶常微分方程)(]1,0[1)0(2)0('''∈⎩⎨⎧==-=x x x xx ,求数值解 解析:先算出其解析解,在MATLAB 中输入:y=dsolve('D2x=-x','x(0)=1','Dx(0)=2')得到解为:Y=2*sin(t)+cos(t),前面已经分别给出过欧拉方法和改进的欧拉方法的算例跟误差比较,这里我们就用精度更高的改进欧拉法进行数值求解。

改进的欧拉方法:先换元,令y x =',则原方程可以转化为])1,0[(2)0(1)0(''∈⎪⎩⎪⎨⎧===-=x y x yx xy ,现在,二阶常微分方程转化为了一个一阶常微分方程组,同2.3.2的方法,建立M 文件eulerprove3.m,内容如下:function [t,x,y]=eulerprove2(t0,tfinal,x0,y0,n) f1=inline('y'); f2=inline('-x') if nargin<5,n=50; endh=(tfinal-t0)/n; t(1)=t0,x(1)=x0;y(1)=y0; for i=1:n t(i+1)=t(i)+h;x1=x(i)+h*feval(f1,y(i)); y1=y(i)+h*feval(f2,x(i)); x2=x(i)+h*feval(f1,y1); y2=y(i)+h*feval(f2,x1); x(i+1)=(x1+x2)/2; y(i+1)=(y1+y2)/2;end在command窗口输入[t,x,y]=eulerprove3(0,1,1,2,10),得到t,x,y的值,其中x就是我们要求的数值解,作图,输入:plot(t,x,'r*-',t,2*sin(t)+cos(t),'b+-');xlabel('x');ylabel('y‘);legend('数值解','精确解'),将图形保存为eulerprove3.fig,图形如下:上面,我们已经通过例子看出,改进的欧拉法相比于欧拉法,在每一个节点处的误差值更下,下面,我们来讨论节点的多少(步长大小)对误差的影响,创建erro3r.m文件,内容如下:function [N,Y]=error3(n0,nfinal)N(1)=n0,m=fix((nfinal-n0)/4);for i=1:mN(i+1)=N(i)+4;[t,x1,y1]=eulerprove3(0,1,1,2,N(i));Y(i)=log10(max(x1-2*sin(t)-cos(t)));[t,x2,y1]=eulerprove3(0,1,1,2,N(i));Y(i+1)=log10(max(x2-2*sin(t)-cos(t)));end输入[N,Y]=error3(4,100),返回节点个数值和Y值,Y代表在N个节点时,数值解与精确解差的绝对值的最大值的对数(10为底)。

相关文档
最新文档