請參考這個例子。
要用matlab求解,但是不能用裏面的求微分方程的工具來求解,就是自己編程序,要有圖示的啊,並與最後的精確值2exp[(-(pi)t/4)sin2(pi)x]驗證,寫得好再加分啊
妳的精確定絕對有問題。
妳自己將精確解代入那個泛定方程,或者初值都不符的。
%壹維熱傳導方程的差分格式
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)],'精確解'})