课程设计常微分方程的求解.docx
《课程设计常微分方程的求解.docx》由会员分享,可在线阅读,更多相关《课程设计常微分方程的求解.docx(13页珍藏版)》请在冰豆网上搜索。
![课程设计常微分方程的求解.docx](https://file1.bdocx.com/fileroot1/2022-12/16/5ab842a9-52cf-4186-85d1-ac296d8f094d/5ab842a9-52cf-4186-85d1-ac296d8f094d1.gif)
课程设计常微分方程的求解
常微分方程的求解问题
摘要
题目中显然涉及到求解数值积分和求解常微分方程问题.
首先,需要对常微分方程中的数值积分进行求解.回顾所学过的求解数值积分的方法,有Newton-Cotes公式、复化求积公式、Romberg算法和Gauss-Legender公式等,我们选择其中的一种方法来进行求解.在求解时,选择了包含在Newton-Cotes公式中的梯形公式进行了求解.
然后,将积分求解的结果代入原方程中,进一步再求解常微分方程.回顾所学过的求解常微分方程的方法,有Euler格式、后退的Euler格式、梯形格式、改进的Euler格式、Euler两步格式、Runge-Kutta方法、Taylor级数法等,我们选择其中的一种方法进行求解.在求解时,选择了四阶Runge-Kutta方法进行了求解.
最后,应用MATLAB软件进行了求解计算了t=1,2,..,10时的值,并对模型进行了优缺点分析及模型的推广.
关键词:
数值积分;常微分方程;Newton-Cotes公式;Runge-Kutta方法;
MATLAB软件
THESOLUTIONOFORDINRYDIFFERENTIALEQUATIONS
ABSTRACT
Problemsinapparentlyinvolvesnumericalintegrationandsolvingproblemsinordinarydifferentialequations.
Firstofall,weneedtogivethesolutionofordinarydifferentialequations.Takeareviewofthenumericalintegrationmethod,aNewton-Cotesformula,complexformula,RombergalgorithmandGauss-Legenderformula,wechooseoneofthemethodstosolvetheproblem.Inthismethod,wechoosetheNewton-Cotesformulawhichincludesthetrapezoidformulatogetthesolution.
Then,theintegralsolutionshouldbeusedintheoriginalequation,andthengetthesolutionofordinarydifferentialequation.Takeareviewofwhathasbeenlearnedforsolvingordinarydifferentialequationmethod,areEulerformat,Eulerformat,theformatbacktrapezoid,improvedEulerformat,Eulertwo,Runge-Kuttamethod,Taylorformatseriesmethod,wechooseoneofthemethodstosolvetheequation.Inthesolution,wechoosefourorderRunge-Kuttamethodtosolve.
Finally,weusetheMATLABsoftwaretogetthesolution,andanalyzetheadvantagesandthedisadvantageofthemodelandgiveapromotionofthemodel.
Keywords:
Numericalintegrationofordinarydifferentialequations;formula;Newton-Cotes;Runge-Kuttamethod;MATLAB
目录
1问题的提出......................................................1
2问题的分析......................................................1
3问题假设........................................................1
4符号说明........................................................2
5模型的建立......................................................2
5.1模型的准备工作..............................................2
5.2建立模型....................................................5
6模型求解........................................................6
6.1MATLAB软件求解结果..........................................7
7模型验证及结果分析..............................................7
7.1模型验证....................................................7
7.2结果分析....................................................7
8模型的优缺点....................................................8
8.1模型的优点..................................................8
8.2模型的缺点..................................................8
9模型的推广......................................................8
参考文献..........................................................9
附录.............................................................10
1问题提出
用数值分析中求解常微分方程的知识,求解下列方程:
(
)
其中
初值为
.
2问题分析
从方程
中可以看到,方程右端中含有积分求解.故在求解此常微方程之前,必须先求解积分
.
求解数值积分的方法有Newton-Cotes公式、复化求积公式、Romberg算法和Gauss-Legender公式等,我们可以选择其中的一种方法进行求解.
求解常微分方程的方法有Euler格式、后退的Euler格式、梯形格式、改进的Euler格式、Euler两步格式、Runge-Kutta方法、Taylor级数法等,我们可以选择其中常用的方法进行求解.
3问题假设
(1)设应用MATLAB进行求解时,舍入误差可以忽略,不用考虑;
(2)设变量t的范围设定不会影响方程的求解;
(3)设积分求解的精度和常微分方程的求解精度不同时,对方程的求解没有影响;
4符号说明
T:
设用梯形积分公式求解的积分值;
S:
设用Simpson积分公式求解的积分值;
C:
设用Cotes公式求解的积分值;
:
设求解常微分方程时第n次值;
5模型的建立
5.1模型的准备工作
1)对积分求解的准备
设
是
上连续可积的实函数,求
在
上的数值积分也就是求
在
上的定积分的数值解.对于这个问题来说,即使能找到
的一个原函数
的解析形式,并利用牛顿—莱布尼茨(Newton-Leibniz)公式进行计算,在许多情况下这样做也是非常麻烦的.问题的关键在于,初等函数的原函数不一定就是初等函数,在这种情况下并不能利用牛顿—莱布尼茨公式进行计算.那么就想到绕过牛顿—莱布尼茨公式而直接求一般的定积分的数值解.
现在所要解决的常微分方程中的积分就是如此,我们可以用Newton-Cotes公式、复化求积公式、Romberg算法和Gauss-Legender公式等公式进行近似计算定积分的数值解.
下面将其中的几种常用公式简单列出如下:
Newton-Cotes公式
当
时为
称为梯形公式;
当
时为
称为Simpson公式;
当
时为
称为Cotes公式.
复化求积公式
复化梯形公式:
复化Simpson公式:
复化Cotes公式:
Gauss-Legender公式
令对
准确成立,定
则:
一点Gauss-Legender公式为:
两点Gauss-Legender公式为:
三点Gauss-Legender公式为:
2)对常微分方程求解的准备
在生产实践和科学研究过程中,我们经常会遇到求解常微分方程或常微分方程组的定解问题.在许多情况下,首先找到问题的解析解,然后再进行相关的计算往往非常困难,有时甚至是行不通的.我们已经可以成功的绕过牛顿—莱布尼茨公式而直接求一般的定积分的数值解.基于同样的理由,对于常微分方程或常微分方程组来说,我们也可以避免求解析解而直接求相应的数值解.
一般的高阶常微分方程都可以通过相应的变量代换而化为一阶常微分方程组来求解.一阶常微分方程组的初值问题求数值解与一阶常微分方程的初值问题求数值解的方法基本相同.
求解一阶常微分方程的初值问题求数值解的公式有Euler格式、后退的Euler格式、梯形格式、改进的Euler格式、Euler两步格式、Taylor级数法和Runge-Kutta方法等.
下面将几种常用的公式简单列出如下:
Euler格式:
后退的Euler格式:
梯形格式:
改进的Euler格式:
预测
校正
Euler两步格式:
改进的Euler两步格式:
预测
校正
Taylor级数法:
Runge-Kutta方法:
二阶Runge-Kutta方法:
其中满足:
三阶Runge-Kutta方法:
其中满足:
四阶Runge-Kutta方法:
5.2建立模型
首先,对常微分方程中的积分
进行求解.
我们选用梯形公式
来求解,则有
.
将其代入
得:
然后,求解常微分方程时,用四阶Runge-Kutta方法:
则有:
模型建立的具体过程如下流程图:
6模型求解
求解数值积分与常微分方程的方法有多种,同样应用数学软件进行求解时,也有多种软件可用,如常用的有MATLAB软件、Lingo软件等.这两种软件对目前我们面对的数学问题,几乎都可以用其来解决.Lingo软件在求解线性规划问题时用的较多,一般的问题都习惯用MATLAB软件进行求解.
6.1MATLAB软件求解结果
由于在用四阶Runge-Kutta方法求解时,需要设初始值,所以设
,
步长
.又由于
,为了便于用软件进行求解,不妨设
计算了
时,方程的值.所得结果如下表所示:
表1
t=1
t=2
t=3
t=4
t=5
1.6266
-6.0344
-14.0483
-15.0195
-13.3441
T=6
T=7
T=8
T=9
T=10
-12.5391
-12.5193
-12.9037
-13.5898
-14.6088
7模型验证及结果分析
7.1模型验证
7.1.1MATLAB软件求解结果验证
由于这只是一个方程的求解,没有实际背景,故没有真值可以用来进行比较.只能用不同的方法进行求解,来看不同方法求解结果相差多少来验证.
在实际生产实践中,我们总是对某一个实际问题数学化,然后建立数学模型来解决.并且在实际生产中,我们可以得到足够多的数据.再对模型求解后,就可以通过比较实际值与模型求解值来验证模型的合理性.但现在所做的题目没有实际背景,没有真值来作比较.故只能通过用不同的方法求解,比较所得结果,验证那种方法更好.
7.2结果分析
在模型求解时,我们假设
,
.假设的值不是真值,故对模型的求解有一定的影响.并且只取了一个步长
,不一定是最优的步长.
8模型的优缺点
8.1模型的优点
模型的优点是列出了多种求解数值积分和常微分方程的方法,有多种选择来进行求解.
8.2模型的缺点
在模型求解时,我们假设
,
.假设的值不是真值,故对模型的求解有一定的影响.并且只取了一个步长
,不一定是最优的步长.
9模型的推广
在实际生产实践中,我们总是对某一个实际问题数学化,然后建立数学模型来解决.并且在实际生产中,我们可以得到足够多的数据.再对模型求解后,就可以通过比较实际值与模型求解值来验证模型的合理性.本问题中的常微分方程,可能适合与生活实践中的某个数学问题,那么可以用本文中的方法进行求解.
参考文献
[1]李庆扬,王能超,易大义编著.数值分析(第四版)[M].武汉:
华中科技大学出版社,2006.7.
[2]刘卫国编著.MATLAB程序设计教程(第二版)[M].北京:
中国水利水电出版社,2005.3.
[3]姜启源,谢金星,叶俊编著.数学模型(第三版)[M].北京:
高等教育出版社,2005:
1-202.
[4]张可村,赵英良编著.数值计算的算法与分析[M].北京:
科学出版社,2004.6.[5]甄西丰编著.实用数值计算方法[M].北京:
清华大学出版社,2007.2.
[6]关治,陆金甫编著.数值方法[M].北京:
清华大学出版社,2006.12.
附录
1)程序1:
clear;
t=[];y=[];a=2;b=-2;
t
(1)=0;y
(1)=1;y
(2)=1.123;
forj=1:
10
fori=2:
6
t(i)=t(i-1)+0.2;
i=i+1;
end
fori=2:
6
K1=(a+b*t(i-1)/2)*y(i-1)+b*t(i-1)/2;
K2=(a+b*t(i-1)/2)*(y(i-1)+0.1*K1)+b*t(i-1)/2;
K3=(a+b*t(i-1)/2)*(y(i-1)+0.1*K2)+b*t(i-1)/2;
K4=(a+b*t(i-1)/2)*(y(i-1)+0.2*K3)+b*t(i-1)/2;
y(i)=y(i-1)+0.2/6*(K1+2*K2+2*K3+K4)+b*t(i-1)/2;
i=i+1;
end
y(6)
y
(1)=y(5);y
(2)=y(6);t
(1)=t(6);j=j+1;
end
2)求得的结果如下:
ans=
1.6266
ans=
-6.0344
ans=
-14.0483
ans=
-15.0195
ans=
-13.3441
ans=
-12.5391
ans=
-12.5193
ans=
-12.9037
ans=
-13.5898
ans=
-14.6088