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

合集下载

常微分方程数值解实验

常微分方程数值解实验
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;

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

数值分析常微分方程初值问题的数值解
计算结果表明,经典四级龙格—库塔法优于改进欧拉法,另外,通过与真值比较可知,欧拉法具有二阶收敛性,四阶龙格-库塔法具有四阶收敛性。
2、分别取步长 ,用显式欧拉法和隐式欧拉法求解初值问题
由结果分析算法的稳定性。(解析解为 )
解:当取步长 ,计算得到以下结果
准确值
显示欧拉法
隐式欧拉法
0
100.0000
100
0.5
0.0000
5776.5
0.0004
当取步长为 ,计算结果如下:
准确值
显示欧拉法
隐式欧拉法
0.0
100
100
100
0.01
60.6531
50
66.6667
0.02
36.7879
25
44.4445
0.03
22.3130
12.5
29.6296
0.04
13.5335
6.25
19.7531
0.05
8.2085
0.025
28.6505
23.7305
32.768
0.03
22.3130
17.79797
26.2144
由结果可知,当 时,显式欧拉法不太稳定,而隐式欧拉法发散;
当 时,显式欧拉法和隐式欧拉法都是稳定的。
3、选择某常微分方程初值问题的数值方法计算 的近似值,并保证有四位有效数字。
, ,
t
0.1
0.2
0.3
0.15
0.0553
-337.5
2.3324
0.2
0.0045506.20.66640.250.0004
-759.4
0.1904
0.3

【清华】实验4-常微分方程数值解(011813)

【清华】实验4-常微分方程数值解(011813)

实验4 常微分方程数值解化学工程系分9班焦阳2009011813 【实验目的】1. 掌握用MATLAB软件求微分方程初值问题数值解的方法;2. 通过实例学习用微分方程模型解决简化的实际问题;3. 了解欧拉方法和龙格-库塔方法的基本思想和计算公式,及稳定性等概念。

【实验内容】1.题目3:小型火箭初始重量为1400kg,其中包括1080kg燃料。

火箭竖直向上发射时燃料燃烧率为18kg/s,由此产生32000N的推力,火箭引擎在燃烧用尽时关闭。

设火箭上升时空气阻力正比于速度的平方,比例系数为0.4kg/m,求引擎关闭瞬间火箭的高度、速度、加速度,及火箭到达最高点时的高度和加速度,并画出高度、速度、加速度随时间变化的图形。

建立模型并进行分析:假设火箭在上升过程中,重力加速度g不随高度而变化,即固定g = 9.8m/s^2。

、(1)从火箭开始上升到引擎关闭:设火箭质量为m,高度为h,速度为v,加速度为a,阻力为f:,,ﭸ由牛顿第二定律可得:总ﭸ综上可得:;ﭸ;初值条件为:,;定义域为:。

根据常微分方程组的初值问题,在MATLAB中计算数值解,记,,, 。

通过解出微分方程的数值解,并进行绘图得到高度-时间曲线,速度-时间曲线,加速度-时间曲线如下:由MA度、速度t(s MATLAB 计算速度、加速度如下t(s) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 计算得到的火箭度如下表:h(m)06.57326.4459.76106.5166.7240.2326.7425.7536.9659.8793.6937.81091.1254.1425.1604.1790.1983.2181.2384.的火箭从开始上h(m) 0 6.5737 26.444 59.762 106.57 166.79 240.27 326.72 425.79 536.99 659.8 793.63 937.85 1091.8 1254.7 1425.9 1604.8 1790.8 1983.1 2181.2 2384.5 开始上升到关闭引v(m/s)0 13.18926.57740.06253.53566.89 80.02192.829105.22117.11128.43139.14149.18158.55167.23175.22182.55189.22195.27200.75205.7 关闭引擎这段时间/s) 189 577 062 535 021 829 .22 .11 .43 .14 .18 .55 .23 .22 .55 .22 .27 .75 段时间内各时刻a(m/s^2)13.0571413.304513.4532813.4971913.4331313.2613112.9853412.6121912.1519511.6169311.0212710.38 9.7083329.0209048.3309057.6502496.9900526.3593395.7646125.2094884.694626各时刻的高^2)71404532871931313153421919569312733290490524905233961248862621 2592.4 210.18 4.22201222 2804.5 214.19 3.79432623 3020.6 217.79 3.41201724 3240.1 221.01 3.07303925 3462.7 223.92 2.7726326 3687.9 226.56 2.50440927 3915.6 228.97 2.26774828 4145.6 231.14 2.06332529 4377.8 233.11 1.88975930 4611.9 234.91 1.74334931 4847.7 236.57 1.6177932 5085 238.14 1.50617933 5323.8 239.61 1.40954434 5564.1 240.99 1.32933135 5805.8 242.28 1.2650336 6048.7 243.5 1.21393737 6292.9 244.68 1.17083938 6538.1 245.83 1.1302639 6784.5 246.96 1.09469840 7032 248.05 1.06634841 7280.5 249.1 1.04558942 7530.2 250.12 1.03075943 7780.9 251.14 1.01781844 8032.5 252.15 1.00237545 8285.1 253.16 0.98756846 8538.8 254.15 0.97632347 8793.4 255.12 0.96963948 9049 256.07 0.96629149 9305.6 257.03 0.96239250 9563.1 257.99 0.95272351 9821.5 258.95 0.9411852 10081 259.9 0.93372753 10341 260.83 0.93277654 10603 261.75 0.93633455 10865 262.67 0.9369556 11128 263.61 0.92584757 11392 264.54 0.91379358 11657 265.46 0.91062859 11923 266.35 0.9161260 12190 267.26 0.917011根据表格可以很容易得到:关闭引擎的瞬间,h=12190m,v=267.26m/s,a=0.917011m/s^2。

计算方法--常微分方程求解实验

计算方法--常微分方程求解实验

实验五 常微分方程求解实验一、 实验目的通过本实验学会对给定初值我呢他,用欧拉法、改进欧拉法、四阶龙格-库塔法求数值解和误差,并比较优缺点.对给定刚性微分方程,求其数值解,并与精确解比较,分析计算结果.二、 实验题目1. 解初值问题各种方法比较 实验题目:给定初值问题⎪⎩⎪⎨⎧=≤<+=,0)1(,21,e d d y x x xyx y x 精确解为)e -e (xx y =,按 (1) 欧拉法,步长;1.0,025.0==h h (2) 改进欧拉法,步长;01.0,05.0==h h (3) 四阶标准龙格-库塔法,步长;1.0=h求在节点)10,,2,1(1.01 =+=k k x k 处的数值解及误差,比较各方法的优缺点. 2. 刚性方程计算实验题目:给定刚性微分方程⎪⎩⎪⎨⎧=≤<-+-=-,2)0(,50,600e 8.1199600d d 1.0y x y xyx 其精确解为12e e )(-0.1x -600x-+=x y .任选取一显示方法,取不同的步长求解,并分析计算结果.三、 实验原理1.欧拉格式由数值微分的向前差商公式可以解决初值问题(6.1)()()⎩⎨⎧=≤≤=00',,,y x y b x a y x f y 中的导数的数值计算问题:()()()()(),'1h x y x y h x y h x y x y n n n n -=-+≈+由此可得()()().'1n n n x hy x y x y +≈+(6.1)实际上给出()()()()()().,','n n n x y x f x y x y x f x y =⇒=于是有()()()().,1n n n n x y x hf x y x y +≈+再由()()11,++≈≈n n n n x y y x y y 得().,1,0,,111 =+=+++n y x hf y y n n n n (6.2) 递推公式(6.2)称为欧拉格式。

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

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

数学与计算科学学院实验报告
实验项目名称常微分方程数值解
所属课程名称数值方法B
实验类型验证
实验日期2013.11.11
班级
学号
姓名
成绩
图1 h=0.1时三个方法走势图
图2 h=0.05时三个方法走势图
图4 h=0.05时三个方法走势图
附录1:源程序
附录2:实验报告填写说明
1.实验项目名称:要求与实验教学大纲一致。

2.实验目的:目的要明确,要抓住重点,符合实验教学大纲要求。

3.实验原理:简要说明本实验项目所涉及的理论知识。

4.实验环境:实验用的软、硬件环境。

5.实验方案(思路、步骤和方法等):这是实验报告极其重要的内容。

概括整个实验过程。

对于验证性实验,要写明依据何种原理、操作方法进行实验,要写明需要经过哪几个步骤来实现其操作。

对于设计性和综合性实验,在上述内容基础上还应该画出流程图、设
计思路和设计方法,再配以相应的文字说明。

对于创新性实验,还应注明其创新点、特色。

6.实验过程(实验中涉及的记录、数据、分析):写明具体实验方案的具体实施步骤,包括实验过程中的记录、数据和相应的分析。

7.实验结论(结果):根据实验过程中得到的结果,做出结论。

8.实验小结:本次实验心得体会、思考和建议。

9.指导教师评语及成绩:指导教师依据学生的实际报告内容,给出本次实验报告的评价。

数值分析中的常微分方程数值求解

数值分析中的常微分方程数值求解

数值分析中的常微分方程数值求解常微分方程是自然科学中一类最为普遍的数学模型,涉及到热力学、物理、化工等多个领域。

然而,解常微分方程并非易事。

尤其是当我们面对一些复杂、非线性、多维的方程组时,常微分方程数值求解成为了一个十分关键的问题。

因此,数值求解方法成为了常微分方程研究中的重要组成部分。

本文将介绍一些数值解常微分方程的常见方法和应用。

1. 一般线性方法一般线性方法(general linear methods)是经典的常微分方程数值解法之一。

它以一种特殊的形式给出步进公式:$$ y_{n+1}=\sum_{i=0}^{s-1}\alpha_i y_{n-i}+h\sum_{i=0}^{s-1}\beta_i f(t_{n-i},y_{n-i}) $$ 其中,$y_{n}$为第$n$步的项值,$f(t_n,y_n)$为时间$t_n$处函数$y(t)$的导数。

$\alpha_i$和$\beta_i$是常数,可以通过确定如下特征方程来选择:$$ \sum_{i=0}^{s-1}\alpha_i\ lambda^{i}=0,~(\lambda\in C) $$ 与此同时,也可以通过选择$\beta_i$来使方法达到一定的准确性和稳定性。

2. Runge-Kutta方法比一般线性方法更为流行的方法是Runge-Kutta方法。

通常附加一个或多个修正以获得更好的数值稳定性和误差控制。

第1阶Runge-Kutta方法仅使用导数$f(t_n,y_n)$估算下一个项的值:$$y_{n+1}=y_n+hf(t_n,y_n)$$ 许多高阶方法可以使用中间的“插值”来更准确地估计下一个步骤:$$y_{n+1}=y_n+h\sum_{i=1}^kb_ik_i$$$$k_i=f(t_n+c_ih,y_n+h\sum _{j=1}^{i-1}a_{ij}k_j)$$ $k_i$是第$i$台车的估计值,$a_{ij}$和$b_i$在经典Runge-Kutta方法和其他变体中具有不同的取值。

实验2常微分方程数值解法

实验2常微分方程数值解法

实验2 常微分方程数值解法实验目的与要求1)熟悉求解常微分方程初值问题的有关方法和理论,主要是改进 欧拉法和四阶龙格库塔法2)会编制改进欧拉法的计算程序;3)针对实验内容编制的程序能够正确调试并运行所需结果实验内容:请用改进欧拉法和四阶龙格库塔算法解算法介绍 1、改进欧拉算法概要 20011112111205(0)2(,)()(,)[(,)(,)](,)[(,)(b an i i i i hi i i i i i i i i i h i i i i i y xy x y y f x y a x b y x y y y hf x y y y f x y f x y y y hf x y y y f x y f x 解一阶常微分方程初值问题将区间[a,b]作n 等分,取步长h=欧拉公式为梯形公式为改进欧拉法的公式为-+++++++ì¢ï=-#ïíï=ïîì¢=#ïïíï=ïî=+=++=+=++111,)](,)(,)1()2i p i i i c i i i i p c y y y hf x y y y hf x y y y y 或表示为+++ìïïíïïîìïïï=+ïïï=+íïïïï=+ïïî2、龙格库塔算法概要算法函数示例:void ModEuler(float(*f)(float,float),float x0,float y0,float xn,int n){int i;float yp,yc,x=x0,y=y0,h=(xn-x0)/n;printf("x[0]=%f\ty[0]=%f\n",x,y);for(i=1;i<=n;i++){yp=y+h*(*f)(x,y);x=x0+i*h;yc=y+h*(*f)(x,yp);y=(yp+yc)/2;printf("x[%d]=%f\ty[%d]=%f\n",i,x,i,y);}}void Runge_Kutta(float(*f)(float x,float y),float a,float b,float y0,int n){float x=a,y=y0,K1,K2,K3,K4;float h=(b-a)/N;int i;printf("x[0]=%f\ty[0]=%f\n",x,y);for(i=1;i<=n;i++){K1=(*f)(x,y);K2=(*f)(x+h/2,y+h*K1/2);K3=(*f)(x+h/2,y+h*K2/2);K4=(*f)(x+h,y+h*K3);上各个节点初的近似值,在区间出发,可得未知函数,由初值取步长为库塔公式常用的四阶龙格对于初值问题:][a )(),()2,2()2,2(),()22(6)(...........).........,(034231214321100'b x y y h hk y h x f k k h y h x f k k h y h x f k y x f k k k k k h y y y x y b x a y x f y i i i i i i i i i i ⎪⎪⎪⎪⎩⎪⎪⎪⎪⎨⎧++=++=++==++++=-⎩⎨⎧=≤≤=+y=y+h*(K1+2*K2+2K3+K4)/6;x=a+i*h;printf("x[%d]=%f\ty[%d]=%f\n",i,x,i,y); }}。

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

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

微分方程数值解法实验报告实验题目:数值解微分方程的实验研究引言:微分方程是描述自然现象、科学问题和工程问题中变量之间的关系的重要数学工具。

然而,大部分微分方程很难找到解析解,因此需要使用数值方法来近似求解。

本实验旨在研究数值解微分方程的方法和工具,并通过实验验证其有效性和准确性。

实验步骤:1.了解微分方程的基本概念和求解方法,包括欧拉法、改进的欧拉法和龙格-库塔法。

2. 配置实验环境,准备实验所需的工具和软件,如Python编程语言和相关数值计算库。

3.选择一种微分方程进行研究和求解,可以是一阶、二阶或更高阶的微分方程。

4.使用欧拉法、改进的欧拉法和龙格-库塔法分别求解选定的微分方程,并比较其结果的准确性和稳定性。

5.计算数值解与解析解之间的误差,并进行误差分析和讨论。

6.对比不同数值解法的性能,包括计算时间和计算精度。

7.结果展示和总结,根据实验结果对数值解方法进行评价和选取。

实验结果:以一阶线性常微分方程为例,我们选择经典的“衰减振荡”问题进行实验研究。

该问题的微分方程形式为:dy/dt = -λy其中,λ为正实数。

我们首先使用Python编程语言实现了欧拉法、改进的欧拉法和龙格-库塔法。

进一步,我们选择了λ=0.5和初始条件y(0)=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.结果与分析实验一中,比较四种数值解法在不同步长下的近似解和解析解,计算其误差。

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

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

数值分析21(常微分方程数值解)

数值分析21(常微分方程数值解)
14/27
下面以2级方法为例子具体介绍龙格-库塔法。 yn1 yn hc1 K 1 hc2 K 2
K 1 f ( x n , yn ) K 2 f ( xn 2 h, yn h21 K 1 )
构造的基本思想是选择适当的系数使得方法的局部 截断误差阶数尽可能高。
Tn1 y( xn1 ) yn hc1 f ( xn , yn ) hc2 f ( xn 2h, yn h21 f ( xn , yn ))
y ( xn1 ) y ( xn ) h
f ( , y( )), 其中 [ xn , xn1 ]
h yn1 yn [ f ( xn , yn ) f ( xn1 , yn1 )] 2 是否可以推广改进的Euler方法?
(Runge-Kutta)龙格-库塔法
RK方法是一大类的方法, 其基本思想是采用如下形式:
yn1 yn hf ( xn1 , yn1 ( xn1 )) 隐式Euler法
梯形公式:
x n 1 xn

h f ( x , y( x ))dx [ f ( xn , yn ) f ( xn1 , y( xn1 ))] 2
20:24
h yn1 yn [ f ( xn , yn ) f ( xn1 , y( xn1 ))] 2
c1 c2 1, c22 1 / 2, c221 1 / 2
故方程组有无穷多组解, 每一组来自构成的RK公式的阶数 都是2, 都叫做二阶RK公式。
c1 c2 1 / 2, 2 21 1就是改进Euler法。
20:24
16/27
三阶Range-Kutta公式一般形式
《数值分析》 23
  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 是与精确值的误差百分数。

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

相关文档
最新文档