二阶常微分方程边值问题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
有限差分方法具有简单、灵活以及通用性强等特点,容易在计算机上实现
二、二阶常微分方程
二阶常微分方程一般可表示成如下的形式:
y (x) f(x,y,y) a x b(2.1)
边值条件有如下三类[9]:
第一类边值条件
y(a)y(b)(2.2)
第二类边值条件
y (a)y(b)(2.3)
第三类边值条件[19]
o y(a) i y (a)o y(b) 1y (b)(2.4)
其中0 1 00 1 0
0 1 0
0 1
o
在对边值问题用数值方法求解之前,应该从理论上分析该边值问题的解是否存在,若问题的解不存在,用数值方法计算出来的数据没有任何意义。下面的定理给出了边值问题存在唯一解的充分条件。
定理:设方程(2.1)中的函数f及y, y在区域
{(x,y,y)|a x b, y,y }内连续,并且
f(x, y,y)
(ii) y 在内有界,即存在常数M ,使得
」(x
,y ,y ). M
y (x, y, y )
则边值问题(2.1)-(2.4)
的解存在且唯一。
我们假设函数f(x,y ,y )可以简单地表示成
f(x, y, y ) p(x)y q(x)y r(x)
即边值问题(2.1)-(2.2)
为具有如下形式的二阶线性边值问题
y P(x)y q(x)y r(x), y(a) , y(b)
三、有限差分法:
有限差分方法是用于微分方程定解问题求解的最广泛的数值方法,其基本 思想是用离散的、只含有有限个未知量的差分方程去近似代替连续变量的微分 方程和定解条件,并把相应的差分方程的解作为微分方程定解问题的近似解。
有限差分逼近的相关概念 设函数f(x)光滑,且Oh 1,利用Taylor 展开,可得
2
h 3
y(x) hy(x)
2y(x) 3八"
h 2
h 3
y(x) hy(x) 2y(x) 3y (x)
由(2.19)可以得到一阶导数的表达式
2
y(x h) y(x) h
h
y (x)
— y (x) c y (x) h
2 3
或者
f(x,y,y) 0
(i) y
(x, y, y)
(2.5)
y(x h)
y(x h)
(2.19) (2.20)
(2.21a)
y (x )y(x h) y(x) o (h )
h
(2.21b)
同理由(2.20)
式可得 h / 、 h 2
/ 、 —y (x) — y (x) 2 3 y(x) y(x) y(x h) h 或者
y(x) y(x) y(x h)
O(h)
h (2.22b)
(2.22a)
其中O(h)表示截断误差项.
因此,可得一阶导数的 y (x)
的差分近似表达式为
y(x) y(x h) y(x) h (2.23) y(x) y(x) y(x h) h (2.24)
由(2.21)和(2.22)可知,差商(2.23)和(2.24)
逼近微商y (x)的精度为一阶,
即为O(h),为了得到更精确的差分表达式,将(2.19)减(2.20)可得
2h ?
y(x h) y(x h) 2hy (x) y (x) (2.25)
从而可以的到 y(x)
y(x h) y(x h) S()
6
2h (2.26a)
或者 y(x) y(x h) y(x h)
o(h 2) 2h (2.26b)
其中,x
可得一阶导数
y (x)的差分近似表达式为
y(x) y(x
h) y(x h)
2h
(2.27)
2
由此可知,(2.16)差商逼近微商y(x)的精度为二阶,即为O(h)。
类似地,我们还可以给出二阶微商 y
(X )和高阶微商的差分近似表达式。例
如将(2.19)和(2.20)
两式相加可得 h 2 y (X h )y (X h )2y (X )h2y (X )12
y (4)(X )
进而有 2
y (X ) y (X h) 2y(x) y (X
h) h 、,⑷() y (X) ------------------------ 2 12 y (丿
h 2
(2.28)
其中X h X h
.
因此,二阶导数y (X)
的差分近似表达式[8]为 y (X ) y(X h) 2y (X) y(X h) O(h 2)
h (2.29)
实验内容(方法和步骤): 差分法代码如下 clc; clear all h=0.05;
%x 属于【a,b ] a=-1;b=1; x=a:h:b;
n=le ngth(x);
%定义y
syms y;
y=(((x+2).*(x+2))“(-1));
hold on
grid on
yx=zeros(1, n);
yxx=zeros(1, n);
for i=2: n-1
yx(i-1)=(y(i+1)-y(i-1))/(2*h);
yxx(i-1)=(y(i+1)+y(i-1)-2*y(i))/h A2;
end
plot(x,y,'r','li newidth',2)
plot(x(2: n-1),yx(1: n-2),'g','li newidth',2); plot(x(2: n-1),yxx(1: n-2),'b','li newidth',2);