Ecuación Diferencial Hiperbólica usando fortran, matlab y scilab.
1. Año de la Diversificación Productiva y del Fortalecimiento de la
Educación
UNIVERSIDAD NACIONAL
DEL CALLAO
FACULTAD DE CIENCIAS
NATURALES Y MATEMÁTICA
FÍSICA TEÓRICA COMPUTACIONAL II
“ECUACIÓN DIFERENCIAL HIPERBÓLICA USANDO
FORTRAN 90, SCILAB 5.5 Y MATLAB.”
MARCO ANTONIO ALPACA CHAMBA
ESCUELA PROFESIONAL DE: FÍSICA
𝝏 𝟐
𝒖
𝝏𝒙 𝟐
=
𝝏 𝟐
𝒖
𝝏𝒕 𝟐
PROGRAM
IMPLICIT NONE
REAL, INTEGER…
30 -05-2015
2. Considerar la siguiente ecuación hiperbólica con condiciones iniciales y de frontera:
𝝏 𝟐
𝒖
𝝏𝒙 𝟐
=
𝝏 𝟐
𝒖
𝝏𝒕 𝟐
𝒖( 𝒙, 𝒕) = 𝒖( 𝟏, 𝒕) = 𝟎 , 𝒙 ∈ [ 𝟎, 𝟏]
𝒖( 𝒙, 𝟎) = 𝒔𝒊𝒏( 𝝅𝒙) + 𝟎. 𝟓𝒔𝒊𝒏( 𝟑𝝅𝒙)
𝒖′( 𝒙, 𝟎) = 𝟎
Hallar las soluciones usando FORTRAN, SCILAB Y MATLAB
SOLUCIÓN:
USANDO FORTRAN TENEMOS:
PROGRAM HYPERBOLIC
PARAMETER (IDM=100)
DIMENSION X(IDM),T(IDM),U(IDM,IDM)
REAL GAM,HT,HX,NT,NX,PI
OPEN(UNIT=11,FILE='HIPERBÓLICA.TXT',STATUS='UNKNOWN',ACTION='WRITE')
PRINT*,''
PRINT*,
'====================================================================='
PRINT*,' HYPERBOLIC PARTIAL DIFFERENTIAL EQUATION'
PRINT*,'==================================================================
===='
PRINT*,''
PRINT*, 'INGRESAR EL RANGO INFERIOR DE LA VARIABLE X (X=0):'
READ(5,*) AX
PRINT*, 'INGRESAR EL RANGO SUPERIOR DE LA VARIABLE X (X=1):'
READ*, BX
PRINT*, 'INGRESAR EL NUMBER DE SUBINTERVALOS DE X (N=10):'
READ*, NX
PRINT*,'INGRESAR EL RANGO INFERIOR DE LA VARIABLE T (T=0):'
READ*,AT
PRINT*, 'INGRESAR EL RANGO SUPERIOR DE LA VARIABLE T (T=1):'
READ*, BT
PRINT*, 'INGRESAR EL NUMBER DE SUBINTERVALOS DE T (N= 20):'
READ*, NT
PRINT*,''
PRINT*,('*',I=1,79)
PRINT '(5X,"RESULTADOS COMPUTACIONALES")'
PRINT*,('*',I=1,79)
PRINT*,''
PI = 4.0*ATAN(1.0)
HX=(BX-AX)/NX
HT=(BT-AT)/NT
DO I=1,NX+1
X(I)=(I-1)*HX
ENDDO
DO J=1,NT+1
T(J)=(J-1)*HT
ENDDO
DO I=2,NX
X(I)=(I-1)*HX
U(I,1)=F(X(I))
4. USANDO SCILAB TENEMOS:
function y=fi(x)
y=sin(%pi*x)+0.5*sin(3*%pi*x);
endfunction
function y=psi(x)
y=0
endfunction
function [u, x, t]=ggg(N, K, L, T, a)
h=L/N;
delta=T/K;
5. for i=1:N+1
x(i)=(i-1)*h;
end
for i=2:N
x(i)=(i-1)*h;
u(i,1)=fi(x(i));
u(i,2)=u(i,1)+delta*psi(x(i));
end
for j=1:K+1
t(j)=(j-1)*delta;
end
for j=1:K+1
u(1,j)=0;
u(N+1,j)=0;
end
gam=a^2*delta^2/h^2;
for j=2:K
for i=2:N
u(i,j+1)=-u(i,j-1)+gam*u(i-1,j)+(2-2*gam)*...
u(i,j)+gam*u(i+1,j);
end
end
endfunction
a=1;
[u,x,t]=ggg(10,20,1,1,a);
surf(x,t,u');
xlabel('X','fontsize',4);
ylabel('T','fontsize',4);
zlabel('U','fontsize',4);
title('Solución de una ecuación hiperbólica','fontsize',6);