Vous êtes sur la page 1sur 3

Alexander Romero 20172079028 Aldair Vanegas 20172079029

Solución de ecuación de onda en 2D por series de Taylor

La ecuación de onda está dada por el siguiente término:

𝜕 2 𝑓(𝑥, 𝑦, 𝑡) 𝜕 2 𝑓(𝑥, 𝑦, 𝑡) 𝜕 2 ℎ(𝑥, 𝑦, 𝑡)


𝑣2 [ + ] =
𝜕𝑥 2 𝜕𝑦 2 𝜕𝑡 2

Para solucionar la ecuación resolvemos la serie de expansión de Taylor, se incluyen los términos
hasta el cuarto orden,

𝑓𝑧𝑛 ∆𝑧 𝑛
𝐹(𝑧 + ∆𝑧) = ∑
𝑛!
𝑖=0

Se tiene respectivamente que:

ℎ(𝑥 + ∆𝑥, 𝑦, 𝑡) − 2ℎ(𝑥, 𝑦, 𝑡) + ℎ(𝑥 − ∆𝑥, 𝑦, 𝑡) ℎ(𝑥, 𝑦 + ∆𝑦, 𝑡) − 2ℎ(𝑥, 𝑦, 𝑡) + ℎ(𝑥, 𝑦 + ∆𝑦, 𝑡)
𝑣2 [ + ]
(∆𝑥)2 (∆𝑥)2
ℎ(𝑥, 𝑦, 𝑡 + ∆𝑡) − 2ℎ(𝑥, 𝑦, 𝑡) + ℎ(𝑥, 𝑦, 𝑡 − ∆𝑡)
=
(∆𝑡)2

ℎ(𝑥 + ∆𝑥, 𝑦, 𝑡) − 2ℎ(𝑥, 𝑦, 𝑡) + ℎ(𝑥 − ∆𝑥, 𝑦, 𝑡)


ℎ(𝑥, 𝑦, 𝑡 − ∆𝑡) = 𝑣 2 (∆𝑡)2 [
(∆𝑥)2
ℎ(𝑥, 𝑦 + ∆𝑦, 𝑡) − 2ℎ(𝑥, 𝑦, 𝑡) + ℎ(𝑥, 𝑦 + ∆𝑦, 𝑡)
+ ] − ℎ(𝑥, 𝑦, 𝑡 + ∆𝑡) + 2ℎ(𝑥, 𝑦, 𝑡)
(∆𝑦)2

Para programar en matlab se necesita 2 for concatenados uno para variar el x dado por la letra i y el
otro para variar el y dado por el contador j y otro for para sumar los cambios de ℎ(𝑥, 𝑦, 𝑡 − ∆𝑡) en el
código de 1D se utilizo el comando plot que grafica vectores en este paso nos ayudamos del
comando surf

Queda de la siguiente forma


% Ecuacion de Onda 2D
clear all;
close all;
clc;
tic;

nt = 2000;%Numero de iteraciones temporales


N = 20;
v = 0.01;%tiempo centro de la onda
L = 1;

%%%%%%espaciales
dx = L/(N-1) ;
%%%%%%%%Temporales
tf = 2000.0;
dt = tf/(nt-1);
factor = v*v*dt*dt/(dx*dx);
x =linspace(0,L,N)';
[X, Y] = meshgrid(x,x) ;
ht = [X, Y] ;

t = 0 ;
htmasdt(1,:) = 0 ;
htmasdt(N,:) = 0 ;
htmasdt(:,1) = 0 ;
htmasdt(:,N) = 0 ;

for i = 2:N-1
for j = 2:N-1
htmasdt(i,j) = ht(i,j)+2*factor*(ht(i+1,j)-ht(i,j)+ht(i-1,j)+ht(i,j-
1)+ht(i,j+1)) ;
end
end
for m=3:nt
t = t + dt ;
U0 = ht ;
ht = htmasdt ;
for i=2:N-1
for j=2:N-1
htmasdt(i,j) = ht(i,j)-U0(i,j)+ factor*(ht(i-1,j) - ht(i,j)
+ ht(i+1,j)+ht(i,j-1)+ht(i,j+1));
end
end
if( mod(m,5) == 0 )
surf(X,Y, htmasdt);
axis([0 L 0 L -1 1]);
pause(0.01);
end
end

este código, se baso en un código basado en internet en el link:


http://ecuaciononda1dmatlab.blogspot.com.co/ donde se ponía una función solución de la ecuación
difererencial : sin(pi*X/L) .* sin(pi*Y/L) , como nosotros estamos trabajando con los deltas lo que
hicimos fue remplazar este código para trabajar con los valores de x y y respectivamente.

Para lo cual nos salió la siguiente grafica:


notas

1. Al correr el código el movimiento de la onda no nos dio uniforme esto debido tal vez a la
línea de código que cambiamos
2. La ecuación diferencial puede tener varias ecuaciones solución de esta
3. El error se debió a la falta de herramientas en el trabajo de 3d a la hora de usar el mathlab

4347-17-0004382429

1-7184049798

Vous aimerez peut-être aussi