用matlab求解抛物型方程,用最简隐格式(向后差分格式)求解抛物型方程
来源:学生作业帮 编辑:搜搜做题作业网作业帮 分类:综合作业 时间:2024/07/17 13:45:55
用matlab求解抛物型方程,用最简隐格式(向后差分格式)求解抛物型方程
要用matlab求解,但是不能用里面的求微分方程的工具来求解,就是自己编程序,要有图示的啊,并与最后的精确值2exp[(-(pi)t/4)sin2(pi)x]验证,
![](http://img.wesiedu.com/upload/a/4f/a4f1cdb5452c4f668b9854d874560d56.jpg)
要用matlab求解,但是不能用里面的求微分方程的工具来求解,就是自己编程序,要有图示的啊,并与最后的精确值2exp[(-(pi)t/4)sin2(pi)x]验证,
![](http://img.wesiedu.com/upload/a/4f/a4f1cdb5452c4f668b9854d874560d56.jpg)
![用matlab求解抛物型方程,用最简隐格式(向后差分格式)求解抛物型方程](/uploads/image/z/15707797-61-7.jpg?t=%E7%94%A8matlab%E6%B1%82%E8%A7%A3%E6%8A%9B%E7%89%A9%E5%9E%8B%E6%96%B9%E7%A8%8B%2C%E7%94%A8%E6%9C%80%E7%AE%80%E9%9A%90%E6%A0%BC%E5%BC%8F%EF%BC%88%E5%90%91%E5%90%8E%E5%B7%AE%E5%88%86%E6%A0%BC%E5%BC%8F%EF%BC%89%E6%B1%82%E8%A7%A3%E6%8A%9B%E7%89%A9%E5%9E%8B%E6%96%B9%E7%A8%8B)
你的精确定绝对有问题.
你自己将精确解代入那个泛定方程,或者初值都不符的.
%一维热传导方程的差分格式
k=1/16;
xleft=0;
xright=1;
tend=0.2;%时间终值
dx=0.1;
dt=0.05;
n=(xright-xleft)/dx;
x=xleft:dx:xright;
beta=k*dt/dx/dx;
A=diag((1+2*beta*ones(n+1,1)))+diag(-beta*ones(n,1),1)+diag(-beta*ones(n,1),-1);
Q=dt/gou/c*ones(n+1,1);
%边界条件
A(1,1)=1;
A(1,2)=0;
A(end,end)=1;
A(end,end-1)=0;
T0=25*log(2*pi*x(:));
Tseriers=T0;
leg_info{1}='t=0';
T=T0;
i=1;
for t=0:dt:tend
i=i+1;
right=T+Q;
%边界条件
right(1)=0;
right(end)=0;
T=A\right;
Tseriers=[Tseriers,T];
leg_info{i}=['t=',num2str(t)];
end
%plot(x,Tseriers)
%legend(leg_info)
plot(x,T,x,2*exp(-pi*tend/4)*sin(2*pi*x),'r*')
legend({['T=',num2str(tend)],'精确解'})
你自己将精确解代入那个泛定方程,或者初值都不符的.
%一维热传导方程的差分格式
k=1/16;
xleft=0;
xright=1;
tend=0.2;%时间终值
dx=0.1;
dt=0.05;
n=(xright-xleft)/dx;
x=xleft:dx:xright;
beta=k*dt/dx/dx;
A=diag((1+2*beta*ones(n+1,1)))+diag(-beta*ones(n,1),1)+diag(-beta*ones(n,1),-1);
Q=dt/gou/c*ones(n+1,1);
%边界条件
A(1,1)=1;
A(1,2)=0;
A(end,end)=1;
A(end,end-1)=0;
T0=25*log(2*pi*x(:));
Tseriers=T0;
leg_info{1}='t=0';
T=T0;
i=1;
for t=0:dt:tend
i=i+1;
right=T+Q;
%边界条件
right(1)=0;
right(end)=0;
T=A\right;
Tseriers=[Tseriers,T];
leg_info{i}=['t=',num2str(t)];
end
%plot(x,Tseriers)
%legend(leg_info)
plot(x,T,x,2*exp(-pi*tend/4)*sin(2*pi*x),'r*')
legend({['T=',num2str(tend)],'精确解'})