你的位置:
首页
>
IT圈
>
一维导热方程有限差分法matlab实现
2024年6月10日发(作者:左源)
第五次作业(前三题写在作业纸上)
一、用有限差分方法求解一维非定常热传导方程,初始条件和边界条件见说明.pdf文件,
热扩散系数α=const,
T
2
T
2
tx
1. 用Tylaor展开法推导出FTCS格式的差分方程
2. 讨论该方程的相容性和稳定性,并说明稳定性要求对求解差分方程的影响。
3. 说明该方程的类型和定解条件,如何在程序中实现这些定解条件。
4. 编写M文件求解上述方程,并用适当的文字对程序做出说明。(部分由网络搜索得
到,添加,修改后得到。)
function rechuandaopde
%以下所用数据,除了t的范围我根据题目要求取到了20000,其余均从pdf中得来
a=0.00001;%a的取值
xspan=[0 1];%x的取值范围
tspan=[0 20000];%t的取值范围
ngrid=[100 10];%分割的份数,前面的是t轴的,后面的是x轴的
f=@(x)0;%初值
g1=@(t)100;%边界条件一
g2=@(t)100;%边界条件二
[T,x,t]=pdesolution(a,f,g1,g2,xspan,tspan,ngrid);%计算所调用的函数
[x,t]=meshgrid(x,t);
mesh(x,t,T);%画图,并且把坐标轴名称改为x,t,T
xlabel('x')
ylabel('t')
zlabel('T')
T%输出温度矩阵
dt=tspan(2)/ngrid(1);%t步长
h3000=3000/dt;
1 / 7
h9000=9000/dt;
h15000=15000/dt;%3000,9000,15000下,温度分别在T矩阵的哪些行
T3000=T(h3000,:)
T9000=T(h9000,:)
T15000=T(h15000,:)%输出三个时间下的温度分布
%不再对三个时间下的温度-长度曲线画图,其图像就是三维图的截面
%稳定性讨论,傅里叶级数法
dx=xspan(2)/ngrid(2);%x步长
sta=4*a*dt/(dx^2)*(sin(pi/2))^2;
if sta>0,sta<2
fprintf('n%sn','有稳定性')
else
fprintf('n%sn','没有稳定性')
error
end
%真实值计算
[xe,te,Te]=truesolution(a,f,g1,g2,xspan,tspan,ngrid);
[xe,te]=meshgrid(xe,te);
mesh(xe,te,Te);%画图,并且把坐标轴名称改为xe,te,Te
xlabel('xe')
ylabel('te')
zlabel('Te')
Te%输出温度矩阵
%误差计算
jmax=1/dx+1;%网格点数
[rms]=wuchajisuan(T,Te,jmax)
rms%输出误差
2 / 7
2024年6月10日发(作者:左源)
第五次作业(前三题写在作业纸上)
一、用有限差分方法求解一维非定常热传导方程,初始条件和边界条件见说明.pdf文件,
热扩散系数α=const,
T
2
T
2
tx
1. 用Tylaor展开法推导出FTCS格式的差分方程
2. 讨论该方程的相容性和稳定性,并说明稳定性要求对求解差分方程的影响。
3. 说明该方程的类型和定解条件,如何在程序中实现这些定解条件。
4. 编写M文件求解上述方程,并用适当的文字对程序做出说明。(部分由网络搜索得
到,添加,修改后得到。)
function rechuandaopde
%以下所用数据,除了t的范围我根据题目要求取到了20000,其余均从pdf中得来
a=0.00001;%a的取值
xspan=[0 1];%x的取值范围
tspan=[0 20000];%t的取值范围
ngrid=[100 10];%分割的份数,前面的是t轴的,后面的是x轴的
f=@(x)0;%初值
g1=@(t)100;%边界条件一
g2=@(t)100;%边界条件二
[T,x,t]=pdesolution(a,f,g1,g2,xspan,tspan,ngrid);%计算所调用的函数
[x,t]=meshgrid(x,t);
mesh(x,t,T);%画图,并且把坐标轴名称改为x,t,T
xlabel('x')
ylabel('t')
zlabel('T')
T%输出温度矩阵
dt=tspan(2)/ngrid(1);%t步长
h3000=3000/dt;
1 / 7
h9000=9000/dt;
h15000=15000/dt;%3000,9000,15000下,温度分别在T矩阵的哪些行
T3000=T(h3000,:)
T9000=T(h9000,:)
T15000=T(h15000,:)%输出三个时间下的温度分布
%不再对三个时间下的温度-长度曲线画图,其图像就是三维图的截面
%稳定性讨论,傅里叶级数法
dx=xspan(2)/ngrid(2);%x步长
sta=4*a*dt/(dx^2)*(sin(pi/2))^2;
if sta>0,sta<2
fprintf('n%sn','有稳定性')
else
fprintf('n%sn','没有稳定性')
error
end
%真实值计算
[xe,te,Te]=truesolution(a,f,g1,g2,xspan,tspan,ngrid);
[xe,te]=meshgrid(xe,te);
mesh(xe,te,Te);%画图,并且把坐标轴名称改为xe,te,Te
xlabel('xe')
ylabel('te')
zlabel('Te')
Te%输出温度矩阵
%误差计算
jmax=1/dx+1;%网格点数
[rms]=wuchajisuan(T,Te,jmax)
rms%输出误差
2 / 7