偏微分中心差分格式实验报告(含matlab程序)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二阶常微分方程的中心差分求解
学校:中国石油大学(华东)理学院 姓名:张道德
一、 实验目的
1、 构造二阶常微分边值问题:
22,(),(),d u
Lu qu f a x b
dx u a u b αβ⎧=-+=<<⎪⎨⎪==⎩
其中,q f 为[,]a b 上的连续函数,0;,q αβ≥为给定常数的中心差分格式;
2、 根据中心差分格式求解出特定例题的数值解,并与该
例题的精确解进行比较。
二、 中心差分格式的构造
将区间[,]a b 分成N 等分,分点为: 0,1,2,
,i x a ih i N =+=
()/h b a N =-。于是我们得到区间的一个网络剖分。称为网
格的节点称为步长。 得中心差分格式为:
112
02,1,2,,1,,.
i i i h i i i i N u u u L u q u f i N h u u αβ+--+⎧=-+==-⎪⎨⎪==⎩
其中式中(),()i i i i q q x f f x ==。
三、 差分格式求解
根据中心差分格式可以构造出:
11122222222
33322
212
21121001210
12
010012
00
N N N u f q h h u f q h h h u f q h h
h q u f h h ---⎡⎤⎡⎤⎡⎤+-⎢
⎥⎢⎥⎢⎥⎢
⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥-+-⎢
⎥⎢⎥⎢⎥⎢
⎥⎢⎥⎢⎥⎢⎥⎢⎥
⎢⎥=-+⎢
⎥⎢⎥⎢⎥⎢
⎥⎢⎥⎢⎥⎢
⎥⎢⎥⎢⎥-⎢⎥⎢⎥
⎢⎥⎢⎥⎢⎥⎢⎥-+⎢⎥⎢⎥⎢⎥⎣
⎦⎣⎦⎣⎦
可以看出系数矩阵为三对角矩阵,而对于系数矩阵为三对角矩阵的方程组可以用“追赶法”求解,则可以得出二阶常微分方程问题的数值解。 四、 举例求解
我们选取的二阶常微分方程边值问题为:
2
22242,01
(0)1,(1),x d u Lu x u e x dx u u e ⎧=-+=-<<⎪⎨⎪==⎩
其精确解为:2
x u e
=。则我们具体求解出的解如下:
1、 当10N =时,数值解与精确解为: (1) 表1、10N =时,数值解与精确解统计表
x 的值 0.1
0.2
0.3
0.4
0.5 u 的数值解 1.011069 1.042744 1.096904 1.176896 1.28789 u 的精确解 1.01005 1.040811 1.094174 1.173511 1.284025 两者之差 0.001019 0.001934 0.002729 0.003385 0.003864 x 的值 0.6
0.7
0.8
0.9
u 的数值解 1.437443 1.636363 1.900001 2.250209 u 的精确解 1.433329 1.632316 1.896481 2.247908 两者之差
0.004114
0.004046
0.00352
0.002301
将两者绘于同一图中如下:
(2)结论:可以看出数值解与精确解之间的误差很小, 在 210-这样一个数量级上。我们也可以求出的
|-|数值解精确解范数 来,如下:
Norm1(|-|数值解精确解)=0.0269; Norm2(|-|数值解精确解)=0.0095; Normoo(|-|数值解精确解)=0.0041;
所以,可以得出中心差分格式求解该方程效果挺好。 2、当20N =时,将数值解与精确解绘于同一图像中,如下:
0.1
0.20.30.4
0.50.60.70.80.9
x 的值
u 的数值解与精确解
图1、N=10时,数值解与精确解图像
(2)结论:可以看出数值解与精确解之间的误差很小,
在 4
10-这样一个数量级上。我们也可以求出的
|-|数值解精确解范数 来,如下:
Norm1(|-|数值解精确解)=0.0027; Norm2(|-|数值解精确解)=4
3.018810-⨯; Normoo(|-|数值解精确解)=5
4.166910-⨯;
所以,可以得出中心差分格式求解该方程效果挺好。 五、 程序 程序1
11.21.41.61.822.22.4
2.62.8x 的值
u 的数值解与精确解
图2、当N=100时,u 的数值解与精确解
%**************************************************************
%f221.m
function [q,f]=f211(x)
%q函数,f函数
q=4*x^2;
f=-2*exp(x^2);
%***************************************************************
程序2
%******************************************************************** %追赶法
function [x]=zhuiganfa(a,b,c,d)
%对角线下方的元素,个数比A少一个
% %对角线元素
%对角线上方的元素,个数比A少一个
%d为方程常数项
%用追赶法解三对角矩阵方程
r=size(a);
m=r(2);
r=size(b);
n=r(2);
if size(a)~=size(c)|m~=n-1|size(b)~=size(d)
error('变量不匹配,检查变量输入情况!');
end
%%
%LU分解
u(1)=b(1);
for i=2:n
l(i-1)=a(i-1)/u(i-1);
u(i)=b(i)-l(i-1)*c(i-1);
v(i-1)=(b(i)-u(i))/l(i-1);
end
%追赶法实现
%%
%求解Ly=d,"追"的过程
y(1)=d(1);
for i=2:n
y(i)=d(i)-l(i-1)*y(i-1);
end
%%
%求解Ux=y,"赶"的过程
x(n)=y(n)/u(n);
for i=n-1:-1:1
x(i)=y(i)/u(i);