实验七、常微分方程数值解法.

合集下载

实验报告——常微分方程的数值解法

实验报告——常微分方程的数值解法

实验报告实验项目名称常微分方程的数值解法实验室数学实验室所属课程名称微分方程数值解实验类型上机实验实验日期2013年3月11日班级10信息与计算科学学号2010119421姓名叶达伟成绩实验概述:【实验目的及要求】运用不同的数值解法来求解具体问题,并通过具体实例来分析比较各种常微分方程的数值解法的精度,为以后求解一般的常微分方程起到借鉴意义。

【实验原理】各种常微分方程的数值解法的原理,包括Euler法,改进Euler法,梯形法,Runge-Kutta方法,线性多步方法等。

【实验环境】(使用的软硬件)Matlab软件实验内容:【实验方案设计】我们分别运用Euler法,改进Euler法,RK方法和Adams隐式方法对同一问题进行求解,将数值解和解析解画在同一图像中,比较数值解的精度大小,得出结论。

【实验过程】(实验步骤、记录、数据、分析)我们首先来回顾一下原题:对于给定初值问题:1. 求出其解析解并用Matlab画出其图形;2. 采用Euler法取步长为0.5和0.25数值求解(2.16),并将结果画在同一幅图中,比较两者精度;3. 采用改进Euler法求解(2.16),步长取为0.5;4. 采用四级Runge-Kutta法求解(2.16),步长取为0.5;5. 采用Adams四阶隐格式计算(2.16),初值可由四级Runge-Kutta格式确定。

下面,我们分五个步骤来完成这个问题:步骤一,求出(2.16)式的解析解并用Matlab 画出其图形; ,用Matlab 做出函数在上的图像,见下图:00.51 1.52 2.53 3.54 4.550.511.522.533.5x 1015y=exp(1/3 t 3-1.2t)exact solution图一 初值问题的解析解的图像步骤二,采用Euler 法取步长为0.5和0.25数值求解(2.16),并将结果画在同一幅图中,比较两者精度;我们采用Euler 法取步长为0.5和0.25数值求解,并且将数值解与解析解在一个图中呈现,见下图:00.51 1.52 2.53 3.54 4.550.511.522.533.5x 1015Numerical solution of Euler and exact solutionexact solution h=0.5h=0.25图二 Euler 方法的计算结果与解析解的比较从图像中不难看出,采用Euler 法取步长为0.5和0.25数值求解的误差不尽相同,也就是两种方法的计算精度不同,不妨将两者的绝对误差作图,可以使两种方法的精度更加直观化,见下图:00.51 1.52 2.53 3.54 4.550.511.522.533.5x 1015Absolute error of numerical solution and exact solutionh=0.5h=0.25图三 不同步长的Euler 法的计算结果与解析解的绝对误差的比较 从图像中我们不难看出,步长为0.25的Euler 法比步长为0.5的Euler 法的精度更高。

第7章 常微分方程初值问题的数值解法

第7章 常微分方程初值问题的数值解法

例1 函数f ( t , y ) = t y 在区域D0 = {( t , y ) | 1 ≤ t ≤ 2, −3 ≤ y ≤ 4}
关于y满足Lipschitz条件,相应的Lipschitz常数可取为L = 2
3 存在性定理 定理1 设函数f ( t , y )在凸集D ⊂ R 2中有定义,若存在常数
(7.2.7)
称为显式Runge-Kutta(龙格-库塔 )方法,简称R-K方法,
其中正整数N 称为R-K方法的级,所有ci , ai , bij 都是待定 常数。
根据定义(7.2.7),N 级R-K方法(7.9)的局部截断误差为
Rn+1 = y( t n+1 ) − y( t n ) − h∑ ci ki
dy 其斜率为 = f ( t0 , y0 ) dt ( t0 , y0 ) 由 点 斜 式 写 出 切线 方 程 dy y = y0 + ( t − t0 ) = y0 + ( t − t0 ) f ( t0 , y0 ) dt ( x0 , y )
0
等步长为h,则t1 - t0 = h, 可由切线算出 y1 : 则 y1 = y0 + hf ( t0 , y0 ) 按此逐步计算y( tn ), 在tn +1处的值 : yn+1 = yn + hf ( tn , yn ) y 注意: 这是“ 注意 : 这是 “ 折 yN 线法” 而非“ 线法 ” 而非 “ 切 线法” 线法 ” 除第一个 点是曲线切线外, 点是曲线切线外 , 其他点不是切线 y2 而是折线(如右 y1 y0 图所示)。 图所示 。
பைடு நூலகம்
则称数值解法(7.5)为显式方法。否则,称数值解法(7.3) 为隐式方法。

实验七 用Python解常微分方程

实验七 用Python解常微分方程

实验七用Python解常微分方程摘要本实验使用Python编程语言解决常微分方程(Ordinary Differential Equations, ODEs)问题。

常微分方程是描述自然界的变化和动态过程的数学工具,具有广泛的应用价值。

Python拥有强大的数值计算和绘图功能,因此是解决常微分方程问题的理想工具。

本实验将介绍常见的ODE求解方法,并给出相应的Python代码示例。

引言常微分方程描述了函数及其导数之间的关系,可以用来解决一系列实际问题,如物理、工程、经济等各个领域。

通过数值方法求解ODE,可以得到函数的近似解,从而对实际问题进行定性和定量分析。

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

这些方法基于数值逼近的原理,通过迭代计算逼近函数的解。

以下是这些方法的简要介绍:1. 欧拉法(Euler's method):将函数的导数展开为差商的形式,利用差商逼近导数,从而得到函数的近似解。

2. 改进欧拉法(Improved Euler's method):在欧拉法的基础上引入中间点的逼近,进一步提高近似解的准确性。

3. 龙格-库塔法(Runge-Kutta method):通过计算不同权重的斜率加权平均来逼近函数的导数,并利用逼近的导数进行迭代计算。

使用Python解常微分方程的示例代码以下是使用Python解常微分方程的示例代码,具体说明见代码注释:import numpy as npimport matplotlib.pyplot as plt定义常微分方程的函数形式def ode_func(t, y):return -y + np.sin(t)欧拉法求解常微分方程def euler_method(ode_func, t_start, t_end, y_init, step_size): num_steps = int((t_end - t_start) / step_size) + 1t = np.linspace(t_start, t_end, num_steps)y = np.zeros(num_steps)y[0] = y_initfor i in range(1, num_steps):y[i] = y[i-1] + step_size * ode_func(t[i-1], y[i-1])return t, y解常微分方程并绘制结果t_start, t_end = 0, 10y_init = 0step_size = 0.1t, y = euler_method(ode_func, t_start, t_end, y_init, step_size)plt.plot(t, y)plt.xlabel('t')plt.ylabel('y')plt.title('Solution of ODE using Euler\'s method')plt.grid(True)plt.show()结论本实验介绍了用Python解常微分方程的基本方法和示例代码,涉及了欧拉法。

第七章常微分方程数值解法

第七章常微分方程数值解法

h2 h3 y ( xi 1 ) y ( xi h) y ( xi ) hy '( xi ) y ''( xi ) y '''( xi ) 2! 3!
丢掉高阶项,有
y( xi 1 ) y( xi h) y( xi ) hy '( xi ) yi hf ( xi , yi )
| f ( x, y1 ) f ( x, y2 ) | L | y1 y2 | ,
那么模型问题在 [ a, b] 存在唯一解。
Lipschitz 连续: | f ( x, y1 ) f ( x, y2 ) | L | y1 y2 | .
(1) 比连续性强: y1 y2 可推出 f ( x, y1 ) f ( x, y2 ) ; (2) 比连续的 1 阶导弱:具有连续的 1 阶导,则
f | f ( x, y1 ) f ( x, y2 ) || ( ) || y1 y2 | L | y1 y2 | . y
常微分方程数值解法
目标:计算出解析解 y ( x) 在一系列节点 a x0 x1 xn1 xn b 处的近似值 yi y( xi ) ,即所谓的数值解。节点间距 hi xi 1 xi ,一般 取为等距节点。
常微分方程初值问题的数值解法一般分为两大类: (1)单步法:在计算 yn 1 时,只用到前一步的值,即用到 xn1 , xn , yn ,则给定初
值之后,就可逐步计算。例如 Euler 法、向后欧拉法、梯形公式、龙格-库塔法;
(2) 多步法: 这 类 方 法 在 计算 yn 1 时 , 除 了 用 到 xn1 , xn , yn 外 , 还 要 用到

常微分方程的数值解法

常微分方程的数值解法

常微分方程的数值解法1. 引言常微分方程是自变量只有一个的微分方程,广泛应用于自然科学、工程技术和社会科学等领域。

由于常微分方程的解析解不易得到或难以求得,数值解法成为解决常微分方程问题的重要手段之一。

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

2. 欧拉方法欧拉方法是最简单的一种数值解法,其具体步骤如下:- 将自变量的区间等分为n个子区间;- 在每个子区间上假设解函数为线性函数,即通过给定的初始条件在每个子区间上构造切线;- 使用切线的斜率(即导数)逼近每个子区间上的解函数,并将其作为下一个子区间的初始条件;- 重复上述过程直至达到所需的精度。

3. 改进的欧拉方法改进的欧拉方法是对欧拉方法的一种改进,主要思想是利用两个切线的斜率的平均值来逼近每个子区间上的解函数。

具体步骤如下: - 将自变量的区间等分为n个子区间;- 在每个子区间上构造两个切线,分别通过给定的初始条件和通过欧拉方法得到的下一个初始条件;- 取两个切线的斜率的平均值,将其作为该子区间上解函数的斜率,并计算下一个子区间的初始条件;- 重复上述过程直至达到所需的精度。

4. 二阶龙格-库塔方法二阶龙格-库塔方法是一种更为精确的数值解法,其基本思想是通过近似计算解函数在每个子区间上的平均斜率。

具体步骤如下: - 将自变量的区间等分为n个子区间;- 在每个子区间上计算解函数的斜率,并以该斜率的平均值近似表示该子区间上解函数的斜率;- 利用该斜率近似值计算下一个子区间的初始条件,并进一步逼近解函数;- 重复上述过程直至达到所需的精度。

5. 龙格-库塔法(四阶)龙格-库塔法是目前常用的数值解法之一,其精度较高。

四阶龙格-库塔法是其中较为常用的一种,其具体步骤如下:- 将自变量的区间等分为n个子区间;- 在每个子区间上进行多次迭代计算,得到该子区间上解函数的近似值;- 利用近似值计算每个子区间上的斜率,并以其加权平均值逼近解函数的斜率;- 计算下一个子区间的初始条件,并进一步逼近解函数;- 重复上述过程直至达到所需的精度。

实验七 用Maple解常微分方程

实验七 用Maple解常微分方程

实验七用Maple解常微分方程1. 实验目的本实验旨在通过使用数学建模软件Maple来解常微分方程,加深对常微分方程解法的认识和理解。

通过实际操作和观察结果,提高对Maple软件的运用能力。

2. 实验原理常微分方程是描述物理、化学、工程等领域中的连续变化过程的常见数学工具。

解常微分方程可以帮助我们理解系统的演化规律,从而进行预测和控制。

Maple是一款强大的数学软件,其中包含了丰富的求解常微分方程的函数。

通过输入常微分方程的表达式,Maple可以直接给出解析解或数值解。

在本实验中,我们将使用Maple来解常微分方程。

3. 实验步骤3.1 安装Maple软件3.2 打开Maple软件双击桌面上的Maple图标,打开软件。

3.3 输入常微分方程点击菜单栏中的"输入",选择"数学输入",在弹出的对话框中输入常微分方程的表达式。

例如,我们要解的方程是一阶线性常微分方程`dy/dx + y = 0`,则输入表达式为:diff(y(x),x) + y(x) = 03.4 求解方程点击菜单栏中的"执行",选择"执行工作表",Maple将根据输入的方程进行求解。

3.5 查看解析解或数值解Maple会给出方程的解析解或数值解。

根据实验需求,可以选择相应的解进行查看和分析。

3.6 导出结果点击菜单栏中的"文件",选择"导出为",选择导出格式和保存路径,点击"保存",将结果导出为文档或图像文件。

4. 实验结果根据实验中输入的常微分方程,Maple求解得到如下解析解:y(x) = C exp(-x)其中C为任意常数。

5. 实验总结通过本次实验,我们研究了使用Maple软件求解常微分方程的方法。

Maple的强大功能和简便操作使得解常微分方程变得更加容易。

通过实际操作,我们可以深入理解常微分方程的解法和物理意义。

第7章 常微分方程数值解法

第7章  常微分方程数值解法

代入(6―3)式得
h yi 1 yi [ f ( xi , yi ) f ( xi 1 , yi 1 )] 2 i 0,1, 2, , n 1
(6―5)
这样得到的点列仍为一折线,只是用平均斜率 来代替原来一点处的斜率。式(6―5)称为改进的欧拉 公式。
不难发现,欧拉公式(6―3)是关于yi+1 的显式,只
h y xi 1 yi 1 f xi 1 , y xi 1 f xi 1 , yi 1 2 (6―15) h 3 '' f 12
因此
hL h3 y ( xi 1 ) yi 1 y ( xi 1 ) yi 1 f ( ) 2 12 h3 (1 q) y ( xi 1 ) yi 1 f ( ) 12 y ( xi 1 ) yi 1 O ( h 3 )
c 并取 yi 1 yi(1)
(6―7)
虽然式(6―7)仅迭代一次,但因进行了预先估计,
故精度却有较大的提高。 在实际计算时,还常常将式(6―7)写成下列形式:
k1 f ( xi , yi ) k f ( x h, y hk ) i i 1 2 h yi 1 yi 2 (k1 k2 ) i 0,1, 2,
在进行误差分析时,我们假设yi=y(xi),考虑用
yi+1 代替y(x
i+1)而产生截断误差,确定欧拉公式和改
进的欧拉公式的精确度。 设初值问题(6―1)的准确解为y=y(x),则利用泰 勒公式
y ( xi 1 ) y ( xi h ) h2 y ( xi ) hy ( xi ) y ( xi ) 2! h3 y ( xi ) 3!

常微分方程数值解法

常微分方程数值解法

第七章 常微分方程数值解法常微分方程中只有一些典型方程能求出初等解(用初等函数表示的解),大部分的方程是求不出初等解的。

另外,有些初值问题虽然有初等解,但由于形式太复杂不便于应用。

因此,有必要探讨常微分方程初值问题的数值解法。

本章主要介绍一阶常微分方程初值问题的欧拉法、龙格-库塔法、阿达姆斯方法,在此基础上推出一阶微分方程组与高阶方程初值问题的 数值解法;此外,还将简要介绍求解二阶常微分方程值问题的差分方法、试射法。

第一节 欧拉法求解常微分方程初值问题⎪⎩⎪⎨⎧==00)(),(y x y y x f dxdy(1)的数值解,就是寻求准确解)(x y 在一系列离散节点 <<<<<n x x x x 210 上的近似值 ,,,,,210n y y y y{}n y 称为问题的数值解,数值解所满足的离散方程统称为差分格式,1--=i i ix x h 称为步长,实用中常取定步长。

显然,只有当初值问题(1)的解存在且唯一时,使用数值解法才有意义,这一前提条件由下 面定理保证。

定理 设函数()y x f ,在区域+∞≤≤-∞≤≤y b x a D ,:上连续,且在区域D 内满足李普希兹(Lipschitz)条件,即存在正数L ,使得对于R 内任意两点()1,y x 与()2,y x ,恒有()()2121,,y y L y x f y x f -≤-则初值问题(1)的解()x y 存在并且唯一。

一、欧拉法(欧拉折线法)若将函数)xy 在点nx处的导数()n x y '用两点式代替, 即()hx y x y x y n n n )()(1-≈'+,再用n y 近似地代替()n x y ,则初值问题(1)变为⎩⎨⎧==++=+ ,2,1,0),()(001n x y y y x hf y y n n n n(2)(2)式就是著名的欧拉(Euler)公式。

以上方法称 为欧 拉法或欧拉折线法。

实验报告七常微分方程初值问题的数值解法

实验报告七常微分方程初值问题的数值解法

浙江大学城市学院实验报告课程名称数值计算方法实验项目名称常微分方程初值问题的数值解法 实验成绩指导老师签名日期2015/12/16 一.实验目的和要求1. 用Matlab 软件掌握求微分方程数值解的欧拉方法和龙格-库塔方法; 2. 通过实例学习用微分方程模型解决简化的实际问题;二.实验内容和原理编程题2-1要求写出Matlab 源程序m 文件,并有适当的注释语句;分析应用题2-2,2-3,2-4,2-5要求将问题的分析过程、Matlab 源程序和运行结果和结果的解释、算法的分析写在实验报告上; 2-1 编程编写用向前欧拉公式和改进欧拉公式求微分方程数值解的Matlab 程序,问题如下:在区间[],a b 内(1)N +个等距点处,逼近下列初值问题的解,并对程序的每一句添上注释语句; Euler 法y=eulera,b,n,y0,f,f1,b1改进Euler 法y=eulerproa,b,n,y0,f,f1,b1 2-2 分析应用题假设等分区间数100n =,用欧拉法和改进欧拉法在区间[0,10]t ∈内求解初值问题()()20(0)10y t y t y '=-⎧⎨=⎩并作出解的曲线图形,同时将方程的解析解也画在同一张图上,并作比较,分析这两种方法的精度; 2-3 分析应用题用以下三种不同的方法求下述微分方程的数值解,取10h = 画出解的图形,与精确值比较并进行分析; 1欧拉法; 2改进欧拉法; 3龙格-库塔方法;2-4 分析应用题考虑一个涉及到社会上与众不同的人的繁衍问题模型;假设在时刻t 单位为年,社会上有人口()x t 人,又假设所有与众不同的人与别的与众不同的人结婚后所生后代也是与众不同的人;而固定比例为r 的所有其他的后代也是与众不同的人;如果对所有人来说出生率假定为常数b ,又如果普通的人和与众不同的人的婚配是任意的,则此问题可以用微分方程表示为:其中变量()()()i p t x t x t =表示在时刻t 社会上与众不同的人的比例,()i x t 表示在时刻t 人口中与众不同的人的数量;1假定(0)0.01,0.02p b ==和0.1r =,当步长为1h =年时,求从0t =到50t =解()p t 的近似值,并作出近似解的曲线图形;2精确求出微分方程的解()p t ,并将你当50t =时在分题b 中得到的结果与此时的精确值进行比较; MATLAB 相关函数求微分方程的解析解及其数值的代入dsolve‘egn1’,‘egn2’,‘x ’ subsexpr,{x,y,…},{x1,y1,…}其中‘egn i ’表示第i 个方程,‘x ’表示微分方程中的自变量,默认时自变量为t ; subs 命令中的expr 、x 、y 为符合型表达式,x 、y 分别用数值x1、x2代入; >>symsxyz>>subs'x+y+z',{x,y,z},{1,2,3} ans= 6>>symsx>>subs'x^2',x,2 ans= 4>>s=dsolve‘12Dy y ∧=+’,‘(0)1y =’,‘x ’ ans= >>symsx >>subss,x,2 ans=右端函数(,)f x y 的自动生成f=inline ‘expr ’,’var1’,‘var2’,……其中’expr ’表示函数的表达式,’var1’,‘var2’表示函数表达式中的变量,运行该函数,生成一个新的函数表达式为fvar1,var2,……; >>f=inline'x+3y','x','y' f=Inlinefunction: fx,y=x+3y >>f2,3 ans= 114,5阶龙格-库塔方法求解微分方程数值解t,x=ode45f,ts,x0,options其中f 是由待解方程写成的m 文件名;x0为函数的初值;t,x 分别为输出的自变量和函数值列向量,t的步长是程序根据误差限自动选定的;若ts=t0,t1,t2,…,tf,则输出在自变量指定值,等步长时用ts=t0:k:tf,输出在等分点;options 用于设定误差限可以缺省,缺省时设定为相对误差310-,绝对误差610-,程序为:options=odeset ‘reltol ’,rt,’abstol ’,at,这里rt,at 分别为设定的相对误差和绝对误差;常用选项见下表;选项名 功能 可选值 省缺值 AbsTol 设定绝对误差正数 RelTol 设定相对误差 正数InitialStep 设定初始步长 正数 自动 MaxStep设定步长上界正数MaxOrder 设定ode15s 的最高阶数 1,2,3,4,5 5 Stats 显示计算成本统计 on,off off BDF 设定ode15s 是否用反向差分on,offoff例:在命令窗口执行>>odefun =inline ‘2*y t y -’,‘t ’,‘y ’;>>[],45(,[0,4],1)t y ode odefun =;ans=>>t y ‘o-’,%解函数图形表示>>45(,[0,4],1)ode odefun %不用输出变量,则直接输出图形 >>[],45(,0:4,1)t y ode odefun =;[],t yans=三.操作方法与实验步骤包括实验数据记录和处理2-1编程编写用向前欧拉公式和改进欧拉公式求微分方程数值解的Matlab 程序,问题如下:在区间[],a b 内(1)N +个等距点处,逼近下列初值问题的解,并对程序的每一句添上注释语句; Euler 法y=eulera,b,n,y0,f,f1,b1改进Euler 法y=eulerproa,b,n,y0,f,f1,b1Euler 法y=eulera,b,n,y0,f,f1,b1 y=zeros1,n+1; y1=y0; h=b-a/n; x=a:h:b; fori=1:n; yi+1=yi+hfxi,yi; end plotx,y holdon%求微分方程的精确解 x1=linspacea,b,100; '精确解为' s=dsolvef1,b1,'x' symsxy1=zeros1,100; for i=1:100y1i=subss,x,x1i; endplotx1,y1,'r'title'红色代表精确解'改进Euler 法y=eulerproa,b,n,y0,f,f1,b1 %求微分方程的数值解 y=zeros1,n+1; y1=y0; h=b-a/n; x=a:h:b; fori=1:n; T1=fxi,yi; T2=fxi+1,yi+hT1; yi+1=yi+h/2T1+T2; end plotx,y holdon%求微分方程的精确解 x1=linspacea,b,100; '精确解为' s=dsolvef1,b1,'x' symsxy1=zeros1,100; fori=1:100 y1i=subss,x,x1i; endplotx1,y1,'r'title'红色代表精确解' 2-2分析应用题假设等分区间数100n =,用欧拉法和改进欧拉法在区间[0,10]t ∈内求解初值问题()()20(0)10y t y t y '=-⎧⎨=⎩并作出解的曲线图形,同时将方程的解析解也画在同一张图上,并作比较,分析这两种方法的精度;1向前欧拉法>>euler0,10,100,10,inline'y-20','x','y','Dy=y-20','y0=10' ans= 精确解为 s= 20-10expx ans= +005Columns1through8(2)改进欧拉法>>eulerpro0,10,100,10,inline'y-20','x','y','Dy=y-20','y0=10' ans= 精确解为 s= 20-10expx ans= +005Columns1through8改进欧拉法的精度比向前欧拉法更高; 2-3分析应用题用以下三种不同的方法求下述微分方程的数值解,取10h = 画出解的图形,与精确值比较并进行分析; 1欧拉法; 2改进欧拉法;2-4分析应用题考虑一个涉及到社会上与众不同的人的繁衍问题模型;假设在时刻t 单位为年,社会上有人口()x t 人,又假设所有与众不同的人与别的与众不同的人结婚后所生后代也是与众不同的人;而固定比例为r 的所有其他的后代也是与众不同的人;如果对所有人来说出生率假定为常数b ,又如果普通的人和与众不同的人的婚配是任意的,则此问题可以用微分方程表示为:其中变量()()()i p t x t x t =表示在时刻t 社会上与众不同的人的比例,()i x t 表示在时刻t 人口中与众不同的人的数量;1假定(0)0.01,0.02p b ==和0.1r =,当步长为1h =年时,求从0t =到50t =解()p t 的近似值,并作出近似解的曲线图形;2精确求出微分方程的解()p t ,并将你当50t =时在分题b 中得到的结果与此时的精确值进行比较;1>>euler0,50,50,,inline'','t','p','Dp=','p0= 1' ans= 精确解为 s=1-99/100expx/500 ans=Columns1through82>>dsolve'Dp=','p0=','t' ans=1-99/100expt/500 >>1-99/100exp ans=与欧拉法求得的精确值差0,0001四.实验结果与分析。

常微分方程的数值解法与实际应用研究

常微分方程的数值解法与实际应用研究

常微分方程的数值解法与实际应用研究引言:常微分方程是数学中一种重要的数学工具,广泛应用于物理、经济、生物等领域的实际问题的数学建模。

在解析求解常微分方程存在困难或不可行的情况下,数值解法提供了一种有效的求解方法,并被广泛应用于实际问题的研究中。

本文将介绍常微分方程的数值解法以及一些实际应用的研究案例。

一、常微分方程的数值解法:1. 欧拉法:欧拉法是一种基础的数值解法,通过将微分方程离散化,近似得到方程的数值解。

欧拉法的基本思想是根据微分方程的导数信息进行近似计算,通过逐步迭代来逼近真实解。

但是欧拉法存在截断误差较大、收敛性较慢等问题。

2. 改进的欧拉法(改进欧拉法推导过程略):为了解决欧拉法的问题,改进的欧拉法引入了更多的导数信息,改善了截断误差,并提高了算法的收敛速度。

改进欧拉法是一种相对简单而可靠的数值解法。

3. 四阶龙格-库塔法:四阶龙格-库塔法是常微分方程数值解法中最常用和最经典的一种方法。

通过多次迭代,四阶龙格-库塔法可以获得非常精确的数值解,具有较高的精度和稳定性。

二、常微分方程数值解法的实际应用研究:1. 建筑物的结构动力学分析:建筑物的结构动力学分析需要求解一些动力学常微分方程,例如考虑结构的振动和应力响应。

利用数值解法可以更好地模拟建筑物的振动情况,并对其结构进行安全性评估。

2. 生态系统模型分析:生态系统模型通常包含一系列描述物种数量和相互作用的微分方程。

数值解法可以提供对生态系统不同时间点上物种数量和相互作用的变化情况的模拟和预测。

这对于环境保护、物种保护以及生态系统可持续发展方面具有重要意义。

3. 电路模拟与分析:电路模拟与分析通常涉及电路中的电容、电感和电阻等元件,这些元件可以通过常微分方程进行建模。

数值解法可以提供电路中电压、电流等关键参数的模拟和分析,对电路设计和故障诊断具有重要帮助。

4. 化学反应动力学研究:化学反应动力学研究需要求解涉及反应速率、物质浓度等的微分方程。

常微分方程的数值解法

常微分方程的数值解法

常微分方程的数值解法常微分方程是研究变量的变化率与其当前状态之间的关系的数学分支。

它在物理、工程、经济等领域有着广泛的应用。

解常微分方程的精确解往往十分困难甚至不可得,因此数值解法在实际问题中起到了重要的作用。

本文将介绍常见的常微分方程的数值解法,并比较其优缺点。

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

它基于近似替代的思想,将微分方程中的导数用差商近似表示。

具体步骤如下:(1)确定初始条件,即问题的初值。

(2)选择相应的步长h。

(3)根据微分方程的定义使用近似来计算下一个点的值。

欧拉方法的计算简单,但是由于误差累积,精度较低。

2. 改进欧拉方法为了提高欧拉方法的精度,改进欧拉方法应运而生。

改进欧拉方法通过使用两个点的斜率的平均值来计算下一个点的值。

具体步骤如下:(1)确定初始条件,即问题的初值。

(2)选择相应的步长h。

(3)根据微分方程的定义使用近似来计算下一个点的值。

改进欧拉方法相较于欧拉方法而言,精度更高。

3. 龙格-库塔法龙格-库塔法(Runge-Kutta)是常微分方程数值解法中最常用的方法之一。

它通过迭代逼近精确解,并在每一步中计算出多个斜率的加权平均值。

具体步骤如下:(1)确定初始条件,即问题的初值。

(2)选择相应的步长h。

(3)计算各阶导数的导数值。

(4)根据权重系数计算下一个点的值。

与欧拉方法和改进欧拉方法相比,龙格-库塔法的精度更高,但计算量也更大。

4. 亚当斯法亚当斯法(Adams)是一种多步法,它利用之前的解来近似下一个点的值。

具体步骤如下:(1)确定初始条件,即问题的初值。

(2)选择相应的步长h。

(3)通过隐式或显式的方式计算下一个点的值。

亚当斯法可以提高精度,并且比龙格-库塔法更加高效。

5. 多步法和多级法除了亚当斯法,还有其他的多步法和多级法可以用于解常微分方程。

多步法通过利用多个点的值来逼近解,从而提高精度。

而多级法则将步长进行分割,分别计算每个子问题的解,再进行组合得到整体解。

数值分析课程设计实验七

数值分析课程设计实验七

数值分析课程设计实验七一、教学目标本课程的学习目标主要包括知识目标、技能目标和情感态度价值观目标。

知识目标要求学生掌握数值分析的基本原理和方法,了解相关数学背景知识。

技能目标则要求学生能够运用数值分析方法解决实际问题,提高解决问题的能力。

情感态度价值观目标则是培养学生的科学精神、创新意识和团队合作能力。

通过本课程的学习,学生将能够:1.掌握数值分析的基本原理和方法,如插值法、逼近法、数值微积分、线性代数的数值方法等。

2.了解相关数学背景知识,如函数、极限、微积分、线性代数等。

3.运用数值分析方法解决实际问题,如数值求解微分方程、线性方程组等。

4.培养科学精神、创新意识和团队合作能力。

二、教学内容本课程的教学内容主要包括数值分析的基本原理、方法和应用。

具体安排如下:1.第一章:数值分析导论。

介绍数值分析的基本概念、误差、稳定性等基本原理。

2.第二章:插值法。

包括一元插值、多元插值、样条插值等方法。

3.第三章:逼近法。

包括最小二乘法、最佳逼近等方法。

4.第四章:数值微积分。

包括数值积分、数值微分等方法。

5.第五章:线性代数的数值方法。

包括线性方程组的求解、特征值问题的求解等。

6.第六章:非线性方程和方程组的求解。

包括迭代法、牛顿法、弦截法等。

7.第七章:常微分方程的数值解法。

包括初值问题的求解、边界值问题的求解等。

三、教学方法本课程的教学方法主要包括讲授法、讨论法、案例分析法和实验法。

1.讲授法:通过教师的讲解,使学生掌握数值分析的基本原理和方法。

2.讨论法:引导学生进行思考和讨论,提高学生的理解能力和解决问题的能力。

3.案例分析法:通过分析实际案例,使学生了解数值分析方法在工程和科研中的应用。

4.实验法:通过上机实验,让学生亲手操作,加深对数值分析方法的理解和掌握。

四、教学资源本课程的教学资源主要包括教材、参考书、多媒体资料和实验设备。

1.教材:选用《数值分析》作为主要教材,辅助以相关参考书。

2.参考书:为学生提供丰富的学习资料,以便深入理解和掌握数值分析的知识。

Cht7 常微分方程数值解法1_2017112822

Cht7 常微分方程数值解法1_2017112822

i 1
f (xn , yn )
i 1
Ki
f (xn aih, yn h bij K j )
j 1
(i 2, 3
, p)
其中ai,bij , ci都是参数,确定它们的原则是使近似公式
在(xn , yn )处的Taylor展开式与y(x)在xn处的Taylor展开式 的前面项尽可能多地重合。
yn1 yn h(c1K1 c2K2 )
xn dx
xn
用yn1, yn代替y(xn1), y(xn ), 对右端积分采用 取左端点的矩形公式
则有
xn1 xn
f
(x,
y)dx
hf
(xn , yn )
yn1 yn hf (xn , yn ) (n 0,1, ) 14
C 在xn 附近 y(x) 的 Taylor 展开:
y(xn
h)
y(xn)
当p 2时,近似公式为
K1
f (xn , yn )
K2 f (xn a2h, yn hb21K451)
上式在(xn , yn )处的Taylor展开式为
yn1 yn h[c1 f (xn , yn ) c2 f (xn a2h, yn hb21 f (xn , yn ))]
yn h{c1 f (xn , yn ) c2[ f (xn , yn ) a2hfx (xn , yn )
y0 1,yn1 yn h yn1
因此,在第n步,近似解为yn 1 h n。
对负的,要求
1 h 1 1
这对一切正的步长h都成立。
30
三、梯形公式
微分方程y f (x, y)等价于积分方程
y
xn1
y
xn

数学建模-- 常微分方程数值解及实验

数学建模-- 常微分方程数值解及实验

注意:
1、在解n个未知函数的方程组时,x0和x均为n维向量, m-文件中的待解方程组应以x的分量形式写成. 2、使用Matlab软件求数值解时,高阶微分方程必须 等价地变换成一阶微分方程组.

d 2x dx 2 x 0 2 ( x 1) dt dt x (0 ) 2; x '(0 ) 0
实际应用时,与欧拉公式结合使用:
0 y i( 1) y i hf ( x i , y i ) h ( k 1) (k ) y i 1 y i [ f ( x i , y i ) f ( x i 1 , y i 1 )] k 0 ,1, 2 , 2
•欧拉法是一阶公式,改进的欧拉法是二阶公式。
•龙格-库塔法有二阶公式和四阶公式。 •线性多步法有四阶阿达姆斯外插公方程的数值解
[t,x]=solver(’f’,ts,x0,options)
自变 量值 函数 值
ode45 ode23 ode113 ode15s ode23s
1、建立m-文件vdp1.m如下: function dy=vdp (t,y) dy=zeros(2,1); dy(1)=y(2); dy(2)=(1-y(1)^2)*y(2)-y(1); 2、取t0=0,tf=20,输入命令: [T,Y]=ode15s('vdp1',[0 20],[2 0]); plot(T,Y(:,1),'-')
y ( x i 1 ) y ( x i )

xi 1
f ( t , y ( t )) dt
x i 1 x i 2
xi
[ f ( x i , y ( x i )) f ( x i 1 , y ( x i 1 ))]

常微分方程的数值解法实验报告

常微分方程的数值解法实验报告

常微分方程的数值解法实验报告实验报告:常微分方程的数值解法摘要:常微分方程(ODE)是描述动力学系统中物理量随时间变化的数学方程,广泛应用于自然科学和工程领域。

然而,对于一些复杂的非线性ODE,很难找到解析解。

因此,我们需要数值解法来求解这些方程。

本实验报告将介绍四种常见的常微分方程数值解法,分别是欧拉法、改进的欧拉法、四阶龙格-库塔法和自适应步长的龙格-库塔法,并通过数值实验比较它们的精度和效率。

1.引言在实际问题中,许多物理量的变化规律可以由常微分方程描述。

然而,对于复杂的非线性ODE,很难找到解析解。

因此,为了解决这类问题,我们需要借助数值方法来求解。

2.方法本实验采用四种常见的常微分方程数值解法:欧拉法、改进的欧拉法、四阶龙格-库塔法和自适应步长的龙格-库塔法。

(1)欧拉法是最简单的数值解法,通过将微分方程转化为差分方程,使用离散的步长来近似微分方程。

(2)改进的欧拉法在欧拉法的基础上进行了改进,使用预估-校正的方法来提高精度。

(3)四阶龙格-库塔法是一种经典的数值解法,通过利用不同步长处的斜率来近似微分方程,具有较高的精度。

(4)自适应步长的龙格-库塔法是在四阶龙格-库塔法的基础上改进而来的,根据步长的大小自适应地选择不同的步长,同时保证精度和效率。

3.实验设计为了比较这四种数值解法的精度和效率,我们设计了两个实验。

实验一是求解一阶常微分方程:dy/dx = -2x,初始条件y(0) = 1,解析解为y = 1 - x^2、实验二是求解二阶常微分方程:d^2y/dx^2 + y = 0,初始条件y(0) = 0,dy/dx(0) = 1,解析解为y = sin(x)。

4.结果与分析实验一中,比较四种数值解法在不同步长下的近似解和解析解,计算其误差。

实验结果表明,四阶龙格-库塔法和自适应步长的龙格-库塔法具有较高的精度,而欧拉法和改进的欧拉法的精度较低。

实验二中,我们比较四种数值解法在不同步长下的近似解和解析解,并计算其误差。

实验七用matlab求解常微分方程(最新整理)

实验七用matlab求解常微分方程(最新整理)

实验七 用matlab 求解常微分方程一、实验目的:1、熟悉常微分方程的求解方法,了解状态方程的概念;2、能熟练使用dsolve 函数求常微分方程(组)的解析解;3、能熟练应用ode45\ode15s 函数分别求常微分方程的非刚性、刚性的数值解;4、掌握绘制相图的方法二、预备知识:1.微分方程的概念未知的函数以及它的某些阶的导数连同自变量都由一已知方程联系在一起的方程称为微分方程。

如果未知函数是一元函数,称为常微分方程。

常微分方程的一般形式为),,",',,()(=n y y y y t F 如果未知函数是多元函数,成为偏微分方程。

联系一些未知函数的一组微分方程组称为微分方程组。

微分方程中出现的未知函数的导数的最高阶解数称为微分方程的阶。

若方程中未知函数及其各阶导数都是一次的,称为线性常微分方程,一般表示为)()(')()(1)1(1)(t b y t a y t a y t a y n n n n =++++-- 若上式中的系数ni t a i ,,2,1),( =均与t 无关,称之为常系数。

2.常微分方程的解析解有些微分方程可直接通过积分求解.例如,一解常系数常微分方程1+=y dt dy可化为dt y dy=+1,两边积分可得通解为1-=tce y .其中c 为任意常数.有些常微分方程可用一些技巧,如分离变量法,积分因子法,常数变异法,降阶法等可化为可积分的方程而求得解析解.线性常微分方程的解满足叠加原理,从而他们的求解可归结为求一个特解和相应齐次微分方程的通解.一阶变系数线性微分方程总可用这一思路求得显式解。

高阶线性常系数微分方程可用特征根法求得相应齐次微分方程的基本解,再用常数变异法求特解。

一阶常微分方程与高阶微分方程可以互化,已给一个n 阶方程),,",',()1()(-=n n y y y t f y 设)1(21,,',-===n n y y y y y y ,可将上式化为一阶方程组⎪⎪⎪⎩⎪⎪⎪⎨⎧====-),,,,(''''2113221n n nn y y y t f y yy y y y y反过来,在许多情况下,一阶微分方程组也可化为高阶方程。

第七章 常微分方程数值解法.

第七章  常微分方程数值解法.
本章解决的问题:一阶常微分方程的初值问题
y f ( x, y), x [a,b]

y(
x0
)

y0
23
7.1 欧拉法和改进的欧拉法
欧拉公式

yi1 yi y0 y( x0 )
h
f
(xi ,
yi )
,
i

0,1,2,
改进的欧拉公式

yi
1

26
引言:
公式构造思想:从泰勒公式出发,寻找更高阶的 数值公式。
例如,泰勒公式计算到二阶可得
y(x + h) = y(x) + yⅱ(x)h + 1 y ?(x)h2 + O(h3) 2!

ìïïïíïïïî
y¢(x) = yⅱ(x) =
f (x, y(x)) df (x, y(x))
dx
=
fx (x, y(x)) +
可证明预测-校正公式的截断误差也为 O(h3)。
18
7.1.2 改进的欧拉法及预测-校正公式
例 取步长h=0.2,用改进的欧拉法的预测-校正公
式求解初值问题的数值解y1 , y2 .
ìïïíïïî
y¢= x + y(0) = 1
y

f (x, y) = x + y, x0 = 0, y0 = 1
预测-校正公式具体是
y( p) 2
=
0.2x1 +
1.2 y1
=
0.2?
0.2
1.2? 1.24
1.528
y2 = y1 + 0.1[(x1 + y1) + (x2 + y2( p) )] = 1.24 + 0.1(0.2 + 1.24 + 0.4 + 1.528) = 1.5768

常微分方程的数值解法

常微分方程的数值解法

常微分方程的数值解法常微分方程的数值解法,这个话题一听就让人感觉有点儿“高大上”,是不是?别急,咱们今天就把这个看似复杂的东西聊得轻松点。

想象一下,你的生活中随时都在用到数学,走路时的速度、车子的加速,甚至你做的美食,背后其实都藏着一些微分方程的身影。

说白了,常微分方程就是描述一个变量随另一个变量变化的关系。

听起来是不是有点儿抽象?咱们可以用一些简单的例子来说明。

比如说,想象一下你在家里的花园里浇水,植物的生长就可以用微分方程来描述。

你浇水越多,植物长得越快,没错吧?这时候,就有个问题来了:你浇水的频率和量应该是多少呢?这就涉及到微分方程了。

可是,现实生活中,咱们并不能总是拿个公式就能算出结果。

假如你想要把这个过程模拟出来,找出植物生长的规律,这时候数值解法就派上用场了。

数值解法听起来很复杂,但实际上它的核心思想就是通过一些巧妙的方法把这些难以直接求解的微分方程转化为我们能够计算的形式。

就像是你要吃一个巨大的蛋糕,如果直接咬下去,肯定会噎着;所以,聪明的你会选择先把蛋糕切成小块,再慢慢享用。

这就是数值解法的思路。

它把复杂的事情分解成简单的小步骤,让我们能一个一个地解决。

常见的数值解法有很多,比如欧拉法、龙格库塔法。

这些名字听起来像是外星人的语言,其实很简单。

以欧拉法为例,就像在慢慢走路,每一步都非常稳当。

你先确定一个初始值,然后根据微分方程的斜率来推算下一步的值。

一步一步走,虽然速度慢点儿,但稳妥得很,不容易出错。

只要你把每一步都计算好,最终就能到达目标。

再说说龙格库塔法,这个名字听起来像是在做科学实验,其实它是一种更高效的方法。

就好比你打游戏,普通模式下你需要慢慢磨练,而龙格库塔法就像是开了个外挂,让你更快地达到目标。

这个方法通过在每一步中做多次的预测和修正,来提高精度,减少误差。

简单来说,就是“多看看再决定”,这样能让你走得更稳、更远。

咱们在应用这些方法时,当然得注意一些细节。

比如说,步长的选择。

第7讲 常微分方程初值问题数值解法

第7讲 常微分方程初值问题数值解法
然后用 y n 代替 y ( x n ) ,即得
yn1 yn hf ( xn1 , yn1 ) n 0,1, 2,, N 1
称上述公式为向后Euler 公式。 向后Euler 公式为隐式格式,需要利用迭代法求解
10
数值分析
第7讲 常微分方程初值问题数值解法
Euler方法的几何意义
③ 图形解
y
•龙格-库塔法
o
x
2
数值分析
第7讲 常微分方程初值问题数值解法
§1 引言 初值问题及其数值解的概念
dy f ( x , y ); a x b 一阶常微分方程初值问题: d x ( ) y( x ) y 0 0
常用的一些 解析解法:
分离变量法、变量代换、 常数变易法、Lapalace变换等
(3)
用Taylor多项式近似并可估计误差
h
2
y( x n 1 ) y( x n h) y( x n ) hy' ( x n )
y' ' ( ) h
2
2! y' ' ( x n )
y( x n ) hy' ( x n )
2!
进一步: 令
y n 1 y( x n 1 ) , y n y ( x n )
计算结果
(1)步长h=0.1的数值解比较表
x 0 0.1
0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
精确解 1 1.0048
1.0187 1.0408 1.0703 1.1065 1.1488 1.1966 1.2493 1.3066 1.3679
向前欧拉 1 1

常微分方程初值问题的数值解法

常微分方程初值问题的数值解法

常微分方程初值问题的数值解法在实际应用中,对于某些微分方程,我们并不能直接给出其解析解,需要通过数值方法来求得其近似解,以便更好地理解和掌握现象的本质。

常微分方程初值问题(IVP)即为一种最常见的微分方程求解问题,其求解方法有多种,本文将对常微分方程初值问题的数值解法进行较为详细的介绍。

一、欧拉法欧拉法是最基本的一种数值解法,它采用泰勒级数展开并截断低阶项,从而获得一个差分方程近似求解。

具体来讲,设 t 为独立变量,y(t) 为函数 y 关于 t 的函数,方程为:$$y'(t) = f(t, y(t)), \qquad y(t_0) = y_0$$其中 f(t,y(t)) 为已知的函数,y(t_0) 为已知的初值。

将函数 y(t) 进行泰勒级数展开:$$y(t+h) = y(t) + hf(t, y(t)) + O(h^2)$$其中 h 表示步长,O(h^2) 表示其他高阶项。

为了使误差较小,一般取步长 h 尽可能小,于是我们可以用欧拉公式表示数值解:$$y_{n+1} = y_n + hf(t_n, y_n), \qquad y_0 = y(t_0)$$欧拉法的优点是容易理解和实现,但是由于截取低阶项且使用的单步法,所以误差较大,精度较低,在具体应用时需要慎重考虑。

二、龙格-库塔法龙格-库塔法(Runge-Kutta method)是一种多步法,比欧拉法更加精确。

龙格-库塔法的主要思想是使用不同的插值多项式来计算近似解,并且将时间步长分解,每次计算需要多次求解。

以下简要介绍二阶和四阶龙格-库塔法。

二阶龙格-库塔法将时间步长 h 分解成两步 h/2,得到近似解表达式:$$\begin{aligned} k_1 &= hf(t_n, y_n)\\ k_2 &= hf(t_n+h/2,y_n+k_1/2)\\ y_{n+1} &= y_n+k_2+O(h^3)\\ \end{aligned}$$四阶龙格-库塔法四阶龙格-库塔法是龙格-库塔法中应用最为广泛的一种方法,其需要计算的中间值较多,但是具有更高的精度。

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

,试试编程利用欧拉公式画出 的速度曲线(取).
实验算例
1. 欧拉法 利用matlab中的一个循环语句即可实现欧拉法中的利用第一个节点计
算随后所有节点的工作. function Euler %输出节点的x值和y值, clc %------输入(x0,xn)为求解区间,y0=y(x0)为初始条件,n为区间的 等分个数------x0=0; y0=1; xn=0.5; n=50; %-------------------------------------------------------------------y(1)=y0; h=(xn-x0)/n; x=x0:h:xn; disp('欧拉法结果如下:') disp(['y','(',num2str(x0),')','=',num2str(y0)]); for i=2:n+1 %利用循环语句实现欧拉法利用第一个节 点的函数值计算 y(i)=y(i-1)+h*f(x0,y(i-1)); %随后所有节点函数值的过程. x0=x0+h; disp(['y','(',num2str(x0),')','=',num2str(y(i))]); end plot(x,y,'ro-'); %利用求出的x坐标和y坐标画出解的 近似图形. xlabel('x') ylabel('y') title('欧拉法求出的折线') hold on %-------若原微分方程的理论解能求出,则可画出积分曲线比 较--------------x=0:0.01:0.5; y=x+exp(-x); plot(x,y,'b-') hold off %-----------------------------------------------------------------function y=f(x,z) y=-z+x+1;
欧拉法和改进欧拉法的效果比较图为
实验习题
1. 利用欧拉法程序,求解初值问题 (注意:若理论解未知,解曲线画不出来,应删掉相关程序语句) (1) (2) 并将欧拉法求出的折线和改进欧拉法求出的折线放在同一个图中,比较 效果。 2. 某跳伞者在 时刻从飞机上跳出,假设初始时刻的垂直速度为0,且跳伞者垂直下落.已 知空气阻力为 ,其中c为常数,v为垂直速度,向下方向为正.可求得跳伞者的速度满足微分 方程方程 ,g为重力加速度.若此跳伞者质量为 ,且已知
实验七 常微分方程数值解法
实验目的
1、 掌握常微分方程数值解法中欧拉法和改进欧拉法的基本原理 和算法; 2、 培养Matlab数学软件的编程与上机调试能力.
实验课时
4课时
实验准备
初值问题 的解析解法在常微分方程中有介绍,但是实际中遇到的常微分方程一般 很难得到解析解,所以我们一般用数值方法求出它的数值解. 数值解法的 结果是自变量在一系列离散点处的函数的近似值,一般情况下取步长为 定数. 1.欧拉法 利用一阶微分公式 可得差分方程 其中, , ,则得到初值问题的数值解. 2.后退欧拉法 利用一阶微分公式 可得差分方程 此为后退欧拉法. 4. 梯形求积公式 利用数值积分 可得梯形公式 5. 改进欧拉公式 一般来讲,隐式格式要比显示格式具有较好的数值稳定性,所以常常被 采用,但是为了避免隐式格式的计算量,一般采用预估-校正的方法.对于梯 形公式,用欧拉公式预估再用梯形公式校正,可得改进欧拉公式:
y(1)=y0; h=(xn-x0)/n; x=x0:h:xn; disp('改进欧拉法结果如下:') disp(['y','(',num2str(x0),')','=',num2str(y0)]); for i=2:n+1 %利用循环语句实现欧拉法利用第一个节点的 函数值计算 k(1)=f(x0,y(i-1)); k(2)=f(x0,y(i-1)+h*k(1)); y(i)=y(i-1)+h*(1/2*k(1)+1/2*k(2)); %随后所有节点函数值的过 程. x0=x0+h; disp(['y','(',num2str(x0),')','=',num2str(y(i))]); end plot(x,y,'k*-'); %利用求出的x坐标和y坐标画出解的近 似图形. xlabel('x') ylabel('y') title('改进欧拉法求出的折线') hold on %-------若原微分方程的理论解能求出,则可画出积分曲线比较-------------x=0:0.01:0.5; y=x+exp(-x); plot(x,y,'b-') %-----------------------------------------------------------------legend('改进欧拉法求出的折线','解曲线') hold off function y=f(x,z) y=-z+x+1; 对于例1的结果为 输出图像为
例1. 用欧拉法求解初值问题, 并画出解图形. >> 输出图像为
另外,还可以改变输入的参数n,加密节点,得到更精确的数值解. 2. 改进欧拉法 function Gaijin_Euler %输出节点的x值和y值, clc close all %------输入(x0,xn)为求解区间,y0=y(x0)为初始条件,n为区间的等 分个数------x0=0; y0=1; xn=0.5; n=50; %--------------------------------------------------------------------
相关文档
最新文档