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