Pràctica: ANIMACIONS DE SOLUCIONS D'EDPs D'EVOLUCIÓ (ONES I CALOR)

Les EDPs d'evolució, com són les equacions d'ones 1D i de la calor 1D, tenen solucions de la forma que depenen de la variable espacial x i de la variable temporal Per representar aquestes solucions, podríem fer-ho com una gràfica (superfície) a l'espai de coordenades però el més adient és representar-les al pla de coordenades com una gràfica "animada" al pla d'una funció de x que va variant en funció del temps i que ens permet visualitzar la forma de la corda vibrant, o la distribució de temperatures, a cada instant.
Veurem com representar aquests tipus d'animacions amb Matlab i, opcionalment, guardar-les en un fitxer de vídeo. Suposarem que hem pogut resoldre a mà el problema plantejat (EDP + condicions) i, per tant, tenim una fórmula analítica per a la solució De fet, això només és factible per als problemes més simples. En general, caldria en primer lloc trobar la solució aproximada usant mètodes numèrics per a EDPs, que no tractem aquí.

Equació d'ones per a una corda vibrant infinita

Com a primer exemple, volem representar la solució del problema següent, donat per una equació d'ones no homogènia per a una corda vibrant infinita, amb unes condicions inicials (vegeu el problema 6 de la llista):
La solució, obtinguda després de restar una solució particular i aplicar la fórmula de D'Alembert, ve donada per
Podem representar-la amb el codi seguent, amb el qual veiem com va variant la gràfica com a funció de quan anem donant valors successius a la variable
u=@(x,t) cos(x)-sin(t)-cos(x).*cos(t)+t; %solucio a visualitzar
a=-10; b=10; hx=0.01; x=a:hx:b; %interval de x i increment
umin=-2; umax=16; %interval de u
t0=0; tf=12; ht=0.05; %interval de t i increment
for t=t0:ht:tf
uu=@(x) u(x,t); %funcio de x quan hem fixat un valor de t
z=uu(x);
plot(x,z,'b','LineWidth',2.5)
axis([a,b,umin,umax]) %finestra a visualitzar
grid
hold on
plot([a,b],[0,0],'k') %eix d'abscisses
plot([0,0],[umin,umax],'k') %eix d'ordenades
legend('u(x,t)')
text(-9,-1,sprintf('t=%.2f',t)) %text a escriure i a quin punt
hold off %a la iteracio seguent, fem una grafica nova
drawnow
pause(0.05) %optatiu
end
Afegint unes poques línies de codi, que podeu veure a edpdalembert1.m, podem guardar l'animació en un fitxer de vídeo: edpdalembert1.mp4.
Exercici. Donada la funció (vegeu-ne la gràfica més avall), resoleu l'equació d'ones (homogènia i amb ) per a una corda vibrant infinita,
(a) amb les condicions inicials
(b) amb les condicions inicials
i visualitzeu-ne la solució en ambdós casos.
[ Fitxers: edpdalembert2a.mp4, edpdalembert2b.mp4 ]

Equació d'ones amb condicions de contorn

Considerem ara un problema següent, donat per l'equació d'ones homogènia a l'interval amb condicions de contorn de Neumann homogènies, i condicions inicials (vegeu els apunts, pàg. 45-46):
La solució, obtinguda per separació de variables, és
Per visualitzar-la podem usar el codi edpones1.m, amb aquest resultat: edpones1.mp4 (prenent ).

Equació de la calor amb condicions de contorn

Considerem ara el problema següent, donat per l'equació de la calor homogènia a l'interval amb condicions de contorn mixtes, i condicions inicials (vegeu el problema 7 de la llista):
on suposem
La solució, obtinguda per separació de variables, és
Podem observar que la mitjana en x de la solució,
inicialment és decreixent, assolint un mínim a l'instant a partir del qual és creixent i tendeix (com la solució) a 0 quan
Per visualitzar la solució i el comportament de la mitjana, podem usar el codi edpcalor1.m, amb el qual obtenim el resultat que mostrem a edpcalor1.mp4.
________
(c) Numerical Factory (by Pere Gutiérrez)