资源描述
两点边值问题的有限差分法
学 生 实 验 报 告
实验课程名称 偏微分方程数值解
开课实验室 数统学院
学 院 数统 年级 2013 专业班 信计2班
学 生 姓 名 学 号
开 课 时 间 2015 至 2016 学年第 2 学期
总 成 绩
教师签名
数学与统计学院制
开课学院、实验室: 数统学院 实验时间 : 2016年 月 日
实验项目
名 称
两点边值问题的有限差分法
实验项目类型
验证
演示
综合
设计
其他
指导教师
曾芳
成 绩
是
一.实验目的
通过该实验,要求学生掌握求解两点问题的有限差分法,并能通过计算机语言编程实现。
二.实验内容
考虑如下的初值问题:
(1)
(2)
其中,,,,是给定常数。
将区间等分,设,网点。
1.在第三部分写出问题(1)和(2)的差分格式,并给出该格式的局部截断误差。
2.根据你写出的差分格式,编写一个有限差分法程序。将所写程序放到第四部分。
3.给定参数,,,,问题(1)的精确解,其中将及带入方程(1)可得。分别取,用所编写的程序计算问题(1)和(2)。将数值解记为,,网点处精确解记为,。然后计算相应的误差,及收敛阶,将计算结果填入第五部分的表格,并对表格中的结果进行解释?
4. 将数值解和精确解画图显示,每种网格上的解画在一张图。
三.实验原理、方法(算法)、步骤
1. 差分格式:
=-1/h^2(-()+)+()/2h+=
A,
2. 局部阶段误差:
(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.00104256
……
0.00073524
……
20
0.00026168
1.9341
0.00018348
1.4530
40
0.00006541
2.0001
0.00004585
2.0000
80
0.00001636
1.9993
0.00001146
2.0000
160
0.00000409
2.0000
0.00000287
2.0000
N越大 只会使绝对误差变小,方法没变,所以收敛阶一致。
图示为:(绿线为解析解,蓝线为计算解)
N=10
N=20
N=40
N=80
N=160
教师签名
年 月 日
展开阅读全文