% %显式欧拉法求解热传导方程的边值问题,长杆长度为l=pi,系数a=1,k为时间步长,h为长杆长度步长,b为终止时间,假设长杆初始温度为sinx
% clear all
% k=0.01;l=pi;h=l/20;b=1;a=1;l/h+1;
% u=zeros(l/h+1,b/k);s=a^2/h^2;
% tic
% for j=1:b/k
% u(1,j)=0;u(l/h+1,j)=0;
% end
% for i=2:(l/h)
% u(i,1)=sin((i-1)*h);
% end
% A=zeros(l/h+1,l/h+1);
% A(2,2)=-2*s;A(2,3)=s;A(l/h,l/h-1)=s;A(l/h,l/h)=-2*s;
% for i=3:(l/h-1)
% A(i,i-1)=s;A(i,i)=-2*s;A(i,i+1)=s;
% end
% y=zeros(l/h+1,1);
% for j=2:b/k
% for i=1:l/h+1
% y(i)=u(i,j-1);
% end
% y=y+k*(A*y); %显式欧拉法
% for i=1:l/h+1
% u(i,j)=y(i);
% end
% end
% toc
% [x,t]=meshgrid(0:k:b-k,0:h:l);
% surf(x,t,u);
% xlabel('t'),ylabel('x'),zlabel('T');
%隐式法求解热传导方程的边值问题,长杆长度为l=pi,系数a=1,k为时间步长,h为长杆长度步长,b为终止时间,假设长杆初始温度为sinx
clear all
k=0.01;l=pi;h=l/20;b=1;a=1;l/h+1;
u=zeros(l/h+1,b/k);s=a^2/h^2;
tic
for j=1:b/k
u(1,j)=0;u(l/h+1,j)=0;
end
for i=2:(l/h)
u(i,1)=sin((i-1)*h);
end
A=zeros(l/h-1,l/h-1);
A(1,1)=1+2*k*s;A(1,2)=-k*s;A(l/h-1,l/h-2)=-k*s;A(l/h-1,l/h-1)=1+2*k*s;
for i=2:(l/h-2)
A(i,i-1)=-k*s;A(i,i)=1+2*k*s;A(i,i+1)=-k*s;
end
f=zeros(1,l/h-1);
for j=2:b/k
for i=1:l/h-1
f(i)=u(i+1,j-1);
end
[x]=zhuigan(A,f);
for i=2:l/h
u(i,j)=x(i-1);
end
end
toc
[x,t]=meshgrid(0:k:b-k,0:h:l);
surf(x,t,u);
xlabel('t'),ylabel('x'),zlabel('T');