Diferencia entre revisiones de «Ecuación de Ondas»
(→Condiciones de frontera de Neumann) |
(→Representación solución fundamental de dimensión 3 y regularización para la solución fundamental de dimensión 2) |
||
| Línea 353: | Línea 353: | ||
=Representación solución fundamental de dimensión 3 y regularización para la solución fundamental de dimensión 2= | =Representación solución fundamental de dimensión 3 y regularización para la solución fundamental de dimensión 2= | ||
| + | |||
=== Código === | === Código === | ||
{{matlab|codigo=close all | {{matlab|codigo=close all | ||
| Línea 360: | Línea 361: | ||
% Datos | % Datos | ||
| − | + | c=1; % Velocidad de propagación escogida | |
numvalores_t = 400; % Número de valores de t | numvalores_t = 400; % Número de valores de t | ||
| − | numvalores_x = 400; % Número de valores de | + | numvalores_x = 400; % Número de valores de r |
| − | + | ||
% Generación de puntos de evaluación | % Generación de puntos de evaluación | ||
| − | t = linspace(0, | + | t = linspace(0, 1, numvalores_t); % Vector de valores de t |
| − | x = linspace( | + | x = linspace(-1, 1, numvalores_x); % Vector de valores de x |
| − | + | ||
| − | % | + | % Crear la cuadrícula de puntos |
| − | + | [X, T] = meshgrid(x, t); | |
| − | + | ||
| − | + | % Definir la función de Heaviside | |
| − | + | H = @(s) s >= 0; | |
| − | + | ||
| − | + | % Definir la función K1(x, t) | |
| + | K1 = @(x, t) 1/(2*c) * ( H(x + c*t) - H(x - c*t) ); | ||
%Gráfica | %Gráfica | ||
| − | surf(x,t, | + | surf(x,t,K1(X,T),'EdgeColor', 'none'); % Gráfica de la solución fundamental para n=1 en función de x y t |
| − | xlabel('x'); ylabel('t'); zlabel(' | + | shading interp |
| − | legend(' | + | xlabel('x'); ylabel('t'); zlabel('K_1(x,t)'); % Etiquetas de ejes |
| + | legend('K_1(x,t)'); % Leyenda | ||
| + | title('Solución fundamental para n=1') % Título | ||
}} | }} | ||
| + | |||
=Solución fundamental de dimensión 2 mediante el producto de convolución= | =Solución fundamental de dimensión 2 mediante el producto de convolución= | ||
=== Código === | === Código === | ||
Revisión del 17:32 26 may 2024
| Trabajo realizado por estudiantes | |
|---|---|
| Título | Ecuación de Laplace y de Poisson. Grupo ABMR |
| Asignatura | EDP |
| Curso | 2023-24 |
| Autores | Arturo Barrena y Mario Ríos |
| Este artículo ha sido escrito por estudiantes como parte de su evaluación en la asignatura | |
Contenido
- 1 Planteamiento del problema
- 2 Modelización de los desplazamientos transversales de la cuerda
- 3 Particularización del sistema de ecuación de ondas a unos datos iniciales dados
- 4 Condiciones iniciales de una onda que viaja en un único sentido
- 5 Condiciones de frontera de Neumann
- 6 Representación solución fundamental de dimensión 3 y regularización para la solución fundamental de dimensión 2
- 7 Solución fundamental de dimensión 2 mediante el producto de convolución
1 Planteamiento del problema
El problema que se está describiendo corresponde a la ecuación de ondas, la cual modela la vibración de una cuerda fija en los extremos. Vamos a plantear el sistema de ecuaciones correspondiente, describiendo cada término.
1.1 Ecuación de ondas
La ecuación de ondas en una dimensión, con una cuerda de densidad \(d\) y tensión \(\tau_0\), donde la velocidad de propagación es \(c = \sqrt{\tau_0/d}\), se escribe como:
[math] \frac{\partial^2 u}{\partial t^2} = c^2 \frac{\partial^2 u}{\partial x^2} [/math]
Dado que en este caso \(c = 1\), la ecuación se simplifica a:
[math] \frac{\partial^2 u}{\partial t^2} = \frac{\partial^2 u}{\partial x^2} [/math]
1.2 Condiciones de frontera
Dado que la cuerda está fija en los extremos, tenemos:
[math] u(0, t) = 0 [/math]
[math] u(1, t) = 0 [/math]
Estas condiciones indican que la posición de la cuerda en los puntos \(x = 0\) y \(x = 1\) siempre es cero, es decir, la cuerda no se mueve en los extremos.
1.3 Condiciones iniciales
Las condiciones iniciales especifican la posición y la velocidad inicial de la cuerda:
Posición inicial:
[math] u(x, 0) = u_0(x) [/math]
Esto describe la forma inicial de la cuerda en \(t = 0\).
Velocidad inicial:
[math] \frac{\partial u}{\partial t}(x, 0) = u_1(x) [/math]
Esto describe la velocidad inicial de cada punto de la cuerda en \(t = 0\).
1.4 Descripción de cada término
- \(u(x,t)\): Desplazamiento de la cuerda en la posición \(x\) y tiempo \(t\).
- \(\frac{\partial^2 u}{\partial t^2}\): Aceleración de la cuerda en la posición \(x\) y tiempo \(t\).
- \(\frac{\partial^2 u}{\partial x^2}\): Curvatura de la cuerda en la posición \(x\) y tiempo \(t\).
- \(u_0(x)\): Desplazamiento inicial de la cuerda en la posición \(x\).
- \(u_1(x)\): Velocidad inicial de la cuerda en la posición \(x\).
De esta forma se puede escribir el siguiente sistema que recoge toda la información mencionada anteriormente:
[math] \left\{ \begin{aligned} &u_{tt}(x,t) = u_{xx}(x,t) & 0 \lt x \lt 1, t \gt 0, \\ &u(0, t) = u(1, t)=0, & t \gt 0, \\ &u(x, 0) =u_0(x) \\ &u_t(x, 0) = u_1(x), \end{aligned} \right. [/math]
2 Modelización de los desplazamientos transversales de la cuerda
Para resolver la ecuación de ondas utilizando el método de separación de variables y expresar la solución en términos de los coeficientes de Fourier de los datos iniciales, se siguen los siguientes pasos:
1. Plantear la solución mediante separación de variables:
Asumimos una solución de la forma \( u(x,t) = X(x)T(t) \). Sustituyendo en la ecuación de ondas \( \frac{\partial^2 u}{\partial t^2} = \frac{\partial^2 u}{\partial x^2} \) y dividiendo por \( X(x)T(t) \), obtenemos:
[math] \frac{T''(t)}{T(t)} = \frac{X''(x)}{X(x)} = -\lambda [/math]
Esto nos lleva a dos ecuaciones ordinarias:
[math] X''(x) + \lambda X(x) = 0 [/math]
[math] T''(t) + \lambda T(t) = 0 [/math]
2. Resolver las ecuaciones ordinarias:
La solución de \( X(x) \) depende del valor de \( \lambda \). Considerando las condiciones de frontera \( X(0) = 0 \) y \( X(1) = 0 \), obtenemos que:
[math] X_n(x) = \sin(n\pi x) [/math]
con \( \lambda_n = (n\pi)^2 \) y \( n = 1, 2, 3, \ldots \).
Para \( T(t) \), la solución es:
[math] T_n(t) = A_n \cos(n\pi t) + B_n \sin(n\pi t) [/math]
3. Construir la solución general:
La solución general es la suma de todas las soluciones particulares:
[math] u(x,t) = \sum_{n=1}^{\infty} \left[ A_n \cos(n\pi t) + B_n \sin(n\pi t) \right] \sin(n\pi x) [/math]
4. Determinar los coeficientes \( A_n \) y \( B_n \) usando las condiciones iniciales:
Dado \( u(x,0) = u_0(x) \) y \( \frac{\partial u}{\partial t}(x,0) = u_1(x) \), tenemos:
[math] u_0(x) = \sum_{n=1}^{\infty} A_n \sin(n\pi x) [/math]
[math] u_1(x) = \sum_{n=1}^{\infty} n\pi B_n \sin(n\pi x) [/math]
Los coeficientes de Fourier \( A_n \) y \( B_n \) se determinan como:
[math] A_n = 2 \int_0^1 u_0(x) \sin(n\pi x) \, dx [/math]
[math] B_n = \frac{2}{n\pi} \int_0^1 u_1(x) \sin(n\pi x) \, dx [/math]
5. Expresar la solución final:
Sustituimos los coeficientes en la solución general:
[math] u(x,t) = \sum_{n=1}^{\infty} \left[ \left( 2 \int_0^1 u_0(x) \sin(n\pi x) \, dx \right) \cos(n\pi t) + \left( \frac{2}{n\pi} \int_0^1 u_1(x) \sin(n\pi x) \, dx \right) \sin(n\pi t) \right] \sin(n\pi x) [/math]
3 Particularización del sistema de ecuación de ondas a unos datos iniciales dados
Simplemente se ha sustituido los valores iniciales en el sistema que se dio anteriormente:
[math] \left\{ \begin{aligned} &u_{tt}(x,t) = u_{xx}(x,t) & 0 \lt x \lt 1, t \gt 0, \\ &u(0, t) = u(1, t) = 0, & t \gt 0, \\ &u(x, 0) = e^{-100(x - 1/2)^2}, \\ &u_t(x, 0) = 0, \end{aligned} \right. [/math]
de forma que la serie de la cual se deben representar y mostrar sus 50 primeros términos se mostrará a continuación tras sustituir los correspondientes datos iniciales.
3.1 Determinar los coeficientes [math] A_{n} [/math] y [math] B_{n} [/math] usando las condiciones iniciales
Dado \( u_0(x) = e^{-100(x - 1/2)^2} \) y \( u_1(x) = 0 \):
[math] A_n = 2 \int_0^1 e^{-100(x - 1/2)^2} \sin(n\pi x) \, dx [/math]
[math] B_n = 0[/math]
3.2 Expresar la solución final
[math] u(x,t) = \sum_{n=1}^{\infty} \left( 2 \int_0^1 e^{-100(x - 1/2)^2} \sin(n\pi x) \, dx \right) \cos(n\pi t) \sin(n\pi x) [/math]
Para graficar la solución en el intervalo de tiempo \( t \in [0,2] \), tomaremos los primeros 50 términos de la serie.
3.3 Código
close all
% Limpiar el espacio de trabajo y cerrar todas las figuras previas
clear all
close all
% Datos
numterminos_serie = 50; % Número de términos para la serie de Fourier
numvalores_t = 400; % Número de valores de t
numvalores_x = 400; % Número de valores de x
numvalores_trapecio = 300; % Número de valores al discretizar para la fórmula del trapecio
% Generación de puntos de evaluación
t = linspace(0, 2, numvalores_t); % Vector de valores de t
x = linspace(0, 1, numvalores_x); % Vector de valores de x
s = linspace(0, 1, numvalores_trapecio); % Vector de valores de s
% Cálculo de la solución con los primeros 50 términos de la serie de Fourier
U = zeros(length(x), length(t));
for n = 1:numterminos_serie
integrando = @(s) 2*exp(-100*(s-1/2).^2).*sin(n*pi*s);
U = U + trapz(s,integrando(s))*cos(n*pi*t)'*sin(n*pi*x);
end
%Gráfica
surf(x,t,U, 'EdgeColor', 'none'); % Gráfica de la solución en función de x y t
xlabel('x'); ylabel('t'); zlabel('u(x,t)'); % Etiquetas de ejes
legend('u(x,t)'); % Leyenda
4 Condiciones iniciales de una onda que viaja en un único sentido
Tomar como datos iniciales los correspondientes a una onda que viaja en un solo sentido implica que la forma de la onda en un punto dado \( x \) y tiempo \( t \) está determinada por la función \( f(x - t) \). En otras palabras, la onda se desplaza hacia la derecha a una velocidad constante \( c \), donde \( c \) es la velocidad de propagación de la onda. Esto se logra al modificar apropiadamente las condiciones iniciales \( u_0(x) \) y \( u_1(x) \) para que reflejen esta propiedad de la onda unidireccional. En este caso particular, \( u_0(x) \) representa la forma inicial de la onda y \( u_1(x) \) representa la derivada de \( u_0(x) \) con respecto a \( x \), ajustada negativamente, para reflejar la velocidad y dirección de propagación.
[math] \left\{ \begin{aligned} &u_{tt}(x,t) = u_{xx}(x,t) & 0 \lt x \lt 1, t \gt 0, \\ &u(0, t) = u(1, t) = 0, & t \gt 0, \\ &u(x, 0) = e^{-100(x - 1/2)^2}, \\ &u_t(x, 0) = 200(x - 1/2)e^{-100(x - 1/2)^2}, \end{aligned} \right. [/math]
notése que se toma \( u_0(x) = f(x) \) y \( u_1(x) = -f'(x) \), donde \( f(x) = e^{-100(x-1/2)^2} \).
Calcular los coeficientes de Fourier:
Los coeficientes de Fourier se calculan utilizando las siguientes fórmulas:
[math] A_n = 2 \int_0^1 e^{-100(x-1/2)^2} \sin(n\pi x) \, dx \\ B_n = \frac{2}{n\pi} \int_0^1 200(x - 1/2)e^{-100(x - 1/2)^2} \sin(n\pi x) \, dx [/math]
Expresar la solución final:
Una vez que tenemos los coeficientes de Fourier, la solución se expresa como una serie infinita:
[math] u(x,t) = \sum_{n=1}^{\infty} \left[ A_n \cos(n\pi t) + B_n \sin(n\pi t) \right] \sin(n\pi x) [/math]
Esto representa una suma infinita sobre todos los términos de la serie de Fourier. A continuación se hará la representación gráfica de la serie:
Ahora vemos como el perfil viaja a velocidad 1:
4.1 Código
close all
% Limpiar el espacio de trabajo y cerrar todas las figuras previas
clear all
close all
% Datos
numterminos_serie = 50; % Número de términos para la serie de Fourier
numvalores_t = 400; % Número de valores de t
numvalores_x = 400; % Número de valores de x
numvalores_trapecio = 300; % Número de valores al discretizar para la fórmula del trapecio
% Generación de puntos de evaluación
t = linspace(0, 4, numvalores_t); % Vector de valores de t
x = linspace(0, 1, numvalores_x); % Vector de valores de x
s = linspace(0, 1, numvalores_trapecio); % Vector de valores de s
% Cálculo de la solución con los primeros 50 términos de la serie de Fourier
U = zeros(length(x), length(t));
for n = 1:numterminos_serie
integrando1 = @(s) 2*exp(-100*(s-1/2).^2).*sin(n*pi*s);
integrando2 = @(s) 2/(n*pi)*200*(s-1/2).*exp(-100*(s-1/2).^2).*sin(n*pi*s);
U = U + (trapz(s,integrando1(s))*cos(n*pi*t)' + trapz(s,integrando2(s))*sin(n*pi*t)')*sin(n*pi*x);
end
%Gráfica
surf(x,t,U, 'EdgeColor', 'none'); % Gráfica de la solución en función de x y t
xlabel('x'); ylabel('t'); zlabel('u(x,t)'); % Etiquetas de ejes
legend('u(x,t)'); % Leyenda
5 Condiciones de frontera de Neumann
El nuevo sistema de ecuaciones para la ecuación de ondas con condiciones de frontera de Neumann es:
Tal y como se hizo en los apartados anteriores se resuelve el sistema por el método de separación de variables (no se desarrollará de nuevo):
donde
[math] A_n = 2 \int_0^1 e^{-100(x-1/2)^2} \cos(n\pi x) \, dx \\ B_n = \frac{2}{n\pi} \int_0^1 200(x - 1/2)e^{-100(x - 1/2)^2} \cos(n\pi x) \, dx [/math]
Resolviendo ambos coeficientes se puede hallar la solución para las condiciones de Newmann y unicamente faltaría por representar la solución final de forma gráfica.
5.1 Código
close all
% Limpiar el espacio de trabajo y cerrar todas las figuras previas
clear all
close all
% Datos
numterminos_serie = 50; % Número de términos para la serie de Fourier
numvalores_t = 400; % Número de valores de t
numvalores_x = 400; % Número de valores de x
numvalores_trapecio = 300; % Número de valores al discretizar para la fórmula del trapecio
% Generación de puntos de evaluación
t = linspace(0, 4, numvalores_t); % Vector de valores de t
x = linspace(0, 1, numvalores_x); % Vector de valores de x
s = linspace(0, 1, numvalores_trapecio); % Vector de valores de s
% Cálculo de la solución con los primeros 50 términos de la serie de Fourier
U = zeros(length(x), length(t));
for n = 1:numterminos_serie
integrando1 = @(s) 2*exp(-100*(s-1/2).^2).*sin(n*pi*s);
integrando2 = @(s) 2/(n*pi)*200*(s-1/2).*exp(-100*(s-1/2).^2).*sin(n*pi*s);
U = U + (trapz(s,integrando1(s))*cos(n*pi*t)' + trapz(s,integrando2(s))*sin(n*pi*t)')*sin(n*pi*x);
end
%Gráfica
surf(x,t,U, 'EdgeColor', 'none'); % Gráfica de la solución en función de x y t
xlabel('x'); ylabel('t'); zlabel('u(x,t)'); % Etiquetas de ejes
legend('u(x,t)'); % Leyenda
6 Representación solución fundamental de dimensión 3 y regularización para la solución fundamental de dimensión 2
6.1 Código
close all
% Limpiar el espacio de trabajo y cerrar todas las figuras previas
clear all
close all
% Datos
c=1; % Velocidad de propagación escogida
numvalores_t = 400; % Número de valores de t
numvalores_x = 400; % Número de valores de r
% Generación de puntos de evaluación
t = linspace(0, 1, numvalores_t); % Vector de valores de t
x = linspace(-1, 1, numvalores_x); % Vector de valores de x
% Crear la cuadrícula de puntos
[X, T] = meshgrid(x, t);
% Definir la función de Heaviside
H = @(s) s >= 0;
% Definir la función K1(x, t)
K1 = @(x, t) 1/(2*c) * ( H(x + c*t) - H(x - c*t) );
%Gráfica
surf(x,t,K1(X,T),'EdgeColor', 'none'); % Gráfica de la solución fundamental para n=1 en función de x y t
shading interp
xlabel('x'); ylabel('t'); zlabel('K_1(x,t)'); % Etiquetas de ejes
legend('K_1(x,t)'); % Leyenda
title('Solución fundamental para n=1') % Título
7 Solución fundamental de dimensión 2 mediante el producto de convolución
7.1 Código
close all
% Limpiar el espacio de trabajo y cerrar todas las figuras previas
clear all
close all
% Datos
numterminos_serie = 50; % Número de términos para la serie de Fourier
numvalores_t = 400; % Número de valores de t
numvalores_x = 400; % Número de valores de x
numvalores_trapecio = 300; % Número de valores al discretizar para la fórmula del trapecio
% Generación de puntos de evaluación
t = linspace(0, 4, numvalores_t); % Vector de valores de t
x = linspace(0, 1, numvalores_x); % Vector de valores de x
s = linspace(0, 1, numvalores_trapecio); % Vector de valores de s
% Cálculo de la solución con los primeros 50 términos de la serie de Fourier
U = zeros(length(x), length(t));
for n = 1:numterminos_serie
integrando1 = @(s) 2*exp(-100*(s-1/2).^2).*sin(n*pi*s);
integrando2 = @(s) 2/(n*pi)*200*(s-1/2).*exp(-100*(s-1/2).^2).*sin(n*pi*s);
U = U + (trapz(s,integrando1(s))*cos(n*pi*t)' + trapz(s,integrando2(s))*sin(n*pi*t)')*sin(n*pi*x);
end
%Gráfica
surf(x,t,U, 'EdgeColor', 'none'); % Gráfica de la solución en función de x y t
xlabel('x'); ylabel('t'); zlabel('u(x,t)'); % Etiquetas de ejes
legend('u(x,t)'); % Leyenda