> restart:#"m11_p35"

Se trata de obtener soluciones (principales) de la ecuación del calor, du/dt=a*Laplacian(u) (es decir, sin considerar las condiciones de contorno. Se aplica a deposiciones instantáneas).

a) Demostrar que u(t, r) = `/`(`*`(exp(`+`(`-`(`*`(`^`(r, 2), `*`(`/`(`+`(`*`(4, `*`(a, `*`(t))))))))))), `*`(`^`(sqrt(`+`(`*`(4, `*`(Pi, `*`(a, `*`(t)))))), `+`(n, 1))))

es solución para n=0=plana, n=1=cil, n=2=esf.

b) Demostrarlo mediante el cambio u/x,y,z,t)=X(x,t)Y(y,t)Z(z,t).

c) Obtener soluciones con el cambio r=xi*sqrt(4at).

Datos:

> read`../therm_eq.m`:eq11_5_6;

T[t] = `*`(a, `*`(`+`(T[rr], `/`(`*`(2, `*`(T[r])), `*`(r)), `/`(`*`(T[theta, theta]), `*`(`^`(r, 2))), `/`(`*`(cot(theta), `*`(T[theta])), `*`(`^`(r, 2))), `/`(`*`(T[phi, phi]), `*`(`^`(r, 2), `*`(`^...

Formas simétricas, i.e. unidimensionales.

Ec. general (n=0=plana, n=1=cil, n=2=esf):

> deq:=diff(u(t,r),t)-a*(1/r^n)*'diff(r^n*diff(u(t,r),r),r)'=0;

`+`(diff(u(t, r), t), `-`(`/`(`*`(a, `*`(diff(`*`(`^`(r, n), `*`(diff(u(t, r), r))), r))), `*`(`^`(r, n))))) = 0

Solución particular general (n=0=plana, n=1=cil, n=2=esf):

> dsoln:=u(t,r)=exp(-r^2/(4*a*t))/sqrt(4*Pi*a*t)^(n+1);

u(t, r) = `/`(`*`(exp(`+`(`-`(`/`(`*`(`/`(1, 4), `*`(`^`(r, 2))), `*`(a, `*`(t))))))), `*`(`^`(`+`(`*`(2, `*`(`^`(`*`(Pi, `*`(a, `*`(t))), `/`(1, 2))))), `+`(n, 1))))

Comprobación:

> for n from 0 to 2 do expand(deq);simplify(expand(eval(subs(dsoln,deq))));od;n:='n':

`+`(diff(u(t, r), t), `-`(`*`(a, `*`(diff(diff(u(t, r), r), r))))) = 0
0 = 0
`+`(diff(u(t, r), t), `-`(`/`(`*`(a, `*`(diff(u(t, r), r))), `*`(r))), `-`(`*`(a, `*`(diff(diff(u(t, r), r), r))))) = 0
0 = 0
`+`(diff(u(t, r), t), `-`(`/`(`*`(2, `*`(a, `*`(diff(u(t, r), r)))), `*`(r))), `-`(`*`(a, `*`(diff(diff(u(t, r), r), r))))) = 0
0 = 0

a) Obtención de soluciones por separación de variables:

> eqSepVar:=u(x,y,z,t)=X(x,t)*Y(y,t)*Z(z,t);with(linalg):deq0:=diff(u(x,y,z,t),t)-a*laplacian(u(x,y,z,t),[x,y,z])=0;collect(expand(subs(eqSepVar,deq0)/rhs(eqSepVar)),[X,Y,Z]);

u(x, y, z, t) = `*`(X(x, t), `*`(Y(y, t), `*`(Z(z, t))))
`+`(diff(u(x, y, z, t), t), `-`(`*`(a, `*`(`+`(diff(diff(u(x, y, z, t), x), x), diff(diff(u(x, y, z, t), y), y), diff(diff(u(x, y, z, t), z), z)))))) = 0
`+`(`/`(`*`(`+`(diff(Z(z, t), t), `-`(`*`(a, `*`(diff(diff(Z(z, t), z), z)))))), `*`(Z(z, t))), `/`(`*`(`+`(diff(Y(y, t), t), `-`(`*`(a, `*`(diff(diff(Y(y, t), y), y)))))), `*`(Y(y, t))), `/`(`*`(`+`(...

> deqX:=subs(n=0,deq);xi(x,t):=x/sqrt(4*a*t);eq1:='diff(u(t,x),t)'=diff(u(xi),xi)*diff(xi(x,t),t);eq1_:=subs(x=xi*sqrt(4*a*t),rhs(eq1));eq2:='diff(u(t,x),x,x)'=diff(u(xi),xi,xi)*diff(xi(x,t),x)^2;subs(n=0,eq2);deqX_:=expand((-eq1_+a*rhs(eq2))*4*t=0);dsol1:=expand(dsolve(deqX_,u(xi)));equ:=u(t,x)=rhs(subs(xi=x/sqrt(4*a*t),dsol1));

`+`(diff(u(t, r), t), `-`(`*`(a, `*`(diff(diff(u(t, r), r), r))))) = 0
`+`(`/`(`*`(`/`(1, 2), `*`(x)), `*`(`^`(`*`(a, `*`(t)), `/`(1, 2)))))
diff(u(t, x), t) = `+`(`-`(`/`(`*`(`/`(1, 4), `*`(diff(u(xi), xi), `*`(x, `*`(a)))), `*`(`^`(`*`(a, `*`(t)), `/`(3, 2))))))
`+`(`-`(`/`(`*`(`/`(1, 2), `*`(diff(u(xi), xi), `*`(xi))), `*`(t))))
diff(u(t, x), x, x) = `+`(`/`(`*`(`/`(1, 4), `*`(diff(diff(u(xi), xi), xi))), `*`(a, `*`(t))))
diff(diff(u(t, x), x), x) = `+`(`/`(`*`(`/`(1, 4), `*`(diff(diff(u(xi), xi), xi))), `*`(a, `*`(t))))
`+`(`*`(2, `*`(diff(u(xi), xi), `*`(xi))), diff(diff(u(xi), xi), xi)) = 0
Error, (in ODEtools/info) expected the indeterminate function as, say, F(x) where x is of type "name" - and also cannot be a procedure name. Received: [u(xi)]
Error, invalid input: rhs received dsol1, which is not valid for its 1st argument, expr

No funciona con la variable griega xi; cambiemos a xi_.

> dsol1:=dsolve({2*diff(u(xi_),xi_)*xi_+diff(u(xi_),xi_,xi_)=0,u(0)=1,u(zetaf)=0},u(xi_));dsol1:=subs(xi_=xi,%);equ:=u(t,x)=rhs(subs(xi=x/sqrt(4*a*t),dsol1));

u(xi_) = `+`(1, `-`(`/`(`*`(erf(xi_)), `*`(erf(zetaf)))))
u(xi) = `+`(1, `-`(`/`(`*`(erf(xi)), `*`(erf(zetaf)))))
u(t, x) = `+`(1, `-`(`/`(`*`(erf(`+`(`/`(`*`(`/`(1, 2), `*`(x)), `*`(`^`(`*`(a, `*`(t)), `/`(1, 2))))))), `*`(erf(zetaf)))))

Es fácil ver que si u(t,x) es una solución de du/dt=ad2u/dx2, también lo son sus derivadas parciales de cualquier orden, luego:

> equt:=u(t,x)=diff(rhs(equ),t);equx:=u(t,x)=diff(rhs(equ),x);

u(t, x) = `+`(`/`(`*`(`/`(1, 2), `*`(exp(`+`(`-`(`/`(`*`(`/`(1, 4), `*`(`^`(x, 2))), `*`(a, `*`(t)))))), `*`(x, `*`(a)))), `*`(`^`(Pi, `/`(1, 2)), `*`(`^`(`*`(a, `*`(t)), `/`(3, 2)), `*`(erf(zetaf))))...
u(t, x) = `+`(`-`(`/`(`*`(exp(`+`(`-`(`/`(`*`(`/`(1, 4), `*`(`^`(x, 2))), `*`(a, `*`(t))))))), `*`(`^`(Pi, `/`(1, 2)), `*`(`^`(`*`(a, `*`(t)), `/`(1, 2)), `*`(erf(zetaf)))))))

Combinando u=XYZ queda:

> eqXYZ:=u(x,y,z,t)=subs(_C1=0,rhs(equ)*subs(x=y,rhs(equ))*subs(x=z,rhs(equ)));eqXYZ:=u(x,y,z,t)=C2*erf(r/sqrt(4*a*t));eqXYZt:=u(x,y,z,t)=subs(_C1=0,rhs(equt)*subs(x=y,rhs(equt))*subs(x=z,rhs(equt)));eqXYZx:=u(x,y,z,t)='C3*exp(-r^2/(4*a*t))/(4*Pi*a*t)^(3/2)';

u(x, y, z, t) = `*`(`+`(1, `-`(`/`(`*`(erf(`+`(`/`(`*`(`/`(1, 2), `*`(x)), `*`(`^`(`*`(a, `*`(t)), `/`(1, 2))))))), `*`(erf(zetaf))))), `*`(`+`(1, `-`(`/`(`*`(erf(`+`(`/`(`*`(`/`(1, 2), `*`(y)), `*`(`...
u(x, y, z, t) = `*`(C2, `*`(erf(`+`(`/`(`*`(`/`(1, 2), `*`(r)), `*`(`^`(`*`(a, `*`(t)), `/`(1, 2))))))))
u(x, y, z, t) = `+`(`/`(`*`(`/`(1, 8), `*`(exp(`+`(`-`(`/`(`*`(`/`(1, 4), `*`(`^`(x, 2))), `*`(a, `*`(t)))))), `*`(x, `*`(`^`(a, 3), `*`(exp(`+`(`-`(`/`(`*`(`/`(1, 4), `*`(`^`(y, 2))), `*`(a, `*`(t)))...
u(x, y, z, t) = `+`(`/`(`*`(`/`(1, 16), `*`(C3, `*`(exp(`+`(`-`(`/`(`*`(`/`(1, 4), `*`(`^`(r, 2))), `*`(a, `*`(t)))))), `*`(`^`(4, `/`(1, 2)))))), `*`(`^`(`*`(Pi, `*`(a, `*`(t))), `/`(3, 2)))))

Esta última coincide con dsoln para x2=r2, para x2+y2=r2, y para x2+y2+z2=r2, como se quería demostrar.

b) Obtención de soluciones por otro camino:

> xi(r,t):=r/sqrt(4*a*t);eq1:='diff(u(t,r),t)'=diff(u(xi),xi)*diff(xi(r,t),t);eq1_:=subs(r=xi*sqrt(4*a*t),rhs(eq1));aux1:='(r^n)'=(xi*sqrt(4*a*t))^n;aux2:='diff(u(t,r),r)'=diff(u(xi),xi)*diff(xi(r,t),r);eq2:='(1/r^n)*diff(r^n*diff(u(t,r),r),r)'=(1/rhs(aux1))*diff(rhs(aux1)*rhs(aux2),xi)*diff(xi(r,t),r);

`+`(`/`(`*`(`/`(1, 2), `*`(r)), `*`(`^`(`*`(a, `*`(t)), `/`(1, 2)))))
diff(u(t, r), t) = `+`(`-`(`/`(`*`(`/`(1, 4), `*`(diff(u(xi), xi), `*`(r, `*`(a)))), `*`(`^`(`*`(a, `*`(t)), `/`(3, 2))))))
`+`(`-`(`/`(`*`(`/`(1, 2), `*`(diff(u(xi), xi), `*`(xi))), `*`(t))))
`^`(r, n) = `^`(`+`(`*`(2, `*`(xi, `*`(`^`(`*`(a, `*`(t)), `/`(1, 2)))))), n)
diff(u(t, r), r) = `+`(`/`(`*`(`/`(1, 2), `*`(diff(u(xi), xi))), `*`(`^`(`*`(a, `*`(t)), `/`(1, 2)))))
`/`(`*`(diff(`*`(`^`(r, n), `*`(diff(u(t, r), r))), r)), `*`(`^`(r, n))) = `+`(`/`(`*`(`/`(1, 2), `*`(`+`(`/`(`*`(`/`(1, 2), `*`(`^`(`+`(`*`(2, `*`(xi, `*`(`^`(`*`(a, `*`(t)), `/`(1, 2)))))), n), `*`(...

Hemos pasado de la PDE a la ODE:

> deqn_:=expand(-2*t*(eq1_-a*rhs(eq2)=0));

`+`(`*`(diff(u(xi), xi), `*`(xi)), `/`(`*`(`/`(1, 2), `*`(n, `*`(diff(u(xi), xi)))), `*`(xi)), `*`(`/`(1, 2), `*`(diff(diff(u(xi), xi), xi)))) = 0

cuya solución general es:

> dsoln:=dsolve(deqn_,u(xi));dsol0:=dsolve(subs(n=0,deqn_),u(xi));dsol1:=dsolve(subs(n=1,deqn_),u(xi));dsol2:=dsolve(subs(n=2,deqn_),u(xi));

Error, (in ODEtools/info) expected the indeterminate function as, say, F(x) where x is of type "name" - and also cannot be a procedure name. Received: [u(xi)]
Error, (in ODEtools/info) expected the indeterminate function as, say, F(x) where x is of type "name" - and also cannot be a procedure name. Received: [u(xi)]
Error, (in ODEtools/info) expected the indeterminate function as, say, F(x) where x is of type "name" - and also cannot be a procedure name. Received: [u(xi)]
Error, (in ODEtools/info) expected the indeterminate function as, say, F(x) where x is of type "name" - and also cannot be a procedure name. Received: [u(xi)]

Otra vez cambiamos xi a xi_.

> dsoln:=subs(xi_=xi,dsolve(subs(xi=xi_,deqn_),u(xi_)));dsol0:=subs(xi_=xi,dsolve(subs(n=0,xi=xi_,deqn_),u(xi_)));dsol1:=subs(xi_=xi,dsolve(subs(n=1,xi=xi_,deqn_),u(xi_)));dsol2:=subs(xi_=xi,dsolve(subs(n=2,xi=xi_,deqn_),u(xi_)));

u(xi) = `+`(_C1, `*`(`+`(`/`(`*`(2, `*`(`^`(xi, `+`(`-`(n), 1)), `*`(`^`(`*`(`^`(xi, 2)), `+`(`*`(`/`(1, 4), `*`(n)), `-`(`/`(1, 4)))), `*`(exp(`+`(`-`(`*`(`/`(1, 2), `*`(`^`(xi, 2)))))), `*`(Whittake...
u(xi) = `+`(_C1, `*`(`+`(`/`(`*`(2, `*`(`^`(xi, `+`(`-`(n), 1)), `*`(`^`(`*`(`^`(xi, 2)), `+`(`*`(`/`(1, 4), `*`(n)), `-`(`/`(1, 4)))), `*`(exp(`+`(`-`(`*`(`/`(1, 2), `*`(`^`(xi, 2)))))), `*`(Whittake...
u(xi) = `+`(_C1, `*`(erf(xi), `*`(_C2)))
u(xi) = `+`(_C1, `*`(Ei(1, `*`(`^`(xi, 2))), `*`(_C2)))
u(xi) = `+`(_C1, `/`(`*`(`+`(exp(`+`(`-`(`*`(`^`(xi, 2))))), `*`(`^`(Pi, `/`(1, 2)), `*`(erf(xi), `*`(xi)))), `*`(_C2)), `*`(xi)))

La solución plana (n=0) da la función error (y sus derivadas)

> equ:=u(t,r)=rhs(subs(xi=r/sqrt(4*a*t),dsol0));simplify(eval(subs(equ,n=0,deq)));equt:=u(t,r)=diff(rhs(equ),t);simplify(eval(subs(equt,n=0,deq)));equr:=u(t,r)=diff(rhs(equ),r);simplify(eval(subs(equr,n=0,deq)));

u(t, r) = `+`(_C1, `*`(erf(`+`(`/`(`*`(`/`(1, 2), `*`(r)), `*`(`^`(`*`(a, `*`(t)), `/`(1, 2)))))), `*`(_C2)))
0 = 0
u(t, r) = `+`(`-`(`/`(`*`(`/`(1, 2), `*`(exp(`+`(`-`(`/`(`*`(`/`(1, 4), `*`(`^`(r, 2))), `*`(a, `*`(t)))))), `*`(r, `*`(a, `*`(_C2))))), `*`(`^`(Pi, `/`(1, 2)), `*`(`^`(`*`(a, `*`(t)), `/`(3, 2)))))))
0 = 0
u(t, r) = `/`(`*`(exp(`+`(`-`(`/`(`*`(`/`(1, 4), `*`(`^`(r, 2))), `*`(a, `*`(t)))))), `*`(_C2)), `*`(`^`(Pi, `/`(1, 2)), `*`(`^`(`*`(a, `*`(t)), `/`(1, 2)))))
0 = 0

> plot({op(subs(_C1=0,_C2=1,a=1,t=1,{rhs(equ),rhs(equt),rhs(equr)})),op(subs(_C1=0,_C2=1,a=1,t=0.3,{rhs(equ),rhs(equt),rhs(equr)}))},r=-5..5,yy=-1..1,color=black);

Plot_2d

La solución cilíndrica (n=1) da la función Integral-exponencial (y su derivada temporal, ya que la derivada espacial no es solución)

> equ:=u(t,r)=rhs(subs(xi=r/sqrt(4*a*t),dsol1));simplify(eval(subs(equ,n=1,deq)));equt:=u(t,r)=diff(rhs(equ),t);simplify(eval(subs(equt,n=1,deq)));equr:=u(t,r)=diff(rhs(equ),r);simplify(eval(subs(equr,n=1,deq)));

u(t, r) = `+`(_C1, `*`(Ei(1, `+`(`/`(`*`(`/`(1, 4), `*`(`^`(r, 2))), `*`(a, `*`(t))))), `*`(_C2)))
0 = 0
u(t, r) = `/`(`*`(exp(`+`(`-`(`/`(`*`(`/`(1, 4), `*`(`^`(r, 2))), `*`(a, `*`(t)))))), `*`(_C2)), `*`(t))
0 = 0
u(t, r) = `+`(`-`(`/`(`*`(2, `*`(exp(`+`(`-`(`/`(`*`(`/`(1, 4), `*`(`^`(r, 2))), `*`(a, `*`(t)))))), `*`(_C2))), `*`(r))))
`+`(`/`(`*`(2, `*`(exp(`+`(`-`(`/`(`*`(`/`(1, 4), `*`(`^`(r, 2))), `*`(a, `*`(t)))))), `*`(a, `*`(_C2)))), `*`(`^`(r, 3)))) = 0

> plot({op(subs(_C1=0,_C2=1,a=1,t=1,{rhs(equ),rhs(equt)})),op(subs(_C1=0,_C2=1,a=1,t=0.3,{rhs(equ),rhs(equt)}))},r=-5..5,yy=-1..5,color=black);

Plot_2d

La solución esférica (n=2) da la función Integral-exponencial (y su derivada temporal, ya que la derivada espacial no es solución)

> equ:=u(t,r)=rhs(subs(xi=r/sqrt(4*a*t),dsol2));simplify(eval(subs(equ,n=2,deq)));equt:=u(t,r)=diff(rhs(equ),t);simplify(eval(subs(equt,n=2,deq)));equr:=u(t,r)=diff(rhs(equ),r);simplify(eval(subs(equr,n=2,deq)));

u(t, r) = `+`(_C1, `/`(`*`(2, `*`(`+`(exp(`+`(`-`(`/`(`*`(`/`(1, 4), `*`(`^`(r, 2))), `*`(a, `*`(t)))))), `/`(`*`(`/`(1, 2), `*`(`^`(Pi, `/`(1, 2)), `*`(erf(`+`(`/`(`*`(`/`(1, 2), `*`(r)), `*`(`^`(`*`...
0 = 0
u(t, r) = `+`(`-`(`/`(`*`(`/`(1, 2), `*`(`^`(Pi, `/`(1, 2)), `*`(erf(`+`(`/`(`*`(`/`(1, 2), `*`(r)), `*`(`^`(`*`(a, `*`(t)), `/`(1, 2)))))), `*`(_C2)))), `*`(t))), `/`(`*`(`+`(exp(`+`(`-`(`/`(`*`(`/`(...
0 = 0
u(t, r) = `+`(`/`(`*`(`^`(Pi, `/`(1, 2)), `*`(erf(`+`(`/`(`*`(`/`(1, 2), `*`(r)), `*`(`^`(`*`(a, `*`(t)), `/`(1, 2)))))), `*`(_C2))), `*`(r)), `-`(`/`(`*`(2, `*`(`+`(exp(`+`(`-`(`/`(`*`(`/`(1, 4), `*`...
`+`(`/`(`*`(4, `*`(_C2, `*`(exp(`+`(`-`(`/`(`*`(`/`(1, 4), `*`(`^`(r, 2))), `*`(a, `*`(t)))))), `*`(`^`(a, 2), `*`(t))))), `*`(`^`(r, 4), `*`(`^`(`*`(a, `*`(t)), `/`(1, 2)))))) = 0

> plot({op(subs(_C1=0,_C2=1,a=1,t=1,{rhs(equ),rhs(equt)})),op(subs(_C1=0,_C2=1,a=1,t=0.3,{rhs(equ),rhs(equt)}))},r=0..5,yy=-1..5,color=black);

Plot_2d

>