## EJEMPLO I: El laplaciano ΔZ(x,y):=Zxx+Zyy en coordenadas polares

kill(all)$

depends(w,[r,phi]);
depends(z,[x,y]);

Definiendo las ecuaciones de las diferenciales

x=r*cos(phi);
eq1:diff(%);

y=r*sin(phi);
eq2:diff(%);

z=w;
eq3:diff(%);

Encontrando las nuevas diferenciales en función de las viejas

/* encontramos las diferenciales de r y phi en función de las viejas variables */
linsolve([eq1,eq2],[del(r),del(phi)])$
sol1:trigsimp(%);

Encontrando Zx y Zy en las nuevas variables

/* Las sustituimos en la tercera eq. */
subst(sol1,eq3)$
expand(%)$ 
a:second(%);

zx:coeff(a,del(x),1);

zy:coeff(a,del(y),1);

Encontrando las segundas derivadas en función de las nuevas variables

/* Zxx */
eqdzx:diff(zx);

subst(sol1,eqdzx)$ 
b:expand(%);

zxx:coeff(b,del(x),1);

/* Zyy */
eqdzy:subst(sol1,diff(zy));$ c:expand(subst(sol1,eqdzy));

zyy:coeff(c,del(y),1);

Laplaciano

/* la nueva ecuacion */
zxx+zyy;

ratsimp(%);

expand(trigsimp(%));subst(w=z,%);

expand(trigsimp(zxx+zyy))$ subst(w=z,%);

zxy:coeff(b,del(y),1);

zyx:coeff(c,del(x),1);

zxy-zyx;

## EJEMPLO II. La ecuación de ondas Zxx= Zyy

kill(all)$
depends(w,[u,v]);
depends(z,[x,y]);

Definiendo las ecuaciones de las diferenciales

x=u+v;
eq1:diff(%);

y=u-v;
eq2:diff(%);

z=w;
eq3:diff(%);

Encontrando las nuevas diferenciales en función de las viejas

sol1:linsolve([eq1,eq2],[del(u),del(v)]);

Encontrando Zx y Zy en las nuevas variables

subst(sol1,eq3);
expand(%)$
a:second(%);

zx:coeff(a,del(x),1)$
factor(zx);

zy:coeff(a,del(y),1)$
factor(zy);

Encontrando las segundas derivadas en función de las nuevas variables

eqdzx:diff(zx);

subst(sol1,eqdzx)$
b:expand(%);

zxx:coeff(b,del(x),1)$
expand(zxx);factor(%);

zxy:coeff(b,del(y),1)$
expand(zxy);factor(%);

eqdzy:diff(zy);

subst(sol1,eqdzy)$
c:expand(%);

zyx:coeff(c,del(x),1)$
expand(%);factor(zyx);

zyy:coeff(c,del(y),1)$
expand(%);factor(zyy);

zxy-zyx;

Escribimos la nueva ecuación en las nuevas variables

zxx-zyy=0;

kill(all)$

f(x,y):=alpha*f1(x+y)+beta*f2(x-y);

diff(f(x,y),x,1);

diff(f(x,y),x,2)-diff(f(x,y),y,2);

f(x,y):=alpha*sin(x+y)+beta*cos(x-y);
e1:diff(f(x,y),x,2);
e2:diff(f(x,y),y,2);
e1-e2;

f(x,y):=alpha*sin(x+y)+beta*exp(x-y);
e1:diff(f(x,y),x,2);
e2:diff(f(x,y),y,2);
e1-e2;

f(x,y):=alpha*log(x+y)+beta*(x-y)^4;
e1:diff(f(x,y),x,2);
e2:diff(f(x,y),y,2);
e1-e2;

## EJEMPLO III. La Ecuación del calor Zxx=Zy 

kill(all)$
depends(w,[u,v]);
depends(z,[x,y]);

Derivadas de orden 1

x=-u/v;
eq1:diff(%);

y=-1/v;
eq2:diff(%);

z=w*sqrt(-v)*exp(u^2/(4*v));
eq3:diff(%);

sol1:linsolve([eq1,eq2],[del(u),del(v)]);

subst(sol1,eq3);

expand(%);a:second(%);

zx:coeff(a,del(x),1);factor(zx);

zy:coeff(a,del(y),1);factor(zy);

Derivadas de orden 2

diff(zx);

eqdzx:factor(%);

subst(sol1,eqdzx);b:expand(%);

expand(%);

zxx:coeff(b,del(x),1);factor(zxx);

/* la nueva ecuacion */;

zxx-zy=0;

ratsimp(%);

factor(%);

'diff(w,v,1)-'diff(w,u,2);

z=w*sqrt(-v)*exp(u^2/(4*v));

solve(%,w);

define(nw(u,v),rhs(%[1]));

diff(nw(u,v),v,1)-diff(nw(u,v),u,2);

ratsimp(%);