学 生 实 验 报 告
实验课程名称 偏微分方程
开课实验室 数统学院
学 院 数统 年级 2013 专业班 信计2班
学 生 姓 名 学 号
开 课 时 间 2015 至 2016 学年第 2 学期
总 成 绩教师签名
数学与统计学院制
开课学院、实验室: 数统学院 2016年 月 日
实验项目
名 称两点边值问题的有限差分法实验项目类型验证演示综合设计其他指导教师 曾芳成 绩是一.实验目的
通过该实验,要求学生掌握问题法并能通过计算机语言编程实现。
考虑如下的初值问题:
1)
(2)
其中,,,,是给定常数。
将区间等分,设,网点。
1.在第三部分写出问题(1)和(2)的差分格式,并给出该格式的局部截断误差。
2.根据你写出的差分格式,编写一个有限差分法程序。将所写程序放到第四部分。
3.给定参数,,,,问题(1)的精确解,其中将及带入方程(1)可得。分别取,用所编写的程序计算问题(1)和(2)。将数值解记为,,网点处精确解记为,。然后计算相应的误差,及收敛阶,将计算结果填入第五部分的表格,并对表格中的结果进行解释?
4. 将数值解和精确解画图显示,每种网格上的解画在一张图。
三.实验原理、方法(算法)、步骤
差分格式:
=-1/h^2(-()+)+()/2h+=
A,
局部阶段误差:
(u)=O(h^2)
3.程序
clear all
N=10;
a=0;b=1;
p=@(x) 1;
r=@(x) 2;
q=@(x) 3;
alpha=0;beta=1;
f=@(x) (4*x^2-2)*exp(x-1);
h=(b-a)/N;
H=zeros(N-1,N-1);g=zeros(N-1,1); %
for i=1
H(i,i)=2*(p(a+(i+1/2)*h)+p(a+(i-1/2)*h))/h+2*h*q(a+i*h);
H(i,i+1)=-(2*p(a+(i+1/2)*h)/h-r(a+i*h));
g(i)=2*h*f(a+i*h)+(2*p(a+(i-1/2)*h)/h+r(a+i*h))*alpha;
end
for i=2:N-2
H(i,i-1)=-(2*p(a+(i-1/2)*h)/h+r(a+i*h));
H(i,i)=2*(p(a+(i+1/2)*h)+p(a+(i-1/2)*h))/h+2*h*q(a+i*h);
H(i,i+1)=-(2*p(a+(i+1/2)*h)/h-r(a+i*h));
g(i)=2*h*f(a+i*h);
end
for i=N-1
H(i,i-1)=-(2*p(a+(i-1/2)*h)/h+r(a+i*h));
H(i,i)=2*(p(a+(i+1/2)*h)+p(a+(i-1/2)*h))/h+2*h*q(a+i*h);
g(i)=2*h*f(a+i*h)+(2*p(a+(i+1/2)*h)/h-r(a+i*h))*beta;
end
u=H\g;
u=[alpha;u;beta];
x=a:h:b;
y=(x.^2).*exp(x-1);
plot(x,u);
hold on
plot(x,y);
y=y'
z=y-u
四.实验环境(所用软件、硬件等)及实验数据文件
Matlab
五.实验结果及实例分析
N
收敛阶
收敛阶
10
0……
0……
20
01.9341
01.4530
40
02.0001
02.0000
80
01.9993
02.0000
160
02.0000
02.0000
N越大 只会使绝对误差变小,方法没变,所以收敛阶一致。
图示为:(绿线为解析解蓝线为计算解
N=10
N=20
N=40
N=80
N=160
教师签名
年 月 日