数值分析常微分方程求解实验

合集下载

常微分方程数值解实验

常微分方程数值解实验
X=dsolve(‘f1’,’f2’,…) 函数dsolve用来解符号常微分方程、方程组,如果没有初始条件,则求 出通解,如果有初始条件,则求出特解。
有大量的常微分方程虽然从理论上讲,其解是存在的,但我们却无 法求出其解析解,此时,我们需要寻求方程的数值解,在求常微分方程 数值解方面,MATLAB具有丰富的函数,我们将其统称为solver,其一般 格式为:
Image
Image
如果微 分方程 由一个 或多个 高阶常微分方程给出,要得到该方程的数值解,可以将方程转换成一阶 常微分方程组。假设高阶常微分方程的一般形式为y( n) = f ( t, y, yʹ, ⋯,y( n - 1) ),而且函数y(t)的各阶导数初值为y(0),yʹ(0) ,…, y( n - 1) (0)可以选 择一组变量令: x1= y, x2 = yʹ,…, xn = y( n - 1) ,我们就可以把原高阶常微 分方程转换成下面的一阶常微分方程组形式: 而且初值x1(0)=y(0),x2(0)=yʹ(0),…,xn(0)=(0)。 转换以后就可以求原 高阶常微分方程的数值解了。 例2 求微分方程,,的数值解。 对方程进行变换,选择变量 (1) 建立自定义函数 用edit命令建立自定义函数名为f.m,内容为: function y =f(t,x) y=[x(2);x(3);-t^2*x(2)*x(1)^2-t*x(1)*x(3)+exp(t*x(1))]; (2)调用对微分方程数值解ode45函数求解 用edit命令建立一个命令文件f2. m,内容为: >>x0=[2;0;0]; >>[t,y] =ode45(’f’,[0,10],x0);plot(t,y); >>figure; >>plot3(y(:,1),y(:,2), y(:,3))得

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

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

常微分方程的数值解法专业班级:信息软件 姓名:吴中原 学号:120108010002 一、实验目的1、熟悉各种初值问题的算法,编出算法程序;2、明确各种算法的精度与所选步长有密切关系;通过计算更加了解各种 算法的优越性。

二、实验题目1、根据初值问题数值算法,分别选择二个初值问题编程计算;2、试分别取不同步长,考察某节点j x处数值解的误差变化情况; 3、试用不同算法求解某初值问题,结果有何异常; 4、分析各个算法的优缺点。

三、实验原理与理论基础(一) 欧拉法算法设计对常微分方程初始问题(6-1)(6-2)用数值方法求解时,我们总是认为(6-1)、(6-2)的解存在且唯一。

欧拉法是解初值问题的最简单的数值方法。

从(6-2)式由于y (x 0) = y 0已给定,因而可以算出),()('000y x f x y =。

设x 1 = h 充分小,则近似地有:),()(')()(00001y x f x y hx y x y =≈-(6-3)记 ,n ,,i x y y i i 10 )(== 从而我们可以取),(0001y x hf y y ==作为)(1x y 的近似值。

利用1y 及f (x 1, y 1)又可以算出)(2x y 的近似值:),(1112y x hf y y +=一般地,在任意点()h n x n 11+=+处)(x y 的近似值由下式给出),(1n n n n y x hf y y +=+(6-4)这就是欧拉法的计算公式,h 称为步长。

⎪⎩⎪⎨⎧==)( ),(d d 00y x y y x f x y(二)四阶龙格-库塔法算法设计:欧拉公式可以改写为:()111,i i i i y y k k hf x y +=+⎧⎪⎨=⎪⎩,它每一步计算(),f x y 的值一次,截断误差为()2o h 。

改进的欧拉公式可以改写为:()()()11212112,,i i i i i i y y k k k hf x y k hf x h y k +⎧=++⎪⎪=⎨⎪=++⎪⎩,它每一步要计算(),f x y 的值两次,截断误差为()3o h 。

数值分析第九章常微分方程数值解法

数值分析第九章常微分方程数值解法
高斯-赛德尔迭代法
松弛法
通过迭代更新函数值并逐步放松约束 条件来逼近解,适用于刚性和非刚性 问题。
利用线性组合迭代函数值来逼近解, 具有更高的收敛速度和稳定性。
03
数值解法的稳定性分析
数值解法的稳定性定义
数值解法的稳定性是指当微分方程的初值有微小的扰动时, 其数值解的近似值的变化情况。如果数值解在微小扰动下变 化较小,则称该数值方法是稳定的。
更高的精度和稳定性。
数值逼近法
泰勒级数法
将微分方程的解展开为泰勒级数,通过截断级数来逼 近解。
多项式逼近法
利用多项式来逼近微分方程的解,通过选取合适的基 函数和系数来提高逼近精度。
样条插值法
利用样条函数来逼近微分方程的解,具有更好的光滑 性和连续性。
迭代法
雅可比迭代法
通过迭代更新函数值来逼近微分方程 的解,具有简单易行的优点。
初值和边界条件的处理
根据实际问题,合理设定初值和边界 条件,以获得更准确的数值解。
收敛性和误差分析
对数值解进行收敛性和误差分析,评 估解的精度和稳定性。
数值解法的应用案例分析
人口增长模型
通过数值解法求解人口增长模型,预测未来人口数量,为政策制 定提供依据。
化学反应动力学
利用数值解法研究化学反应的动力学过程,模拟反应过程和结果。
数值分析第九章常微分方 程数值解法
• 引言 • 常微分方程数值解法的基本思想 • 数值解法的稳定性分析 • 数值解法的收敛性和误差分析 • 数值解法的实现和应用案例
01
引言
常微分方程的应用背景
自然科学
描述物理、化学、生物等自然 现象的变化规律。
工程领域
控制系统设计、航天器轨道计 算等。

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

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

常微分方程数值解实验报告实验报告:常微分方程数值解1.引言常微分方程(Ordinary Differential Equations, ODEs)是数学领域中一个重要的研究对象,涉及到许多自然科学和工程技术领域的问题。

解常微分方程的数值方法是一种求解差分方程的方法,通过计算机找到方程的近似解,对于模拟和预测连续过程非常有用。

本实验旨在通过数值解法,验证和应用常微分方程的解,并比较不同数值方法的精度和效率。

2.实验目的2.1理解常微分方程的基本概念和数值解法;2.2掌握将常微分方程转化为数值求解问题的基本方法;2.3运用数值解法求解常微分方程;2.4比较不同数值解法的精度和效率。

3.实验内容3.1 欧拉方法(Euler Method)给定一个一阶常微分方程dy/dx=f(x,y),通过将其离散为差分形式,欧拉方法可以通过以下递推公式来求解:y_{n+1}=y_n+h*f(x_n,y_n)其中,h为步长,x_n和y_n为当前的x和y值。

3.2 改进的欧拉方法(Improved Euler Method)改进的欧拉方法使用欧拉方法的斜率的平均值来估计每一步中的斜率。

具体公式如下:k1=f(x_n,y_n)k2=f(x_n+h,y_n+h*k1)y_{n+1}=y_n+h*((k1+k2)/2)3.3 二阶龙格-库塔法(Second-order Runge-Kutta Method)二阶龙格-库塔法通过计算每个步骤中的两个斜率来估计每个步长中的斜率。

具体公式如下:k1=f(x_n,y_n)k2=f(x_n+h/2,y_n+(h/2)*k1)y_{n+1}=y_n+h*k24.实验步骤4.1选取常微分方程,并将其转化为数值求解问题的形式;4.2根据给定的初始条件和步长,使用欧拉方法、改进的欧拉方法和二阶龙格-库塔法求解该方程;4.3比较三种方法的数值解与理论解的差异,并分析其精度和效率;4.4尝试不同的步长,观察相应的数值解的变化。

常微分方程数值解实验

常微分方程数值解实验
刚性
多步法,Gear’s反向
数值积分,精度中等
若ode45失效时,
可尝试使用
ode23s
刚性
一步法,2阶Rosebrock算法,
低精度。
当精度较低时,
计算时间比ode15s短
odefx为显式常微分方程 中的 ,t为求解区间,要获得问题在其他指定点 上的解,则令t=[t0,t1,t2,…](要求 单调),y0初始条件。
MATLAB 中有几个专门用于求解常微分方程的函数,它们的设计思想基于Runge-Kutta方法,基本设计思想为:从改进的欧拉方法比欧拉方法精度高的缘由着手,如果在区间[ x1, xi+1]多取几个点的斜率值,然后求取平均值,则可以构造出精度更高的计算方法。 这些函数主要包括:ode45、ode23、ode15s、ode113、ode23s、ode23t、ode23tb. 其中最常用的是函数ode45,该函数采用变步长四阶五阶Runge-Kutta法求数值解,并采用自适应变步长的求解方法。ode23采用二阶三阶Runge-Kutta法求数值解,与ode45类似,只是精度低一些。ode15s用来求刚性方程组。
43
4月22日
588
666
28
46
4月23日
693
782
35
55
4月24日
774
863
39
64
4月25日
877
954
42
73
4月26日
988
1093
48
76
4月27日
1114
1255
56
78
4月28日
1199
1275
59
78
4月29日

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

数值分析上机实验报告

数值分析上机实验报告

数值分析上机实验报告导言:本次上机实验主要是针对数值分析课程中的一些基本算法进行实验验证。

实验内容包括迭代法、插值法、数值积分和常微分方程的数值解等。

在实验过程中,我们将会使用MATLAB进行算法的实现,并对结果进行分析。

一、迭代法迭代法是解决函数零点、方程解等问题的常用方法。

我们将选择几个常见的函数进行迭代求根的实验。

(1)二分法二分法是一种简单而有效的迭代求根法。

通过函数在区间两个端点处的函数值异号来确定函数在区间内存在零点,并通过不断缩小区间来逼近零点。

(2)牛顿法牛顿法利用函数的一阶导数和二阶导数的信息来逼近零点。

通过不断迭代更新逼近值,可以较快地求得零点。

实验结果表明,对于简单的函数,这两种迭代法都具有很好的收敛性和稳定性。

但对于一些复杂的函数,可能会出现迭代失效或者收敛速度很慢的情况。

二、插值法插值法是在给定一些离散数据点的情况下,通过构造一个插值函数来逼近未知函数的值。

本实验我们将使用拉格朗日插值和牛顿插值两种方法进行实验。

(1)拉格朗日插值拉格朗日插值通过构造一个多项式函数来逼近未知函数的值。

该多项式经过离散数据点,并且是唯一的。

该方法简单易懂,但插值点越多,多项式次数越高,插值函数的精度也就越高。

(2)牛顿插值牛顿插值利用差商的概念,通过构造一个插值多项式来逼近未知函数的值。

与拉格朗日插值相比,牛顿插值的计算过程更加高效。

但同样要求插值点的选择要合理,否则可能出现插值函数不收敛的情况。

实验结果表明,这两种插值方法都能够很好地逼近未知函数的值。

插值点的选择对插值结果有很大的影响,过多或者过少的插值点都可能导致插值结果偏离真实函数的值。

三、数值积分数值积分是一种将定积分问题转化为数值求和的方法。

本实验我们将使用复合梯形求积法和复合辛普森求积法进行实验。

(1)复合梯形求积法复合梯形求积法将定积分区间等分为若干小区间,然后使用梯形公式对每个小区间进行近似求积,最后将结果相加得到整个定积分的近似值。

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

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

实验算例
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、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验报告
一、实验目的
解初值问题各种方法比较。

二、实验题目
给定初值问题
⎪⎩⎪⎨⎧=≤<+=,
0)1(,21y x xe x y dx dy x , 其精确解为)(e e x y x -=,按
(1)改进欧拉法,步长01.0,1.0==h h ;
(2)四阶标准龙格-库塔法,步长1.0=h ;
求在节点)10,...,2,1(1.01=+=k k x k 处的数值解及其误差,比较各个方法的优缺点。

三、实验原理
改进欧拉法程序,四阶标准龙格-库塔法程序。

四、实验内容及结果
五、实验结果分析
实验2中改进欧拉法和四阶标准龙格-库塔法的比较:
结果的第一个ans是x的值与对应的y的值,第二个ans是精确解x的对应值y,第三个ans 是与精确值的误差百分数。

通过误差百分数的比较,可以明显的发现改进欧拉法比四阶标准龙格-库塔法更精确。

相关文档
最新文档