Example 7.2 Heat Conduction with an Insular Boundary Condition
| > |
| > | with(plots): |
| > | eq:=diff(u(x,t),t)=diff(u(x,t),x$2); |
| (1) |
| > | IC:=u(x,0)=1; |
| (2) |
| > | bc1:=diff(u(x,t),x)=0; |
| (3) |
| > | bc2:=u(x,t)=0; |
| (4) |
| > | Eq:=subs(u(x,t)=X(x)*T(t),eq): |
| > | Eq:=Eq/X(x)/T(t): |
| > | Eq_T:=lhs(Eq)=-lambda^2: |
| > | T(t):=rhs(dsolve({Eq_T,T(0)=T0},T(t))); |
| (5) |
| > | Eq_X:=rhs(Eq)=-lambda^2: |
| > | X(x):=rhs(dsolve({Eq_X,D(X)(0)=c[1]*lambda,X(0)=c[2]},X(x))): |
| > | Bc1:=diff(X(x),x)=0: |
| > | Bc2:=X(x)=0: |
| > | Eq_Bc1:=eval(subs(x=0,Bc1)): |
| > | c[1]:=solve(Eq_Bc1,c[1]): |
| > | Eq_Bc2:=eval(subs(x=1,Bc2)): |
| > | Eq_Eig:=cos(lambda)=0; |
| (6) |
| > | _EnvAllSolutions := true: |
| > | solve(Eq_Eig,lambda); |
| (7) |
| > | U:=eval(X(x)*T(t)): |
| > | Un:=subs(c[2]=A[n]/T0,lambda=lambda[n],U): |
| > | u(x,t):=Sum(Un,n=0..infinity): |
| > | u(x,t):=subs(lambda[n]=(2*n+1)/2*Pi,u(x,t)); |
| (8) |
| > | eq_An:=eval(subs(t=0,u(x,t)))=rhs(IC); |
| (9) |
| > | I1:=int((cos(1/2*(2*n+1)*Pi*x))^2,x=0..1): |
| > | I2:=int(cos(1/2*(2*n+1)*Pi*x),x=0..1): |
| > | vars:={sin(n*Pi)=0}: |
| > | I1:=subs(vars,I1): |
| > | A[n]:=I2/I1; |
![]() |
(10) |
| > | u(x,t):=eval(u(x,t)); |
![]() |
(11) |
| > | u(x,t):=subs(infinity=N,u(x,t)): |
| > | ua:=subs(N=20,u(x,t)): |
| > | uu:=piecewise(t=0,rhs(IC),t>0,ua); |
![]() |
(12) |
| > | plot3d(uu,x=1..0,t=0.3..0,axes=boxed,title="Figure Exp. 7.5.",labels=[x,t,"u"],orientation=[60,60]); |
![]() |
| > | plot([subs(t=0,uu),subs(t=0.01,uu),subs(t=0.05,uu),subs(t=0.1,uu),subs(t=0.2,uu)],x=0..1,axes=boxed,title="Figure Exp. 7.6.",thickness=5,labels=[x,"u"],legend=["t=0","t=0.01","t=0.05","t=0.1","t=0.2"]); |
![]() |
| > |