用数值积分的方法求解微分方程y''-u(1-x^2)y'+x=o

在初始条件x(0)=1,y‘(0)=0 , 情况下的解,并图示。y'=dx/dt

要:常微分方程作为微分方程的基本类型之一,在自然界与工程界有很广泛的应用。很多问题的数学表述都可以归结为常微分方程的定解问题,实际生活中很多问题的数学模型都是微分方程。但在许多情况下,首先找到问题的解析解,然后再进行相关的计算往往非常困难,有时甚至是行不通的,基于此理由,我们可以避免求解析解而直接求相应的数值解。本论文就是对目前已有的常微分方程的数值方法进行研究,并大胆地提出一种新的数值方法——欧拉-牛顿法。
关键词:常微分方程 解析解 数值解 研究 新的数值方法 欧拉-牛顿法
0 引言
在生产实践和科学研究过程中,我们经常会遇到求解常微分方程的定解问题,虽然我们已经知道不少类型的常微分方程的解法。但工程技术人员在工程和科学研究中所关心的往往只是常微分方程的近似数值解,而非从事数学研究的技术人员所注重的“过程”。采用常规的人工推导、求解无疑是效率非常低下的,而且工程上的常微分方程往往结构非常复杂,要给出一般方程解的表达式也是非常困难的。实际上到目前为止,我们只能对有限的几种特殊类型的方程求精确解,这远不能满足工程需要,对那些不能用初等函数来表达的方程就只能去求其近似的数值解,而且这样还可以借助于运算速度快的计算机来进行辅助求解,大大提高求解的速度和精度。我们考虑一阶常微分方程初值问题在区间[a,b]上的解,其中f(x,y)为x,y的已知函数,y0为给定的初始值,将上述问题的精确解记为y(x)。数值方法的基本思想是:在解的存在区间上取n+1个节点,这里差hi=xi+1-xi,i=0,1,…,n称为由xi到xi+1的步长。这些hi可以不相等,但一般取成相等的,这时,在这些节点上采用离散化方法,(通常用数值积分、微分,泰勒展开等)将上述初值问题化成关于离散变量的相应问题。把这个相应问题的解yn作为y(xn)的近似值。这样求得的yn就是上述初值问题在节点xn上的数值解。一般说来,不同的离散化导致不同的方法。本文在对目前已有的常微分方程的数值方法进行深入研究的基础上,对改进的欧拉方法进行再次改进并提出一种新的数值方法(本文命名为欧拉-牛顿法),并能够以具体实例来验证方法的有效性和实用性。
1 欧拉—牛顿法
改进的欧拉方法的公式是
先研究求的近似值,其中是步长。对于递推格式
由此所确定的可以看成是下面关于的(非线性)函数
在y=yk-1附近的零点。虽然上面(2)式定义的F(y)还与k以及xk-1,xk,yk-1有关,但这个问题还可以在求数值解时予以考虑,对于理论分析来说则无需顾及。如果我们直接利用牛顿法求F(y)在y=yk-1附近的零点,当然可以利用yk-1作为z的初值z0,利用
由于zi-1到zi的区间很小,所以在每一个小区间内设已知方程F(z)=0有近似根zi-1,将函数F(z)在点zi-1展开,有
于是方程F(z)=0可近似地表示为:
这是个线性方程,记其根为zi,则有
从而得到欧拉—牛顿法的递推格式为:
f(x,y)关于y的偏导数的绝对值通常特别大,由此可以得出
的值也特别大,再加之初始解yk-1已经很靠近F(y)的零点,所以采用牛顿法求F(y)在y=yk-1附近的零点实现了问题与方法之间的完美结合。事实上,在一般情况下利用(4)式迭代一次即可得到满意的结果。考虑到f(x,y)的凸凹性可能会对迭代格式(4)产生一定的影响,所以保险起见,也可以利用(4)式迭代两次,至少可以增强算法的稳定性。
例1.求解下述初值问题
上面(5)式的理论解为
表中符号说明:X[k]是x的值;Y[k]是对应每一个x的y精确值(理论值);YX[k]是利用欧拉-牛顿法计算出的y近似值;E[k]是y精确值和近似值之间的误差。利用欧拉—牛顿法求解的计算结果的精度至少达到了小数点后13位,甚至有的达到了小数点后15位,表1中y精确值和计算值之间的误差E[k]的值非常的小,几乎达到了零值,即用欧拉—牛顿法得到的结果几乎达到了人们所企盼的结果,它很明显地优越于改进的欧拉方法,所以实例证明欧拉—牛顿法还是值得推广的。
2 总结
对于求一般的常微分方程初值问题的数值解来说,已经有很多的方法。在实际应用中,我们当然希望能够结合具体问题的特点,充分利用不同方法的差异,选择一种更为合适的方法,力争得到尽可能好的结果。对于求解实际问题来说,我们通常并不能立即得出所得到的结果到底有几位有效数字。虽然可以通过理论分析来估计误差,但这样做一是劳神费力,二是所得到的结果也未必靠的住,这中间不确定的因素太多。在现代计算机条件下,采用基于试验的方法一般比理论分析的结果更为直观,更为具体。在这个基础上再辅之以理论分析,结论当然更可靠一些。求解一阶常微分方程的新的数值求解方法(欧拉—牛顿法)是改进的欧拉方法和牛顿法的完美结合,从而为求解一阶常微分方程的数值解提供了方便,并且结果的精度也比较高。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-07-05
对于求一般的常微分方程初值问题的数值解来说,已经有很多的方法。在实际应用中,我们当然希望能够结合具体问题的特点,充分利用不同方法的差异,选择一种更为合适的方法,力争得到尽可能好的结果。对于求解实际问题来说,我们通常并不能立即得出所得到的结果到底有几位有效数字。虽然可以通过理论分析来估计误差,但这样做一是劳神费力,二是所得到的结果也未必靠的住,这中间不确定的因素太多。在现代计算机条件下,采用基于试验的方法一般比理论分析的结果更为直观,更为具体。在这个基础上再辅之以理论分析,结论当然更可靠一些。求解一阶常微分方程的新的数值求解方法(欧拉—牛顿法)是改进的欧拉方法和牛顿法的完美结合,从而为求解一阶常微分方程的数值解提供了方便,并且结果的精度也比较高.
第2个回答  2012-06-11
[DyDt.m]
function ydot=DyDt(t,y)
mu=2;
ydot=[y(2);mu*(1-y(1)^2)*y(2)-y(1)];

(3)解算微分方程
tspan=[0,30];
y0=[1;0];
[tt,yy]=ode45(@DyDt,tspan,y0);
plot(tt,yy(:,1))
xlabel('t'),title('x(t)')

图 4.1-7 微分方程解

(4)
plot(yy(:,1),yy(:,2))
xlabel('位移'),ylabel('速度')
第3个回答  2010-07-07
有个未知数u怎么用数值来做啊
相似回答