打靶法求边值问题

合集下载

边值问题的数值解法

边值问题的数值解法
估计式
M b a 2 y xk y k h ,k 1, 2, ,n 1。 96
2
y 4 x 。因此,当 h 0 时,差分方程的解收敛到微分方 其中 M max a x b
y f x,y,y, y x,y sk,
这里的 s k 为
(8.6.3)
y
在 处的斜率。令 z y ,上述二阶方程可降为一阶方程组
y z, z f x,y,z ,
(8.6.4)
y a ,z a sk。
计算结果表明打靶法的效果是很好的,计算精度取决于所选取的初值问题数
值方法的阶和所选取的步长 h 的大小。不过,打靶法过分依赖于经验,选取试射 值,有一定的局限性。
第八章常微分方程数值解法
8.6.2 差分方法
差分方法是解边值问题的一种基本方法,它利用差商代替导数,将微分方程 离散化为线性或非线性方程组(即差分方程)来求解。 先考虑线性边值问题(8.6.2)的差分法。将区间 a,b 分成 n 等分,子区间的
s2
,同理得到 yb,s2 ,再判断它是否满足精度要求
y b,s2 。如此重复,直到某个 s 满足 y b,sk ,此时得到 k
的 y xi 和 yi z xi 就是边值问题的解函数值和它的一阶导数值。上述方程 好比打靶, s k 作为斜率为子弹的发射,y b 为靶心,故称为打靶法。
y xy 4 y 12 x 2 3x, 0 x 1, y 0 0,y 1 2,
其解的解析表达式为 y
x x 4 x 。来自解 先将该线性边值问题转化为两个初值问题
xy1 4 y1 12 x 2 3 x, y1 1 0, y1 0 0,y1 xy2 4 y2 0, y2 1 1。 y2 0 0,y2

非线性微分方程边值问题打靶算法Matlab程序

非线性微分方程边值问题打靶算法Matlab程序

非线性微分方程边值问题打靶算法Matlab程序【非线性微分方程边值问题打靶算法】参见:// matlabsky /thread-828-1-1.html【线性微分方程边值问题打靶算法】参见 :// matlabsky /thread-827-1-1.html 【线性微分方程边值问题有限差分算法】参见:// matlabsky /thread-829-1-1.html下面我们讲解下【非线性微分方程边值问题打靶算法】对于边值问题线性边值问题时,p、q和r只是x的函数,但是非线性时它们是x,y和y'的函数我们将问题转换为如下初值问题现在我们需要做的就是找到那个m,使得y(b)=beta,换句话说y现在由两个变量最终控制,即m和x。

对于这个求m的问题,我们可以使用牛顿迭代法得到(1)先给出一个初值m=1(2)计算出对应的y(b)为yb,这个直接使用ode45计算,得到y(end,1)就是yb(3)根据beta和yb的差异更新m(4)将新的m带入(2)重新计算yb并更新m(5)如此迭代直到m稳定或者在允许误差范围内下面详细描述了Matlab代码的运行过程以下内容需要回复才能看到复制内容到剪贴板代码:function [t,x]=nlineshoot(funcn,funcv,tspan,bound,tol,varargin)%对微分方程y''=p*y'+q*y+r,a<t<b,u(a)=alpha,u(b)=beta,其中p,q和r为x,y和y'的函数%只要对应修改p,q,r并将y'用x(2)替换,y用x(1)替换,就可以了%funcn=@(t,x)[x(2);p*x(2)+q*x(1)+r];%funcv=@(t,x)[x(2);p*x(2)+q*x(1)+r;x(4);x(3)*dF/dy+x(4)*dF/y'];%%% Example%F=y''=2y*y',y(0)=-1,y(pi/2)=1%%由方程有p=2y=2*x(1),q=r=0%dF/dy=2*y'=2*x(2) %y'用x(2)替换,y用x(1)替换%dF/dy'=2*y=2*x(1)%%funcn=@(t,x)[x(2);2*x(1)*x(2)];%funcv=@(t,x)[x(2);2*x(1)*x(2);x(4);2*x(2)*x(3)+2*x(1)*x(4)]; %tspan=[0 pi/2];%bound=[-1 1];%tol=1e-8;%[t,y]=nlineshoot(funcn,funcv,tspan,bound,tol);%plot(t,y)%legend('x1','x2')%%by dynamic%see also :// matlabsky%2009.3.12%%lb=bound(1);ub=bound(2);m0=0;m=1;while norm(m-m0)>tolm0=m;[t,x]=ode45(funcv,tspan,[lb;m;0;1],varargin);m=m0-(x(end,1)-ub)/x(end,3);end[t,x]=ode45(funcn,tspan,[lb;m]);下面的图形是代码中附带实例的运行结果线性微分方程边值问题打靶算法Matlab程序【非线性微分方程边值问题打靶算法】参见:// matlabsky /thread-828-1-1.html 【线性微分方程边值问题打靶算法】参见:// matlabsky /thread-827-1-1.html【线性微分方程边值问题有限差分算法】参见:// matlabsky /thread-829-1-1.html注意该算法只能完成二阶常微分方程双边值问题求解,至于其他形式的边值问题必须先转换到二阶形式对于下面的二阶常微分方程利用上面方程的线性结果和两个特殊的初值问题,我们可以构造两个等效的常微分初值方程初值问题,对于初值问题我们就可以直接使用ode**计算器或者龙哥库塔算法求解了。

化工应用数学-常微分方程数值解-打靶法

化工应用数学-常微分方程数值解-打靶法

问题:一维均匀介质稳态导热问题。设其一端绝热,
另一端恒温为T1,求此均匀介质上的温度分布?
(x0, T1)
xL此处绝热
x1
温度?
x2
x3
温度? 温度?
T=f(x)?
d
(k dT ) 0
dx f (0)
dx T1
dT
0
dx xL
2020/6/19
化工应用数学
3
边值问题是指在自变量x的某一区间[a,b]的两个端点
常微分方程数值解
常微分方程边值问题
问题:一维均匀介质稳态导热问题。设其一端绝热,
另一端恒温为T1,求此均匀介质上的温度分布?
(x0, T1)
xL此处绝热
x1
温度?
x2
温度?
x3
温度?
T=f(x) 其中x代表均匀介质上某一位置距离端点的距离; T代表x处的温度。
2020/6/19
化工应用数学
2
常微分方程边值问题
二阶方程的 y'' f (x, y, y' ),a<x<b
第一边值问题:
y(a)
;
y(b)
二阶方程的 y'' f (x, y, y' ),a<x<b
初值问题:
y(a)
;
y
'
(a)
m
2020/6/19
化工应用数学
任务:寻找 m,使得 y(b)=β
6
y
m=m1
(b,β) m=m3
m=m2
(a,α) x
F(m)
F (m2 )
(F (m2 ) ) (F (m1) )
m2 m1

数学实验“微分方程组边值问题数值算法(打靶法,有限差分法)”实验报告(内含matlab程序)

数学实验“微分方程组边值问题数值算法(打靶法,有限差分法)”实验报告(内含matlab程序)

西京学数学软件实验任务书课程名称数学软件实验班级数0901学号0912020107姓名李亚强微分方程组边值问题数值算法(打靶法,有限差分法)实验课题熟悉微分方程组边值问题数值算法(打靶法,有限差实验目的分法)运用Matlab/C/C++/Java/Maple/Mathematica等其中实验要求一种语言完成微分方程组边值问题数值算法(打靶法,有限差分法)实验内容成绩教师实验二十七实验报告1、实验名称:微分方程组边值问题数值算法(打靶法,有限差分法)。

2、实验目的:进一步熟悉微分方程组边值问题数值算法(打靶法,有限差分法)。

3、实验要求:运用Matlab/C/C++/Java/Maple/Mathematica 等其中一种语言完成程序设计。

4、实验原理:1.打靶法:对于线性边值问题(1)⎩⎨⎧==∈=+'+''βα)(,)(],[)()()(b y a y b a x x f y x q y x p y 假设是一个微分算子使:L ()()Ly y p x y q x y '''=++则可得到两个微分方程:,,)(1x f Ly =α=)(1a y 0)(1='a y ,, (2)⇔)()()(111x f y x q y x p y =+'+''α=)(1a y 0)(1='a y ,,02=Ly 0)(2=a y 1)(2='a y ,, (3)⇔0)()(222=+'+''y x q y x p y 0)(2=a y 1)(2='a y 方程(2),(3)是两个二阶初值问题.假设是问题1y(2)的解,是问题(3)的解,且,则线性边值问2y 2()0y b ≠题(1)的解为: 。

1122()()()()()y b y x y x y x y b β-=+2.有限差分法:基本思想是把连续的定解区域用有限个离散点构成的网格来代替,这些离散点称作网格的节点;把连续定解区域上的连续变量的函数用在网格上定义的离散变量函数来近似;把原方程和定解条件中的微商用差商来近似, 积分用积分和来近似,于是原微分方程和定解条件就近似地代之以代数方程组,即有限差分方程组 , 解此方程组就可以得到原问题在离散点上的近似解。

打靶法

打靶法

用某种离散化数值步骤求出常微分方程边值问题在离散点上的近似解的方法。

各种实际问题导出不同类型的边值问题。

较简单的有二阶常微分方程两点边值问题:求函数y=y(x),x∈【α,b】,使它满足微分方程和边值条件式中ƒ、g1、g2为已知函数;α与b为两个给定的端点。

较一般地有一阶常微分方程组两点边值问题:求N个函数使其满足微分方程组和边值条件式中诸ƒn、g i是已知函数;r为给定的自然数。

有些问题因求解区间是无穷区间而被称作奇异边值问题,相应的边界条件变为对解在无穷远处渐近行为的限制,例如,要求y(x)在区间【0,)上平方可积或要求当x趋于无穷时,y(x)趋于某极限值。

还有些实际问题因要求解满足多个点上的条件而被称作多点边值问题。

近年来,对反映边界层现象的奇异摄动边值问题提出了一些新的数值解法。

此外,关于存在多个解的分歧现象数值解问题也引起人们的注意。

打靶法主要思路是:适当选择和调整初值条件,(选什么)求解一系列初值问题,使之逼近给定的边界条件。

如果将描述的曲线视作弹道,那么求解过程即不断调整试射条件使之达到预定的靶子,所以称作打靶法或试射法,此类方法的关键是设计选取初值的步骤。

对非线性边值问题可通过下列步骤求数值解:①计算初值问题的数值解y1。

若g(y1(b),y姈(b))=B,近似地满足,则y1即为所求;否则进行②。

②计算初值问题的数值解y2,若g(y2(b),y娦(b))=B近似地满足,则y2即为所求;否则令m=3进行③。

③将g(y(b),y┡(b))视为y(α)的函数,用线性逆插值法调整初值,即计算然后进行④。

④计算初值问题的数值解y m并进行判定:若b点边值条件近似地满足,则y m即为所求;否则令m+1崊m转向③继续计算直到满意为止。

特别地,若微分方程是线性的,则打靶法变成线性组合法,即根据常微分方程理论适当选取初值可得到一组线性独立解,利用它们的线性组合导出边值问题的解。

例如线性方程边值问题的数值解可通过两个初值问题数值解来实现。

第三章 常微分方程的边值和本征值问题

第三章 常微分方程的边值和本征值问题

因此比 较明智的做法是,在每一个试验本征值上,由 xmax
出发向后直接积分产生另一个数值解 Ѱ>。 为了判断 这个试验本征值是不是一个能量本征值,可以在一
个接合点 xm上比较 Ѱ<和 Ѱ>,其中接合点 xm要这样选择, 使得两个积分都是准确的。这里接合点 xm 的一个方便的选 择是左转折点或右转折点。
问题转化为求下面方程的根
Φk (1)= 0
3.3 一维薛定谔方程的定态解
一维位势 V(x) 中一个质量为 m 的粒子的 量子力学定态
在 x = xmin 和 x = xmax 处两点位势变为无穷大,也就是说在这 两点上有刚壁,在 这两点之间则是一个势阱。
定解问题
其中
求使这个问题有非零解的能量本征值 E 及其相应的波函数
Ѱ<和 Ѱ>的归一化总是可以这样选择,使得两个函数值在
xm 上相等。这时如果 它们的微商在 xm上也相等,那么就可 以断言这个试验本征值就是能量本征值.
数学表达式为
这里的
提供了一个方便的标尺
打靶法的基本思想是将边值问题当作一个含可调参数 δ 的
初始问们就可以通过积分这个初始问
题得到 yδ (b) .
一般来说,由于可调参数 δ 的随意选择, yδ(b) 和 yb 很难相等。
打靶法就是通过使用一个搜索算法去调整参数 δ ,使得 yδ (b) 和 yb 在误差容忍范围内相等,从而达到数值求解边 值问题的目的. 问题转化为求下面方程的根
3.2 打靶法求解本征值问题
考虑一根密度均匀的绷紧的弦的振动,分离变量后,空间
部分满足的方程和边界条件可以写成
φ 是弦的横向位移, k 是波数 解析解为
相比边值问题,本征值问题多了一个待定参数 策略:我们先猜测一个试验本征值 k,同时任取一个非零数 δ , 把微分方程变化为一个初始值问题

数值方法——两点边值问题

数值方法13——两点边值问题
1. 打靶法
打靶法的积分过程是从x1到x2,并且努力使积分结果在积分的终点和边界条件匹配。

在一个边界x1上选择了所有因变量的值,这些值必须和该边界的边界条件保持一致。

而另一个边界x2上的因变量依赖于随机猜测的参数。

在迭代过程中,渐渐地接近真实值,就像打靶一样。

打靶法适合于解震荡的很厉害的情况,精确地运用了多维全局收敛Newton-Raphs on,设法零化n2个变元的n2个函数,这些函数通过从x1到x2积分N个微分方程得到。

1. 打靶法
打靶法的积分过程是从x1到x2,并且努力使积分结果在积分的终点和边界条件匹配。

在一个边界x1上选择了所有因变量的值,这些值必须和该边界的边界条件保持一致。

而另一个边界x2上的因变量依赖于随机猜测的参数。

在迭代过程中,渐渐地接近真实值,就像打靶一样。

打靶法适合于解震荡的很厉害的情况,精确地运用了多维全局收敛Newton-Raphs on,设法零化n2个变元的n2个函数,这些函数通过从x1到x2积分N个微分方程得到。

2. 对拟合点打靶
有时,由于错误严重的起始条件,初始解从x1到x2要碰到某些不可计算的,或是灾难性的结果。

拟合点打靶首先从x1积分到x1和x2之间的一个点x f,然后再从x2反向积分到x f。

3. 松弛法
松弛法用了另外一种逼近方法,微分方程由覆盖积分限的一系列有限个差分方程来替代,试验解由各个网格点上的因变量的值组成,并不满足所需的有限个差分方程和边界条件。

迭代调整所有在网格上的值,使他们满足各个联系的差分方程,也满足边界条件。

适用于解平滑的情况,需要良好的初始预测值。

(完整版)常微分方程组(边值)

常微分方程组边值问题解法打靶法Shooting Method (shooting.m )%打靶法求常微分方程的边值问题function [x,a,b,n]=shooting(fun,x0,xn,eps)if nargin<3eps=1e-3;endx1=x0+rand;[a,b]=ode45(fun,[0,10],[0,x0]');c0=b(length(b),1);[a,b]=ode45(fun,[0,10],[0,x1]');c1=b(length(b),1);x2=x1-(c1-xn)*(x1-x0)/(c1-c0);n=1;while (norm(c1-xn)>=eps & norm(x2-x1)>=eps)x0=x1;x1=x2;[a,b]=ode45(fun,[0,10],[0,x0]');c0=b(length(b),1);[a,b]=ode45(fun,[0,10],[0,x1]');c1=b(length(b),1)x2=x1-(c1-xn)*(x1-x0)/(c1-c0);n=n+1;endx=x2;应用打靶法求解下列边值问题:()()⎪⎪⎩⎪⎪⎨⎧==-=010004822y y y dxy d解:将其转化为常微分方程组的初值问题()⎪⎪⎪⎪⎩⎪⎪⎪⎪⎨⎧==-==t dx dy y y y dx dy y dx dy x 0011221048命令:x0=[0:0.1:10];y0=32*((cos(5)-1)/sin(5)*sin(x0/2)-cos(x0/2)+1); 真实解plot(x0,y0,'r')hold on[x,y]=ode45('odebvp',[0,10],[0,2]');plot(x,y(:,1))[x,y]=ode45('odebvp',[0,10],[0,5]');plot(x,y(:,1))[x,y]=ode45('odebvp',[0,10],[0,8]');plot(x,y(:,1))[x,y]=ode45('odebvp',[0,10],[0,10]');plot(x,y(:,1))函数:(odebvp.m)%边值常微分方程(组)函数function f=odebvp(x,y)f(1)=y(2);f(2)=8-y(1)/4;f=[f(1);f(2)];命令:[t,x,y,n]=shooting('odebvp',10,0,1e-3)计算结果:(eps=0.001)t=11.9524plot(x,y(:,1))x0=[0:1:10];y0=32*((cos(5)-1)/sin(5)*sin(x0/2)-cos(x0/2)+1); hold onplot(x0,y0,’o’)有限差分法Finite Difference Methods FDM (difference.m )同上例:4822y dx y d -=⇒482211i i i i y h y y y -=+--+ 2121842h y y h y i i i =+⎪⎪⎭⎫ ⎝⎛--+- 若划分为10个区间,则: ⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡--=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡⎪⎪⎭⎫ ⎝⎛--⎪⎪⎭⎫ ⎝⎛--⎪⎪⎭⎫ ⎝⎛--⎪⎪⎭⎫ ⎝⎛----08880842114211421142222212212222h h h h y y y y h h h h n n M M O O O函数:(difference.m )%有限差分法求常微分方程的边值问题function [x,y]=difference(x0,xn,y0,yn,n)h=(xn-x0)/n;a=eye(n-1)*(-(2-h^2/4));for i=1:n-2a(i,i+1)=1;a(i+1,i)=1;endb=ones(n-1,1)*8*h^2;b(1)=b(1)-0;b(n-1)=b(n-1)-0;yy=a\b;x(1)=x0;y(1)=y0;for i=2:nx(i)=x0+(i-1)*h;y(i)=yy(i-1);endx(n)=xn;y(n)=yn;命令:[x,y]=difference(0,10,0,0,100);计算结果:x0=[0:0.1:10];y0=32*((cos(5)-1)/sin(5)*sin(x0/2)-cos(x0/2)+1); 真实解plot(x0,y0,'r')hold on[x,y]=difference(0,10,0,0,5);plot(x,y,’.’)[x,y]=difference(0,10,0,0,10);plot(x,y,’--’)[x,y]=difference(0,10,0,0,50);plot(x,y,’-.’)正交配置法Orthogonal Collocatioin Methods CM构造正交矩阵函数(collmatrix.m)%正交配置矩阵(均用矩阵法求对称性与非对称性正交配置矩阵)function [am,bm,wm,an,bn,wn]=collmatrix(a,m,fm,n,fn)x0=symm(a,m,fm); %a为形状因子;m为零点数;fm为对称的权函数(0为权函数1,非0为权函数1-x^2)for i=1:mxm(i)=x0(m+1-i);endxm(m+1)=1;for j=1:m+1for i=1:m+1qm(j,i)=xm(j)^(2*i-2);cm(j,i)=(2*i-2)*xm(j)^(2*i-3);dm(j,i)=(2*i-2)*(2*i-3+(a-1))*xm(j)^(2*i-3+(a-1)-1-(a-1));endfmm(j)=1/(2*j-2+a);endam=cm*inv(qm);bm=dm*inv(qm);wm=fmm*inv(qm);x1=unsymm(n,fn); %n为零点数;fn为非对称的权函数(0为权函数1,非0为权函数1-x) xn(1)=0;for i=2:n+1xn(i)=x1(n+2-i);endxn(n+2)=1;for j=1:n+2for i=1:n+2qn(j,i)=xn(j)^(i-1);if j==0 | i==1cn(j,i)=0;elsecn(j,i)=(i-1)*xn(j)^(i-2);endif j==0 | i==1 | i==2dn(j,i)=0;elsedn(j,i)=(i-2)*(i-1)*xn(j)^(i-3);endendfnn(j)=1/j;endan=cn*inv(qn);bn=dn*inv(qn);wn=fnn*inv(qn);%正交多项式求根(适用于对称问题)function p=symm(a,m,fm) %a为形状因子,m为配置点数,fm为权函数for i=1:mc1=1;c2=1;c3=1;c4=1;for j=0:i-1c1=c1*(-m+j);if fm==0c2=c2*(m+a/2+j);%权函数为1elsec2=c2*(m+a/2+j+1);%权函数为1-x^2endc3=c3*(a/2+j);c4=c4*(1+j);endp(m+1-i)=c1*c2/c4/c3;endp(m+1)=1;%为多项式系数向量,求出根后对对称问题还应开方才是零点p=sqrt(roots(p));%正交多项式求根(适用于非对称性问题)function p=unsymm(n,fn)if fn==0r(1)=(-1)^n*n*(n+1);%权函数为1elser(1)=(-1)^n*n*(n+2);%权函数为1-xendfor i=1:n-1if fn==0r(i+1)=(n-i)*(i+n+1)*r(i)/(i+1)/(i+1);%权函数为1elser(i+1)=(n-i)*(i+n+2)*r(i)/(i+1)/(i+1);%权函数为1-xendendfor j=1:np(n+1-j)=(-1)^(j+1)*r(j);endp(n+1)=(-1)^(n+1);p=roots(p);应用正交配置法求解以下等温球形催化剂颗粒内反应物浓度分布,其浓度分布的数学模型为:⎪⎪⎪⎩⎪⎪⎪⎨⎧=====⎪⎭⎫ ⎝⎛S C C r dr dC r R C dr dC r dr d r ,10,0361222 解:(1)标准化令R r x /=,S C C y /=代入微分方程及边界条件得:⎪⎪⎪⎩⎪⎪⎪⎨⎧=====⎪⎭⎫ ⎝⎛1,10,036122y x dx dy x y dx dy x dx d x(2)离散化03611=-∑+=j N i i ji y y B1,2,1+=N j Λ(3)转化为代数方程组(以3=N 为例)⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡----000036363636432144434241343332312423222114131211y y y y B B B B B B B B B B B B B B B B 因为141==+y y N ,所以整理上式得:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡+----=⎥⎥⎦⎤⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡---3636363644342414321434241333231232221131211B B B B y y y B B B B B B B B B B B B 本例中的代数方程组为线性方程组,可采用线性方程组的求解方法;若为非线性方程组则采用相应的方法求解。

打靶法在常微分方程边值问题中的一些应用_安乐

0引言常微分方程边值问题是常微分方程理论的重要组成部分,在众多科学技术领域中有着非常广泛的应用,见文献[4-7]。

打靶法是解微分方程的数值方法,其基本思想是将微分方程的边值问题转化为初值问题来求解,其特点是精度高,程序简单,实用性强。

1968年P.B.Baily、L.F.Shampine、P.E.Waltman[1]结合常微分方程初值问题的基本理论和打靶法,研究了非线性二阶常微分方程两点边值问题u″=f(t,u(t),u′(t)),t∈(a,b)(1)解的存在性。

本文试图研究更广泛的非线性常微分方程两点边值问题u″=f(t,u(t),u′(t)),t∈(a,b)(2)u(a)=A,cu(b)+du′(b)=B(3)解的存在性,并讨论其唯一性,从而推广文献[1]的结果,其中c,d,A,B∈R均为常数,并且c2+d2≠0,a,b∈R为满足a<b的常数,我们将给出并证明如下结果:定理1(解的存在性)设cd>0,设f:[a,b]×R2→R 连续并且满足对第二、三变元的Lipschitz条件,如果存在常数N>0使得:│f(t,y,p)│≤N,A(t,y,p)∈[a,b]×R2(4)则对任意A,B∈R,二阶常微分方程两点边值问题(2) -(3)至少有一个解。

定理2(解的唯一性)设f:[a,b]×R2→R连续并且满足对第二、三变元的Lipschitz条件│f(t,y2,p2)-f(t,y1,p1│≤L│y2-y1│+K│P2-P1│(5)如果存在常数N>0使得:│f(t,y,p)│≤N,A(t,y,p)∈[a,b]×R2(6)则当L+K充分小时,对任意A,B∈R,二阶常微分方程两点边值问题式(2)-(3)有且仅有一个解。

特别地,当c=0时,边值问题式(2)-(3)就是著名的Robin边值问题,在力学和热学中具有重要的应用背景。

1预备结果为了证明存在性定理,我们需要如下两个预备打靶法在常微分方程边值问题中的一些应用Shooting Method in the Application of Ordinary Difference Equations Boundary Value Problem安乐An Le(天水师范学院数学与统计学院,甘肃天水741001)(College of Mathematics and Statics,Tianshui Normal University,Gansu Tianshui741001)摘要:本文运用打靶法研究非线性二阶常微分方程两点边值问题u″=f(t,u(t),u′(t)),t∈(a,b)u (a)=A,cu(b)+du′(b)=B解的存在性与唯一性,其中f:[a,b]×R2→R连续。

打靶法求边值问题matlab

打靶法求边值问题matlab近年来,数值计算方法在科学计算以及工程设计中扮演着越来越重要的角色。

在实际应用中,涉及一类叫做边界值问题(Boundary Value Problem,缩写为BVP)的问题。

而求解BVP的方法中,打靶法(Shooting Method)是最为常用的方法之一。

打靶法的核心思想是把BVP转化为一个初始值问题(Initial Value Problem,缩写为IVP),即解一组初值条件相同但方程不同的ODE(Ordinary Differential Equation)。

这个过程中需要选定一个试探的解函数,即为枪手(Shooter)。

将这个解函数带入到初始值问题中得到一组解,然后比较最终边界条件和给定的边界条件,如果不相等,则调整试探解函数的值,并重复以上的过程,直到找到满足边界条件的解函数。

在Matlab软件中,打靶法的应用非常便利,以下是基于Matlab求解BVP的打靶法步骤:步骤一:定义ODE以及边界条件定义经过两点$(x_0,y_0)$和$(x_1,y_1)$的ODE以及边界条件:$$\begin{aligned} y''(x)&=f(x,y,y') \\ y(x_0)&=y_0 \\ y(x_1)&=y_1 \end{aligned}$$其中,$f(x,y,y')$是已知的ODE方程,$y''(x)$表示$y(x)$的二阶导数。

步骤二:设置试探解函数选定一个初始的解函数作为枪手,并将其转化为一个初始值问题:$$\begin{aligned} y_{init}(x_0)&=y_0 \\ y'_{init}(x_0)&=s \end{aligned}$$其中,$s$是待定的初值,$y_{init}(x_0)$表示初始函数在$x_0$处的值。

步骤三:数值求解ODE将试探解函数带入到初始值问题中,并用数值方法求解ODE方程,得到解$y_{init}(x)$。

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

本科毕业论文(设计)论文(设计)题目:打靶法求边值问题学院:理学院专业:数学应用数学班级:091学号:0907010228学生姓名:钟玲声指导教师:汪萌萌2013年4月21日打靶法求边值问题目录摘要: (1)引言: (2)第一章常微分方程初值问题的解法 (3)1.1 常微分方程的离散化_________________________________________ 31.2 欧拉(Euler)方法___________________________________________ 41.3 改进的Euler方法____________________________________________ 61.4 龙格—库塔(Runge—Kutta)方法 _____________________________ 71.5 4阶龙格—库塔公式 __________________________________________ 91.6 线性多步法_________________________________________________ 9第二章边值问题的数值解法 (11)2.1 打靶法____________________________________________________ 112.2 差分法____________________________________________________ 15 第三章Matlab数值解 (156)3.1 常微分方程的解法_________________________________________ 1563.2 打靶法的matlab实现_______________________________________ 23致谢: (27)主要参考文献 (27)摘要常微分方程在很多领域都有非常重要的应用,然而很多常微分方程的解是无法用解析解写出的,因而要借助于数值方法。

本文介绍了常微分方程边值问题的常见解法,例如:欧拉法,龙格—库塔法等。

而对于常微分方程边值问题,常见的解法有打靶法、有限差分法和有限元法等。

在本文中,我们重点介绍了打靶法,并给出了相关算法,然后结合实例编写程序进行了上机实验。

关键词:常微分方程,初值问题,边值问题,打靶法AbstractOrdinary differential equations play an important role in different areas. However, most equations cannot be expressed analytically. We need to use numerical methods. In this paper, we discuss the methods of solving initial value problem (IVP) , such as Euler method Runge-Kutta method. For boundary value problem (BVP), shooting method, finite difference method (FDM) and finite element method(FEM) are presented. We mainly discuss shooting method and give the algorithm. Numerical experiment is presented in the end of the paper.Keywords: Ordinary differential equations, initial value problem, boundary value problem, the shooting method引言虽然常微分方程理论发展已经有几百年,但目前仍然在发展中。

特别是最近三十年,常微分方程迎来了发展的高峰。

常微分方程边值问题是常微分方程理论的重要组成部分, 在众多科学技术领域中有着特别广泛的应用。

打靶法是求解常微分方程边值问题的一种数值方法,它的基本思想是将微分方程的边值问题转化为初值问题来求解,它的比较突出的特点是精度很高,程序很简单,实用性很强。

边值问题:对n 阶常微分方程),,...,,,()1(')(-=n n y y y x f y如果能在不同的两点a 和b 处,唯一地刻画n 个附加条件,并且在区间b t a ≤≤上求解,则称此为边值问题。

在微分方程中,所谓的边值问题就是我们给定的一个微分方程和一组被我们称之为边界条件的约束条件。

边值问题的解一般情况下是符合特定的约束条件的微分方程的解。

我们在求解这个微分方程时,除了给出方程的本身,往往还需要提供一定的定解条件。

最常见的就是给出初值问题,也就是说给出的定解条件为初始条件;但是也有一些情况,定解条件要求我们考虑所讨论区域的边界,比如说在一个给定区间讨论时,把定解条件在区间的两个端点给出,给定的这种定解条件就被我们称之为边界条件,与之相应的定解问题我们就称之为边值问题。

第一章 常微分方程组初值问题的解法1.1 常微分方程的离散化下面主要讨论一阶常微分方程的初值问题,它的一般形式是 ⎪⎩⎪⎨⎧=≤≤=0)(),(y a y b x a y x f dx dy (1)在下面的讨论中,总假定函数),(y x f 连续,且满足Lipschitz 条件,也就是存在常数L ,使得|||),(),(|y y L y x f y x f -≤-那么,根据常微分方程理论知,初值问题(1)的解存在并且唯一.所谓数值解法,就是求问题(1)的解)(x y 在若干点b x x x x a N =<<<<=Λ210处的近似值),,2,1(N n y n Λ=的方法,),,2,1(N n y n Λ=称为问题(1)的数值解,n n n x x h -=+1称为由n x 到1+n x 的步长.今后如无特别说明,我们总取步长为常量h .建立数值解法,首先要将微分方程离散化,一般采用以下几种方法:1.1.1用差商近似导数 如果用向前差商hx y x y n n )()(1-+代替)('n x y 代入(1)中的微分方程,则得 ),1,0())(,()()(1Λ=≈-+n x y x f h x y x y n n n n 化简得))(,()()(1n n n n x y x hf x y x y +≈+如果用)(n x y 的近似值n y 代入上式右端,所得结果作为)(1+n x y 的近似值,记为1+n y ,那么有),1,0(),(1Λ=+=+n y x hf y y n n n n (2) 这样,问题(1)的近似解可通过求解下面的问题⎩⎨⎧==+=+)(),1,0(),(01a y y n y x hf y y n n n n Λ (3) 得到,按式(3)由初值0y 可逐次算出Λ,,21y y .式子(3)是个离散化的问题,称为差分方程初值问题.需要说明的是,用不一样的差商近似导数,将得到不一样的计算公式.1.1.2 用数值积分方法将问题(1)的解表成积分形式,用数值积分方法离散化.例如,对微分方程两端积分,得到⎰+==-+1),1,0())(,()()(1n n x x n n n dx x y x f x y x y Λ(4) 右边的积分用矩形公式或梯形公式计算.1.1.3 Taylor 多项式近似将函数)(x y 在n x 处展开,取一次Taylor 多项式近似,则得))(,()()(')()(1n n n n n n x y x hf x y x hy x y x y +=+≈+再将)(n x y 的近似值n y 代入上式右端,所得结果作为)(1+n x y 的近似值1+n y ,得到离散化的计算公式),(1n n n n y x hf y y +=+上面的三种方法都是将微分方程离散化的常用方法,每一类方法又可导出不同形式的计算公式.其中的Taylor 展开法,不仅可以得到求数值解的公式,而且容易估计截断误差.1.2欧拉(Euler )方法1.2.1 Euler 方法Euler 方法就是用差分方程初值问题(3)的解来近似微分方程初值问题(1)的解,即由公式(3)依次算出)(n x y 的近似值),2,1(Λ=n y n 。

这组公式求问题(1)的数值解称为向前Euler 公式.如果在微分方程离散化时,用向后差商代替导数,也就是hx y x y x y n n n )()()('11-≈++,则得计算公式 ⎩⎨⎧==+=+++)(),1,0(),(0111a y y n y x hf y y n n n n Λ (5) 用这组公式求问题(1)的数值解称为向后Euler 公式.向后Euler 法与Euler 法形式上相似,但实际计算时却复杂得多.向前Euler 公式是显式的,可直接求解.向后Euler 公式的右端含有1+n y ,因此是隐式公式,一般要用迭代法求解,迭代公式通常为⎪⎩⎪⎨⎧=+=+=+++++),2,1,0(),(),()(11)1(1)0(1Λk y x hf y y y x hf y y k n n n k n n n n n (6)1.2.2 Euler 方法的误差估计对于向前Euler 公式(3)我们看到,因为Λ,2,1=n 时公式右端的n y 都是近似的,所以用它计算的1+n y 会有累积误差,分析累积误差比较复杂,这里先讨论比较简单的所谓局部截断误差.假设用(3)式时右端的n y 没有误差,即)(n n x y y =,那么由此算出))(,()(1n n n n x y x hf x y y +=+ (7) 局部截断误差指的是,按(7)式计算由n x 到1+n x 这一步的计算值1+n y 与精确值)(1+n x y 之差11)(++-n n y x y .为了估计它,根据Taylor 展开得到的精确值)(1+n x y 是 )()(''2)(')()(321h O x y h x hy x y x y n n n n +++=+ (8) (7)、(8)两式相减(注意到),('y x f y =)得到)()()(''2)(23211h O h O x y h y x y n n n ≈+=-++ (9) 也就是局部截断误差是2h 阶的,而数值算法的精度定义为:如果一种算法的局部截断误差为)(1+p h O ,则称该算法具有p 阶精度. 显然p 越大,方法的精度越高。

相关文档
最新文档