Example 7.12 Diffusion in a Cylinder 

> restart:
 

> with(plots):
 

> eq:=diff(u(x,y),y$2)=-diff(u(x,y),x$2)-1/x*diff(u(x,y),x);
 

diff(diff(u(x, y), y), y) = `+`(`-`(diff(diff(u(x, y), x), x)), `-`(`/`(`*`(diff(u(x, y), x)), `*`(x)))) (1)
 

> bc1:=diff(u(x,y),x)=0;
 

diff(u(x, y), x) = 0 (2)
 

> bc2:=u(x,y)=0;
 

u(x, y) = 0 (3)
 

> bc3:=u(x,y)=1;
 

u(x, y) = 1 (4)
 

> bc4:=diff(u(x,y),x)=0;
 

diff(u(x, y), x) = 0 (5)
 

> Eq:=subs(u(x,y)=X(x)*Y(y),eq);
 

diff(diff(`*`(X(x), `*`(Y(y))), y), y) = `+`(`-`(diff(diff(`*`(X(x), `*`(Y(y))), x), x)), `-`(`/`(`*`(diff(`*`(X(x), `*`(Y(y))), x)), `*`(x)))) (6)
 

> Eq:=expand(Eq/X(x)/Y(y));
 

`/`(`*`(diff(diff(Y(y), y), y)), `*`(Y(y))) = `+`(`-`(`/`(`*`(diff(diff(X(x), x), x)), `*`(X(x)))), `-`(`/`(`*`(diff(X(x), x)), `*`(X(x), `*`(x))))) (7)
 

> Eq_Y:=lhs(Eq)=lambda^2:
 

> Eq_Y:=eval(Eq_Y*Y(y));
 

diff(diff(Y(y), y), y) = `*`(Y(y), `*`(`^`(lambda, 2))) (8)
 

> dsolve(Eq_Y,Y(y));
 

Y(y) = `+`(`*`(_C1, `*`(exp(`*`(lambda, `*`(y))))), `*`(_C2, `*`(exp(`+`(`-`(`*`(lambda, `*`(y)))))))) (9)
 

> Y(y):=C[1]*sinh(lambda*y)+C[2]*cosh(lambda*y);
 

`+`(`*`(C[1], `*`(sinh(`*`(lambda, `*`(y))))), `*`(C[2], `*`(cosh(`*`(lambda, `*`(y)))))) (10)
 

> Bc4:=diff(Y(y),y)=0;
 

`+`(`*`(C[1], `*`(cosh(`*`(lambda, `*`(y))), `*`(lambda))), `*`(C[2], `*`(sinh(`*`(lambda, `*`(y))), `*`(lambda)))) = 0 (11)
 

> Eq_Bc4:=eval(subs(y=1,Bc4));
 

`+`(`*`(C[1], `*`(cosh(lambda), `*`(lambda))), `*`(C[2], `*`(sinh(lambda), `*`(lambda)))) = 0 (12)
 

> C[2]:=solve(Eq_Bc4,C[2]);
 

`+`(`-`(`/`(`*`(C[1], `*`(cosh(lambda))), `*`(sinh(lambda))))) (13)
 

> Y(y):=eval(Y(y));
 

`+`(`*`(C[1], `*`(sinh(`*`(lambda, `*`(y))))), `-`(`/`(`*`(C[1], `*`(cosh(lambda), `*`(cosh(`*`(lambda, `*`(y)))))), `*`(sinh(lambda))))) (14)
 

> combine(Y(y));
 

`+`(`-`(`/`(`*`(C[1], `*`(cosh(`+`(`-`(lambda), `*`(lambda, `*`(y)))))), `*`(sinh(lambda))))) (15)
 

> Y(y):=C[1]*cosh(lambda*(1-y))/sinh(lambda);
 

`/`(`*`(C[1], `*`(cosh(`*`(lambda, `*`(`+`(1, `-`(y))))))), `*`(sinh(lambda))) (16)
 

> Eq_X:=rhs(Eq)=lambda^2:
 

> Eq_X:=expand(Eq_X*X(x));
 

`+`(`-`(diff(diff(X(x), x), x)), `-`(`/`(`*`(diff(X(x), x)), `*`(x)))) = `*`(X(x), `*`(`^`(lambda, 2))) (17)
 

> dsolve({Eq_X},X(x));
 

{X(x) = `+`(`*`(_C1, `*`(BesselJ(0, `*`(lambda, `*`(x))))), `*`(_C2, `*`(BesselY(0, `*`(lambda, `*`(x))))))} (18)
 

> X(x):=c[1]*BesselJ(0,lambda*x)+c[2]*BesselY(0,lambda*x);
 

`+`(`*`(c[1], `*`(BesselJ(0, `*`(lambda, `*`(x))))), `*`(c[2], `*`(BesselY(0, `*`(lambda, `*`(x)))))) (19)
 

> Bc1:=diff(X(x),x)=0;
 

`+`(`-`(`*`(c[1], `*`(BesselJ(1, `*`(lambda, `*`(x))), `*`(lambda)))), `-`(`*`(c[2], `*`(BesselY(1, `*`(lambda, `*`(x))), `*`(lambda))))) = 0 (20)
 

> Bc2:=X(x)=0;
 

`+`(`*`(c[1], `*`(BesselJ(0, `*`(lambda, `*`(x))))), `*`(c[2], `*`(BesselY(0, `*`(lambda, `*`(x)))))) = 0 (21)
 

> BesselJ(0,0);
 

1 (22)
 

> limit(BesselY(0,lambda*x),x=0);
 

`+`(`-`(infinity)) (23)
 

> c[2]:=0;
 

0 (24)
 

> Eq_Bc2:=eval(subs(x=1,Bc2));
 

`*`(c[1], `*`(BesselJ(0, lambda))) = 0 (25)
 

> Eq_Eig:=BesselJ(0,lambda)=0;
 

BesselJ(0, lambda) = 0 (26)
 

> l[1]:=fsolve(Eq_Eig,lambda=0..3);
 

2.404825558 (27)
 

> N:=20;
 

20 (28)
 

> for i from 2 to N do l[i]:=fsolve(Eq_Eig,lambda=l[i-1]..l[i-1]+4);od:
 

> seq(l[i],i=1..N);
 

2.404825558, 5.520078110, 8.653727913, 11.79153444, 14.93091771, 18.07106397, 21.21163663, 24.35247153, 27.49347913, 30.63460647, 33.77582021, 36.91709835, 40.05842576, 43.19979171, 46.34118837, 49.48...
2.404825558, 5.520078110, 8.653727913, 11.79153444, 14.93091771, 18.07106397, 21.21163663, 24.35247153, 27.49347913, 30.63460647, 33.77582021, 36.91709835, 40.05842576, 43.19979171, 46.34118837, 49.48...
2.404825558, 5.520078110, 8.653727913, 11.79153444, 14.93091771, 18.07106397, 21.21163663, 24.35247153, 27.49347913, 30.63460647, 33.77582021, 36.91709835, 40.05842576, 43.19979171, 46.34118837, 49.48...
(29)
 

> U:=eval(X(x)*Y(y)):
 

> Un:=subs(c[1]=A[n]/C[1],lambda=lambda[n],U);
 

`/`(`*`(A[n], `*`(BesselJ(0, `*`(lambda[n], `*`(x))), `*`(cosh(`*`(lambda[n], `*`(`+`(1, `-`(y)))))))), `*`(sinh(lambda[n]))) (30)
 

> u(x,y):=Sum(Un,n=1..N):
 

> eq_An:=eval(subs(y=0,u(x,y)))=rhs(bc3);
 

Sum(`/`(`*`(A[n], `*`(BesselJ(0, `*`(lambda[n], `*`(x))), `*`(cosh(lambda[n])))), `*`(sinh(lambda[n]))), n = 1 .. 20) = 1 (31)
 

> phi[n]:=BesselJ(0,lambda[n]*x);
 

BesselJ(0, `*`(lambda[n], `*`(x))) (32)
 

> r(x):=x;
 

x (33)
 

> I1:=int(phi[n]^2*r(x),x=0..1):
 

> I2:=int(1*phi[n]*r(x),x=0..1):
 

> A[n]:=I2/I1/cosh(lambda[n])*sinh(lambda[n]);
 

`+`(`/`(`*`(2, `*`(BesselJ(1, lambda[n]), `*`(`^`(Pi, `/`(1, 2)), `*`(sinh(lambda[n]))))), `*`(`+`(`*`(`^`(Pi, `/`(1, 2)), `*`(lambda[n], `*`(`^`(BesselJ(0, lambda[n]), 2)))), `*`(`^`(Pi, `/`(1, 2)), ... (34)
 

> u(x,y):=eval(u(x,y));
 

Sum(`+`(`/`(`*`(2, `*`(BesselJ(1, lambda[n]), `*`(`^`(Pi, `/`(1, 2)), `*`(BesselJ(0, `*`(lambda[n], `*`(x))), `*`(cosh(`*`(lambda[n], `*`(`+`(1, `-`(y)))))))))), `*`(`+`(`*`(`^`(Pi, `/`(1, 2)), `*`(la... (35)
 

> for i to N do lambda[i]:=l[i];od:
 

> ua:=evalf(u(x,y)):
 

> uu:=piecewise(y=0,1,y>0,ua):
 

> plot3d(evalf(uu),x=0..1,y=1..0,axes=boxed,title="Figure Exp. 7.28.",labels=[x,y,"u"],orientation=[30,60]);
 

Plot
 

> plot([subs(y=0,uu),subs(y=0.1,uu),subs(y=0.2,uu),subs(y=0.3,uu),subs(y=0.4,uu),subs(y=1,uu)],x=0..1,axes=boxed,title="Figure Exp. 7.29.",thickness=5,labels=[x,"u"],legend=["y=0","y=0.1","y=0.2","y=0.3","y=0.4","y=1.0"]);
 

Plot_2d
 

>