Diferencia entre revisiones de «Ecuación de Ondas (Grupo 2 1/2)»

De MateWiki
Saltar a: navegación, buscar
(Ecuación de ondas II)
(Códigos)
Línea 345: Línea 345:
 
La expresión vuelve a ser radial.
 
La expresión vuelve a ser radial.
  
===Códigos===
+
===Representación===
 
En dimensión 1:
 
En dimensión 1:
 
{{matlab|codigo=
 
{{matlab|codigo=

Revisión del 18:42 26 may 2024

Trabajo realizado por estudiantes
Título Ecuación de Ondas.
Asignatura EDP
Curso 2023-24
Autores Alfredo de Lorenzo, Hugo Sanz, Manuel Fdez.
Este artículo ha sido escrito por estudiantes como parte de su evaluación en la asignatura




1 Introducción

A lo largo de este trabajo se va a trabajar con diferentes soluciones de la ecuación de ondas, interpretando sus comportamientos. También se va a estudiar la solución fundamental en 1, 2 y 3 dimensiones aplicando un impulso inicial en 𝑥=0, gracias a lo cual se podrá interpretar el principio de Huygens.


2 Ecuación de ondas I

En esta sección, se va a trabajar con la ecuación de ondas en una dimensión. Para ello, se va a considerar una cuerda vibrante en el intervalo [math] [0,1][/math], con densidad [math] d[/math] y tensión [math] \tau_0 [/math] constante. De modo que la velocidad de propagación es [math] c=1 ~~m/s[/math] . Además, se va a suponer que la cuerda está fijada en los extremos y se denota como [math] u_0(x)[/math] y [math] u_1(x)[/math] su posición e impulso iniciales respectivamente.

2.1 Planteamiento del problema

En primer lugar se plantea el sistema de EDP que modeliza el comportamiento de los desplazamientos transversales de la cuerda. Para ello, es suficiente considerar la ecuación de ondas [math] u_{tt} – c^2u_{xx}=0[/math] y se establecen las condiciones iniciales mencionadas anteriormente. De esta manera se obtiene que el sistema EDP a resolver es:

[math]\left \{ \begin{array}{ll} u_{tt} – u_{xx} =0 \\ u(0,t)=u(1,t)=0 \\ u(x,0)=u_0(x) \\ u_t(x,0)=u_1(x) \end{array} \right. [/math]

2.2 Resolución del sistema

La resolución de la ecuación se va realizar mediante el método de separación de variables. Para ello, se considera que la solución es de la forma [math] u(x,t) = T(t) X(x)[/math] .

Realizando el desarrollo correspondiente y aplicando el principio de superposición se obtiene que la solución del sistema es de la siguiente forma:

[math] u(x,t)= \sum _{k=1}^{\infty} \left(c_k cos (k \pi t) + d_k sin (k \pi x)\right) sin(k \pi t) [/math]

siendo

[math] c_k= \frac{\int_0^1 sin (k \pi x) u_0 (x) dx}{\int_0 ^1 sin^2(k \pi x) dx}[/math]

[math] d_k= \frac{\int_0^1 sin (k \pi x) u_1 (x) dx}{\int_0 ^1 sin^2(k \pi x) dx}[/math]

Finalmente, si agrupamos todo, la solución de la ecuación de ondas es la siguiente:

[math]u(x, t) = \sum_{k=1}^{\infty} \left( \left(2 \int_0^1 u_0(x) \sin(k \pi x) \, dx \right) \cos(k \pi t) + \left(\frac{2}{k \pi} \int_0^1 u_1(x) \sin(k \pi x) \, dx \right) \sin(k \pi t) \right) \sin(k \pi x) [/math]

Esta expresión proporciona la solución completa de la ecuación de onda en función de las condiciones iniciales \( u_0(x) \) y \( u_1(x) \).

2.3 Particularización del problema

En esta parte del documento se van a analizar una serie de ejemplos para comprender de manera precisa lo explicado en la sección anterior.

2.3.1 Caso 1. Solución periódica

El primero de ellos se trata de la representación gráfica de una solución periódica en tiempo. Esta viene dada suponiendo que los datos iniciales son [math]u_0(x)=e^{-100(x-\frac{1}{2})^2}[/math] y [math]u_1(x)=0[/math]. La solución de este problema se va a representar en el intervalo \(t ∈ [0, 2] \).

Representación Solución Caso 1

Como se puede observar, la amplitud máxima de la onda es 1 y se alcanza para valores enteros del tiempo. Además, para x=0 y x=1 se tiene que u(x,t)=0, pues por hipótesis la cuerda está fijada en los extremos.

Representación Solución Caso 1

Además también se ve como la función muestra un comportamiento que se repite regularmente con el tiempo. A estas funciones se les denomina periódicas en tiempo. Para ver esto más fácilmente se introduce el siguiente gif.

Representación Solución en función del tiempo Caso 1


Finalmente se muestra el código con el que se ha realizado dicha representación.

clear
close all
clc

% Se definen las condiciones iniciales
u_0 = @(x) exp(-100*(x-1/2).^2);
u_1 = @(x) 0;

% Definición de los intervalos de tiempo y espacio
t = linspace(0,2,1000);
x = linspace(0,1,1000);

% Número de términos de la serie a dibuja
n = 50;

% definición de matrices para almacenar coeficientes de Fourier
ak_0 = zeros(n,1);
bk_0 = zeros(n,1);
ck_0 = zeros(n,1);

dk_1 = zeros(n,1);
bk_1 = zeros(n,1);
ck_1 = zeros(n,1);

% Cálculo de coeficientes de Fourier asociados a u_0
for k = 1:n
    f_sen_0 = @(x) u_0(x).*sin(k*pi*x);

    ck_0(k) = 2*trapz(x, f_sen_0(x));
end

% Cálculo de coeficientes de Fourier asociados a u_1
for k = 1:n
    f_sen_1 = @(x) u_1(x).*sin(k*pi*x);

    dk_1(k) =(2/(k*pi))*trapz(x, f_sen_1(x));
end

% Sustituimos en la solución calculada por separación de variables
u = @(xx,tt) 0;
for i = 1:n
    u = @(xx,tt) u(xx,tt) + (ck_0(i)*cos(i*pi*tt) + dk_1(i)*sin(i*pi*tt)) .* sin(i*pi*xx);
end

% Graficamos la solución
[X, T] = meshgrid(x, t);
surf(X, T, u(X, T), 'EdgeColor', 'flat')
title('Solución')
xlabel('x')
ylabel('t')


2.3.2 Caso 2. Onda viajera

Se considera ahora que la onda viaja en un solo sentido, esto es que:

[math] u(x,t)=f(x-t) [/math]

Donde para las condiciones iniciales en este caso se utilizará que [math] u_0 (x)=f(x) [/math] y [math] u_1 (x)=-f'(x) [/math] y particularizando se utilizará la función:

[math] f(x)=e^{-100(x-\frac{1}{2})^{2}} [/math]

Derivando se obtiene:

[math] f'(x)=-200(x-\frac{1}{2})e^{-100(x-\frac{1}{2})^{2}} [/math]

Por lo que con esto ya se tiene todo lo necesario, de tal forma que la ecuación en derivadas parciales es:

[math]\left \{ \begin{array}{ll} u_{tt} – u_{xx} =0 \\ u(0,t)=u(1,t)=0 \\ u(x,0)=e^{-100(x-\frac{1}{2})^{2}} \\ u_t(x,0)=200(x-\frac{1}{2})e^{-100(x-\frac{1}{2})^{2}} \end{array} \right. [/math]

Ahora se procede a resolver el ejercicio, que se hará de manera análoga a los apartados anteriores.

clear
close all
clc

% Se definen las condiciones iniciales
u_0 = @(x) exp(-100*(x-1/2).^2);
u_1 = @(x) 200*(x-1/2).*exp(-100*(x-1/2).^2);

% Definición de los intervalos de tiempo y espacio
t = linspace(0,2,1000);
x = linspace(0,1,1000);

% Número de términos de la serie a dibuja
n = 50;

% definición de matrices para almacenar coeficientes de Fourier
ak_0 = zeros(n,1);
bk_0 = zeros(n,1);
ck_0 = zeros(n,1);

dk_1 = zeros(n,1);
bk_1 = zeros(n,1);
ck_1 = zeros(n,1);

% Cálculo de coeficientes de Fourier asociados a u_0
for k = 1:n
    f_sen_0 = @(x) u_0(x).*sin(k*pi*x);

    ck_0(k) = 2*trapz(x, f_sen_0(x));
end

% Cálculo de coeficientes de Fourier asociados a u_1
for k = 1:n
    f_sen_1 = @(x) u_1(x).*sin(k*pi*x);

    dk_1(k) =(2/(k*pi))*trapz(x, f_sen_1(x));
end

% Sustituimos en la solución calculada por separación de variables
u = @(xx,tt) 0;
for i = 1:n
    u = @(xx,tt) u(xx,tt) + (ck_0(i)*cos(i*pi*tt) + dk_1(i)*sin(i*pi*tt)).*sin(i*pi*xx);
end

% Graficamos la solución
[X, T] = meshgrid(x, t);
surf(X, T, u(X, T), 'EdgeColor', 'flat')
title('Solución')
xlabel('x')
ylabel('t')
Representación Solución en función del tiempo

Viendo la solución, se puede ver cómo la onda va con una velocidad constante de 1m/s, y tiene un periodo de 2 segundos. Cuando la onda llega a la frontera, cambia de dirección y es negativa. A continuación se ve una gráfica de la solución de perfil, donde se puede apreciar mejor la velocidad, y como cambia el comportamiento de la onda.

Representación Solución de Perfil para apreciar la velocidad

2.3.3 Caso 3. Condición frontera Neumann

Por último se va a trabajar cambiando las condiciones a unas de tipo Neumann, esto es que [math] u_x(0,t)=u_x(1,t)=0 [/math] como condiciones frontera. Con esto la ecuación en derivadas parciales es así:

[math]\left \{ \begin{array}{ll} u_{tt} – u_{xx} =0 \\ u_x(0,t)=u_x(1,t)=0 \\ u(x,0)=e^{-100(x-\frac{1}{2})^{2}} \\ u_t(x,0)=200(x-\frac{1}{2})e^{-100(x-\frac{1}{2})^{2}} \end{array} \right. [/math]

Por ello, a lo hora de obtener coeficientes de Fourier para la solución, se calculan de forma distinta, haciendo separación de variables se obtiene:

[math]u(x, t) = \sum_{k=1}^{\infty} \left(c_k \cos(k \pi t) +d_k \cos(k\pi x )\sin(k \pi t) \right) [/math]

Donde los coeficientes [math] c_k[/math] y [math] d_k [/math] son:

[math] c_k = \frac{\int_0^1 \cos(k\pi x) u_0(x) \, dx}{\int_0^1 \cos^2(k\pi x) \, dx} [/math]
[math] d_k = \frac{\int_0^1 \cos(k\pi x) u_1(x) \, dx}{\int_0^1 \cos^2(k\pi x) \, dx} [/math]

Ahora se adapta el código cambiando los coeficientes, y el problema se resuelve de manera análoga

clear
close all
clc

% Se definen las condiciones iniciales
u_0 = @(x) exp(-100*(x-1/2).^2);
u_1 = @(x) 200*(x-1/2).*exp(-100*(x-1/2).^2);

% Definición de los intervalos de tiempo y espacio
t = linspace(0,2,1000);
x = linspace(0,1,1000);

% Número de términos de la serie a dibuja
n = 50;

% definición de matrices para almacenar coeficientes de Fourier
ak_0 = zeros(n,1);
bk_0 = zeros(n,1);
ck_0 = zeros(n,1);

dk_1 = zeros(n,1);
bk_1 = zeros(n,1);
ck_1 = zeros(n,1);

% Cálculo de coeficientes de Fourier asociados a u_0
for k = 1:n
    f_cos_0 = @(x) u_0(x).*cos(k*pi*x);

    ck_0(k) = 2*trapz(x, f_cos_0(x));
end

% Cálculo de coeficientes de Fourier asociados a u_1
for k = 1:n
    f_cos_1 = @(x) u_1(x).*cos(k*pi*x);

    dk_1(k) =2/(k*pi)*trapz(x, f_cos_1(x));
end

% Sustituimos en la solución calculada por separación de variables
u = @(xx,tt) 0;
for i = 1:n
    u = @(xx,tt) u(xx,tt) + (ck_0(i)*cos(i*pi*tt) + dk_1(i)*sin(i*pi*tt)).*cos(i*pi*xx);
end

% Graficamos la solución
[X, T] = meshgrid(x, t);
surf(X, T, u(X, T), 'EdgeColor', 'flat')
title('Solución')
xlabel('x')
ylabel('t')
Representación Solución en función del tiempo

Aquí se puede ver cómo la onda tiene una velocidad constante de 1 casi todo el tiempo, pero cuando la onda llega a la frontera la onda se dispara y disminuye su velocidad, y posteriormente pasa a ir en el sentido contrario.

3 Ecuación de ondas II

En este ejercicio se dibujará la solución fundamental de la ecuación de ondas en dimensiones 1, 2 y 3. De esta forma, se interpretará el principio de Huygens.

3.1 Solución fundamental

El problema a resolver resulta el siguiente

[math]\left \{ \begin{array}{ll} u_{tt}-c^2\Delta u=0, \quad x \in \mathbb{R}^n, t\gt0, \\ u(x,0)=0, u_t(x,0)=\delta (x), \quad x \in \mathbb{R}^n, \end{array} \right. [/math]

donde [math] \delta(x) [/math] es la delta de Dirac.

La solución fundamental es:

En dimensión [math]n=1[/math] :

[math] K_1(x,t) =\frac{1}{2c}[H(x+ct)-H(x-ct)], [/math]

Donde H(s) es la función de Heaviside, que vale 0 para [math]s\lt0[/math] y 1 para [math]s\geq0[/math]

Como se puede observar en la expresión, esta es radial.

En dimensión [math]n=2[/math]:

[math] K_2(x,t)=\frac{1}{2\pi c \sqrt{c^2t^2-|x|^2}} \chi_{B(0,ct)}(x) [/math]

donde [math] \chi_{B(0,ct)}(x) [/math] es la función característica en la bola de centro 0 y radio [math] ct [/math]. Esta expresión vuelve a ser de radial ya que depende del módulo de x.

En dimensión [math]n=3[/math]:

[math] K_3(x,t)=\frac{\delta (|x|-ct)}{4\pi c|x|}, t\gt0. [/math]

La expresión vuelve a ser radial.

3.1.1 Representación

En dimensión 1:

% Limpieza del entorno de trabajo
clear;
clc;

% Configuración inicial
x_start = -1; x_end = 1;       % Límites del intervalo en x
t_start = 0; t_end = 1;        % Límites del intervalo en t
dx = 0.01; dt = 0.001;         % Tamaños de paso para x y t
x_vals = x_start:dx:x_end;     % Vector de valores de x
t_vals = t_start:dt:t_end;     % Vector de valores de t

% Crear la rejilla de puntos
[X_grid, T_grid] = meshgrid(x_vals, t_vals);

% Parámetro de velocidad
prop_speed = 1;

% Cálculo de la función fundamental
K_fun = (X_grid <= prop_speed * T_grid) & (X_grid >= -prop_speed * T_grid);
K_fun = K_fun / (2 * prop_speed);

% Visualización
figure;
surf(X_grid, T_grid, K_fun);
shading interp;
title('Solución fundamental en 1D');
xlabel('x');
ylabel('t');


En dimensión 2:

% Limpiar el entorno de trabajo
clear;
clc;

% Configuración de los intervalos
r_start = 0; r_end = 1;       % Límites del intervalo en r
t_start = 0; t_end = 1;       % Límites del intervalo en t
dr = 0.01; dt = 0.001;        % Tamaños de paso para r y t
r_vals = r_start:dr:r_end;    % Vector de valores de r
t_vals = t_start:dt:t_end;    % Vector de valores de t

% Crear la rejilla de puntos
[R_grid, T_grid] = meshgrid(r_vals, t_vals);

% Parámetro de velocidad
prop_speed = 1;

% Cálculo de la función fundamental
K_func = (R_grid <= prop_speed * T_grid) ./ (eps + 2 * pi * prop_speed .* sqrt(prop_speed^2 * T_grid.^2 - R_grid.^2));

% Visualización
figure;
surf(R_grid, T_grid, K_func);
shading interp;
title('Solución fundamental en 2D');
xlabel('r');
ylabel('t');


En dimensión 3:

% Limpiar el entorno de trabajo
clear;
clc;

% Definición de intervalos
r_start = 0; r_end = 1;       % Límites inicial y final para r
t_start = 0; t_end = 1;       % Límites inicial y final para t
delta_r = 0.01; delta_t = 0.001;  % Tamaños de paso para r y t
r_values = r_start:delta_r:r_end;  % Vector de valores para r
t_values = t_start:delta_t:t_end;  % Vector de valores para t

% Crear la rejilla de puntos
[R_grid, T_grid] = meshgrid(r_values, t_values);

% Parámetros del modelo
prop_speed = 1;              % Velocidad de propagación
kappa = 1000;                % Parámetro para la aproximación de la delta de Dirac

% Cálculo de la función fundamental
K_function = sqrt(kappa / pi) .* exp(-kappa * (R_grid - prop_speed * T_grid).^2) ./ (4 * pi * prop_speed * R_grid);

% Visualización
figure;
surf(R_grid, T_grid, K_function);
shading interp;
title('Solución fundamental en 3D');
xlabel('r');
ylabel('t');