Diferencia entre revisiones de «Ecuación de ondas. Grupo C2»

De MateWiki
Saltar a: navegación, buscar

Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/mat/public_html/w/includes/diff/DairikiDiff.php on line 434
(Vibración con amortiguamiento. Cálculo de la energía)
(Vibración con amortiguamiento. Cálculo de la energía)
Línea 24: Línea 24:
 
%Coeficiente de amortiguamiento
 
%Coeficiente de amortiguamiento
 
am=[0,1,4,10,100];
 
am=[0,1,4,10,100];
 +
%Hacemos un bucle donde calcular la energía para cada coeficiente.
 
for n=am
 
for n=am
 
     %Datos en x
 
     %Datos en x
     a=0; b=10;
+
     a=0; b=10; %Longitud del cable L=10.
     h=0.1;
+
     h=0.1; %Paso.
     x=a:h:b;
+
     x=a:h:b; %Discretización espacial del cable.
 
     N=round((b-a)/h);
 
     N=round((b-a)/h);
 
     %Definimos las matrices de la ecuación
 
     %Definimos las matrices de la ecuación
 
     xx=x(2:N);
 
     xx=x(2:N);
 
     xx=xx';
 
     xx=xx';
     ua=0;ub=0; %condiciones de contorno
+
     ua=0;ub=0; %Condiciones de contorno.
     U0=zeros(size(xx));
+
     U0=zeros(size(xx)); %Preasignación de U0.
 +
    %Recorremos mediante un bucle U0, y añadimos los valores que correspondan.
 
     for j=1:length(xx);
 
     for j=1:length(xx);
 
         if xx(j)<b/3
 
         if xx(j)<b/3
Línea 42: Línea 44:
 
         end
 
         end
 
     end
 
     end
     V0=zeros(size(xx));
+
     V0=zeros(size(xx)); %Preasignación de V0.
 
     %Matriz K
 
     %Matriz K
 
     K=1/h^2*(2*diag(ones(1,N-1))-diag(ones(1,N-2),-1) -diag(ones(1,N-2),1));
 
     K=1/h^2*(2*diag(ones(1,N-1))-diag(ones(1,N-2),-1) -diag(ones(1,N-2),1));
Línea 51: Línea 53:
 
     %Resolución del sistema de ecuaciones de EDO de orden 1
 
     %Resolución del sistema de ecuaciones de EDO de orden 1
 
     t0=0;tM=40;
 
     t0=0;tM=40;
     k=h; % paso en t.
+
     k=h; %Paso en t.
     t=t0:k:tM;
+
     t=t0:k:tM; %Discretización del vector de tiempos.
     M=length(t)-1; %número de subintervalos
+
     M=length(t)-1; %Número de subintervalos.
 +
    %Añadimos en la primera columna las condiciones iniciales.
 
     U(:,1)=U0;
 
     U(:,1)=U0;
 
     V(:,1)=V0;
 
     V(:,1)=V0;
Línea 61: Línea 64:
 
         U(:,i+1)=U(:,i)+0.5*h*(V(:,i)+V(:,i+1));
 
         U(:,i+1)=U(:,i)+0.5*h*(V(:,i)+V(:,i+1));
 
     end
 
     end
     %Incluimos condiciones Dirichlet
+
     %Incluimos condiciones Dirichlet.
 
     UA=ua*ones(1,length(t));
 
     UA=ua*ones(1,length(t));
 
     UB=ub*ones(1,length(t));
 
     UB=ub*ones(1,length(t));
Línea 69: Línea 72:
 
     V=[UA;V;UB];
 
     V=[UA;V;UB];
 
     %Energía
 
     %Energía
     E=zeros(size(t));
+
     E=zeros(size(t)); %Preasignación.
 
     Ux=zeros(size(x));
 
     Ux=zeros(size(x));
 
     for l=1:M+1
 
     for l=1:M+1
 
         for m=2:N
 
         for m=2:N
             Ux(m)=(U(m+1,l)-U(m-1,l))/(2*k);
+
             Ux(m)=(U(m+1,l)-U(m-1,l))/(2*k); %Cálculo de la derivada Ux mediante la aproximación por diferencias finitas.
 
         end
 
         end
 
         Ux=Ux';
 
         Ux=Ux';
         E(l)=trapz(x,V(:,l).^2)+trapz(x,Ux.^2);
+
         E(l)=trapz(x,V(:,l).^2)+trapz(x,Ux.^2); %Cálculo de la energía.
 
     end
 
     end
     %Dibujamos la gráfica de la energía
+
     %Dibujamos la gráfica de la energía.
 
     hold on
 
     hold on
 
     plot(t,E)
 
     plot(t,E)
 
     xlabel('Tiempo (s)'); ylabel('Energía (J)');
 
     xlabel('Tiempo (s)'); ylabel('Energía (J)');
     %Borramos todos los datos para realizar el bucle de nuevo
+
     %Borramos todos los datos para realizar el bucle de nuevo.
 
     clear all
 
     clear all
 
end
 
end

Revisión del 20:04 7 may 2015

Trabajo realizado por estudiantes
Título Ecuación de ondas. Grupo C2
Asignatura Ecuaciones Diferenciales
Curso Curso 2014-15
Autores Nuestros nombres
Este artículo ha sido escrito por estudiantes como parte de su evaluación en la asignatura

1 Introducción

Consideramos un cable de una estructura civil de longitud L = 10 m sujeto por ambos extremos. Supondremos que el cable tiene una sección pequeña respecto a su longitud y que las vibraciones pueden modelizarse mediante la ecuación de ondas. Si denotamos su desplazamiento vertical por u(x,t), podemos plantear el problema de su movimiento según el siguiente sistema de ecuaciones:

2 Vibración sin amortiguamiento. Condiciones Dirichlet. Resolución por el método de líneas

2.1 Método del trapecio

2.2 Método de Euler explícito

2.3 Método de Heun

2.4 Cálculo de la energía

3 Vibración con amortiguamiento. Cálculo de la energía

Gráfica de la energía para distintos amortiguamientos
clear all, clf
%Coeficiente de amortiguamiento
am=[0,1,4,10,100];
%Hacemos un bucle donde calcular la energía para cada coeficiente.
for n=am
    %Datos en x
    a=0; b=10; %Longitud del cable L=10.
    h=0.1; %Paso.
    x=a:h:b; %Discretización espacial del cable.
    N=round((b-a)/h);
    %Definimos las matrices de la ecuación
    xx=x(2:N);
    xx=xx';
    ua=0;ub=0; %Condiciones de contorno.
    U0=zeros(size(xx)); %Preasignación de U0.
    %Recorremos mediante un bucle U0, y añadimos los valores que correspondan.
    for j=1:length(xx);
        if xx(j)<b/3
            U0(j)=3*xx(j)/b;
        else
            U0(j)=1.5-1.5*xx(j)/b;
        end
    end
    V0=zeros(size(xx)); %Preasignación de V0.
    %Matriz K
    K=1/h^2*(2*diag(ones(1,N-1))-diag(ones(1,N-2),-1) -diag(ones(1,N-2),1));
    %Término F y valor inicial
    F=0*xx;
    F(1)=F(1)+ua/h^2;
    F(end)=F(end)+ub/h^2;
    %Resolución del sistema de ecuaciones de EDO de orden 1
    t0=0;tM=40;
    k=h; %Paso en t.
    t=t0:k:tM; %Discretización del vector de tiempos.
    M=length(t)-1; %Número de subintervalos.
    %Añadimos en la primera columna las condiciones iniciales.
    U(:,1)=U0;
    V(:,1)=V0;
    for i=1:M
        %Sistema de ecuaciones por el método del trapecio
        V(:,i+1)=((1+0.5*k*n)*eye(size(K))+0.25*(k^2)*K)\(V(:,i)+0.5*k*(-n*V(:,i)-K*U(:,i)+2*F)-0.5*k*K*(U(:,i)+0.5*k*V(:,i)));
        U(:,i+1)=U(:,i)+0.5*h*(V(:,i)+V(:,i+1));
    end
    %Incluimos condiciones Dirichlet.
    UA=ua*ones(1,length(t));
    UB=ub*ones(1,length(t));
    U=[UA;U;UB];
    %Como las condiciones Dirichlet son nulas, las velocidades de estos puntos
    %también lo serán
    V=[UA;V;UB];
    %Energía
    E=zeros(size(t)); %Preasignación.
    Ux=zeros(size(x));
    for l=1:M+1
        for m=2:N
            Ux(m)=(U(m+1,l)-U(m-1,l))/(2*k); %Cálculo de la derivada Ux mediante la aproximación por diferencias finitas.
        end
        Ux=Ux';
        E(l)=trapz(x,V(:,l).^2)+trapz(x,Ux.^2); %Cálculo de la energía.
    end
    %Dibujamos la gráfica de la energía.
    hold on
    plot(t,E)
    xlabel('Tiempo (s)'); ylabel('Energía (J)');
    %Borramos todos los datos para realizar el bucle de nuevo.
    clear all
end
legend('a=0','a=1','a=4','a=10','a=100','Location','Best');
hold off


4 Cambio de condiciones en los extremos. Cálculo de la energía

5 Cambio de condiciones en los extremos. Condición Neumann. Cálculo de la energía

6 Vibración sin amortiguamiento. Método de Fourier