有限差分法
一、单变量函数:
用中心差分法(matlab程序见附录)计算结果如下:
图1 中心差分法
图2 绝对误差
表1 数据对比
x | 0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 | 0.6 | 0.7 | 0.8 | 0.9 | 1 |
精确解y | 0 | 0.070467 | 0.14264 | 0.21824 | 0.29903 | 0.38682 | 0.48348 | 0.59099 | 0.71141 | 0.84696 | 1 |
数值解y | 0 | 0.070489 | 0.14268 | 0.2183 | 0.29911 | 0.3869 | 0.48357 | 0.59107 | 0.71148 肥料登记管理办法 | 0.847 | 1 |
绝对误差 | 0 | 2.2E-05 | 4E-05 | 6E-05 | 8E-05 | 8E-05 | 9E-05 | 线粒体8E-05 | 7E-05 | 4E-05 | 0 |
| | | | | | | | | 涨潮海岸 | | |
小结:可见由中心差分法解本算例,其绝对误差数量级为 二、一维热传导:
在此取φ(x)=0,g1(t)= g2(t)=100-100*exp(-t)
问题描述:
已知厚度为l的无限大平板,初温0度 ,初始瞬间将其放于温度为100度的流体中,流体与板面间的表面传热系数为一常数。 试确定在非稳态过程中板内的温度分布。
(1) 显式差分法:
图3 显式差分法
(2) 隐式差分法:
图4 隐式差分法
小结:显式格式仅当时格式是稳定的。(其中称为网格比) 隐式格式从k层求k+1层时,需要求解一个阶方程组。而且隐式格式的稳定性对网格比没有要求,即为绝对稳定的。
三、Possion方程:
取f=1,R=1
图5差分法
图6 误差
小结:观察误差曲面,其绝对误差数量级为
附Matlab程序:
第1题:
%===========================Boundary Value Problem 1
clear;clc;
A=[-2.01 1 0 0 0 0 0 0 0;
1 -2.01 1 0 0 0 0 0 0;
0 1 -2.01 1 0 0 0 0 0;
0 0 1 -2.01 1 0 0 0 0;
0 0 0 1 -2.01 1 0 0 0;
0 0 0 0 1 -2.01 1 0 0;
0 0 0 0 0 1 -2.01 1 0;
0 0 0 0 0 0 1 -2.01 1;
0 0 0 0 0 0 0 1 -2.01;];
c1=[0.1;0.2;0.3;0.4;0.5;0.6;0.7;0.8;0.9];
C=0.01*c1-1*[0;0;0;0;0;0;0;0;1];
y=A\C;
x=0:0.1:1;
yn=[0;y;1];
ye=2*(exp(x)-exp(-x))/(exp(1)-exp(-1))-x;
figure(1);
plot(x,yn,'*',x,ye);
legend('numerical solution','exact solution')
xlabel('x','fontsize',20);
ylabel('y',皖西学院学报'fontsize',20);
set(gca,'fontsize',18);
figure(2);
err=abs(ye'-yn);
plot(x,err);
legend('error')
xlabel('x','fontsize',20);
ylabel('y','fontsize',20);
set(gca,'fontsize',18);
第2题:
%========================Boundary Value Problem 1_Explicit
%显式
clear;clc
l=20;%板厚
h=1;%步长
J=l/h;
T=50;%时间
tao=2.5;%步长
N=T/tao;
%下面组合A矩阵
a=0.2;
lamda=tao/(h^2);
zhu=1-2*a*lamda;
ce=a*lamda;
a00=ones(1,J-1);
a0=diag(a00);
A0=zhu*a0;
a01=ones(1,J-2);
a1=diag(a01,1);
A1=ce*a1;
a2=diag(a01,-1);
A2=ce*a2;
A=A0+A1+A2;
u(:,1)=0; %板的初始温度
for i=2:N+1
u(1,i)=100-100*exp(-(i-1)*tao); %边界条件
u(J+1,i)=100-100*exp(-(i-1)*tao); %边界条件
hca
end
% g01=u(:,1);
% g02=u(:,J);
for k=1:N
% g01=ce*g1(1,k);
% g02=ce*g2(1,k);
oo=zeros(J-3,1);
g(:,k)=[ce*u(1,k);oo;ce*u(J+1,k)];
u(2:end-1,k+1)=A*u(2:end-1,k)+g(:,k);
end
t=0:h:l;
x=0:tao:T;
mesh(x,t,u)
xlabel('t','fontsize',20);
ylabel('x'间戊二烯,'fontsize',20);
zlabel('T','fontsize',20);
set(gca,'fontsize',18);
%========================Boundary Value Problem 1_2Implicit
%隐式
clear;clc
l=20;%板厚
h=1;%步长
J=l/h;
T=50;%时间
tao=2.5;%步长
N=T/tao;
%下面组合A矩阵
a=0.2;
lamda=tao/(h^2);
zhu=1+2*a*lamda;
ce=-a*lamda;
a00=ones(1,J-1);
a0=diag(a00);
A0=zhu*a0;
a01=ones(1,J-2);
a1=diag(a01,1);
A1=ce*a1;
a2=diag(a01,-1);
A2=ce*a2;
A=A0+A1+A2;
u(:,1)=0; %板的初始温度
for i=2:N+1