实验课程名称 偏微分方程数值解
开课实验室 数统学院
学 院 数统 年级 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=10
N=20
N=40
N=80
N=160
教师签名
年 月 日 |