0% encontró este documento útil (0 votos)
14 vistas12 páginas

Hiperbolica

El documento presenta una función en MATLAB llamada 'ehiper', que simula la ecuación de la onda utilizando el método de diferencias finitas explícitas. Se introducen parámetros como los extremos del intervalo, el tiempo final y una constante, y se generan matrices que representan la deformación de la onda en el espacio y el tiempo. Se incluyen ejemplos de ejecución que muestran la salida de la función con diferentes configuraciones de parámetros.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
14 vistas12 páginas

Hiperbolica

El documento presenta una función en MATLAB llamada 'ehiper', que simula la ecuación de la onda utilizando el método de diferencias finitas explícitas. Se introducen parámetros como los extremos del intervalo, el tiempo final y una constante, y se generan matrices que representan la deformación de la onda en el espacio y el tiempo. Se incluyen ejemplos de ejecución que muestran la salida de la función con diferentes configuraciones de parámetros.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Corrección ejercicio 1)

function ehiper(a,b,T,c)
% Ecuación de la onda por Diferencias Finitas Explicitas
% ingreso de datos¨
% formato: u=ehiper(a,b,T,c)
% Se introduce los extremos de [a,b] en el eje x, el tiempo final T y
% la constante c. La salida es la deformación u(x,t) en cada instante
% de tiempo a lo largo de [a,b]
m=input('ingrese no de intervalos para la variable espacial:');
n=input('ingrese no de intervalos para la variable temporal:');
u=zeros(m+1,n+1);
h=(b-a)/m;k=T/n;
r=c^2*k^2/h^2;
u(1,:)=0;u(m+1,:)=0;
for i=2:m
u(i,1)=sin(pi*(i-1)*h);
u(i,2)=(1-r)*sin(pi*(i-1)*h)+(r/2)*(sin(pi*(i)*h)+sin(pi*(i-2)*h))+k*0;
end
for j=3:n+1
for i=2:m
u(i,j)=(2-2*r)*u(i,j-1)+r*(u(i+1,j-1)+u(i-1,j-1))-u(i,j-2);
end
end
x=linspace(a,b,m+1);
t=linspace(0,T,n+1);
[x,t]=meshgrid(x,t);
u=u'
surf(x,t,u);

Ejecución del programa:


>> ehiper(0,1,1,1)
ingrese no de intervalos para la variable espacial:8
ingrese no de intervalos para la variable temporal:15

u=

0 0.3827 0.7071 0.9239 1.0000 0.9239 0.7071 0.3827 0


0 0.3744 0.6918 0.9039 0.9783 0.9039 0.6918 0.3744 0
0 0.3499 0.6465 0.8447 0.9143 0.8447 0.6465 0.3499 0
0 0.3102 0.5733 0.7490 0.8107 0.7490 0.5733 0.3102 0
0 0.2572 0.4752 0.6208 0.6720 0.6208 0.4752 0.2572 0
0 0.1929 0.3565 0.4658 0.5042 0.4658 0.3565 0.1929 0
0 0.1204 0.2224 0.2906 0.3145 0.2906 0.2224 0.1204 0
0 0.0426 0.0787 0.1028 0.1112 0.1028 0.0787 0.0426 0
0 -0.0371 -0.0685 -0.0895 -0.0968 -0.0895 -0.0685 -0.0371 0
0 -0.1151 -0.2127 -0.2778 -0.3007 -0.2778 -0.2127 -0.1151 0
0 -0.1881 -0.3476 -0.4542 -0.4916 -0.4542 -0.3476 -0.1881 0
0 -0.2530 -0.4675 -0.6109 -0.6612 -0.6109 -0.4675 -0.2530 0
0 -0.3070 -0.5672 -0.7411 -0.8022 -0.7411 -0.5672 -0.3070 0
0 -0.3476 -0.6423 -0.8392 -0.9084 -0.8392 -0.6423 -0.3476 0
0 -0.3732 -0.6896 -0.9010 -0.9752 -0.9010 -0.6896 -0.3732 0
0 -0.3826 -0.7070 -0.9238 -0.9999 -0.9238 -0.7070 -0.3826 0
2)
function ehiper(a,b,T,c)
% Ecuación de la onda por Diferencias Finitas Explicitas
% ingreso de datos¨
% formato: u=ehiper(a,b,T,c)
% Se introduce los extremos de [a,b] en el eje x, el tiempo final T y
% la constante c. La salida es la deformación u(x,t) en cada instante
% de tiempo a lo largo de [a,b]
m=input('ingrese no de intervalos para la variable espacial:');
n=input('ingrese no de intervalos para la variable temporal:');
u=zeros(m+1,n+1);
h=(b-a)/m;k=T/n;
r=c^2*k^2/h^2;
u(1,:)=0;u(m+1,:)=0;
for i=2:m
u(i,1)=sin(4*pi*(i-1)*h);
u(i,2)=(1-r)*sin(4*pi*(i-1)*h)+(r/2)*(sin(4*pi*(i)*h)+sin(4*pi*(i-2)*h))+k*0;
end
for j=3:n+1
for i=2:m
u(i,j)=(2-2*r)*u(i,j-1)+r*(u(i+1,j-1)+u(i-1,j-1))-u(i,j-2);
end
end
x=linspace(a,b,m+1);
t=linspace(0,T,n+1);
[x,t]=meshgrid(x,t);
u=u'
surf(x,t,u);
EJECUCION DEL PROGRAMA:
>> ehiper(0,0.5,1,(1/4*pi))
ingrese no de intervalos para la variable espacial:8
ingrese no de intervalos para la variable temporal:10

u=

0 0 0 0 0 0 0 0 0
0 0.0707 0.1000 0.0707 0.0000 -0.0707 -0.1000 -0.0707 0
0 0.0760 0.1075 0.0760 0.0000 -0.0760 -0.1075 -0.0760 0
0 0.0110 0.0156 0.0110 0.0000 -0.0110 -0.0156 -0.0110 0
0 -0.0642 -0.0908 -0.0642 0.0000 0.0642 0.0908 0.0642 0
0 -0.0800 -0.1131 -0.0800 -0.0000 0.0800 0.1131 0.0800 0
0 -0.0218 -0.0308 -0.0218 0.0000 0.0218 0.0308 0.0218 0
0 0.0566 0.0800 0.0566 -0.0000 -0.0566 -0.0800 -0.0566 0
0 0.0826 0.1168 0.0826 0.0000 -0.0826 -0.1168 -0.0826 0
0 0.0322 0.0456 0.0322 -0.0000 -0.0322 -0.0456 -0.0322 0
0 -0.0479 -0.0678 -0.0479 0.0000 0.0479 0.0678 0.0479 0
3) a)

function ehiper(a,b,T,c)
% Ecuación de la onda por Diferencias Finitas Explicitas
% ingreso de datos¨
% formato: u=ehiper(a,b,T,c)
% Se introduce los extremos de [a,b] en el eje x, el tiempo final T y
% la constante c. La salida es la deformación u(x,t) en cada instante
% de tiempo a lo largo de [a,b]
h=pi/10;
m=(b-a)/h;
k=0.05;
n=T/k;
u=zeros(m+1,n+1);
r=c^2*k^2/h^2;
u(1,:)=0;u(m+1,:)=0;
for i=2:m
u(i,1)=sin(pi*(i-1)*h);
u(i,2)=(1-r)*sin(pi*(i-1)*h)+(r/2)*(sin(pi*(i)*h)+sin(pi*(i-2)*h))+k*0;
end
for j=3:n+1
for i=2:m
u(i,j)=(2-2*r)*u(i,j-1)+r*(u(i+1,j-1)+u(i-1,j-1))-u(i,j-2);
end
end
x=linspace(a,b,m+1);
t=linspace(0,T,n+1);
[x,t]=meshgrid(x,t);
u=u'
surf(x,t,u);

>> ehiper(0,pi,0.8,1)

u=

0 0.8344 0.9198 0.1797 -0.7217 -0.9754 -0.3536 0.5855 0.9991 0.5160 0


0 0.8249 0.9094 0.1777 -0.7135 -0.9643 -0.3496 0.5789 0.9878 0.5101 0
0 0.7966 0.8783 0.1716 -0.6891 -0.9313 -0.3376 0.5591 0.9540 0.5034 0
0 0.7503 0.8272 0.1616 -0.6490 -0.8771 -0.3180 0.5265 0.8987 0.4954 0
0 0.6869 0.7573 0.1480 -0.5941 -0.8030 -0.2911 0.4820 0.8239 0.4850 0
0 0.6079 0.6701 0.1309 -0.5258 -0.7106 -0.2576 0.4266 0.7317 0.4710 0
0 0.5150 0.5678 0.1109 -0.4455 -0.6021 -0.2183 0.3616 0.6253 0.4516 0
0 0.4105 0.4525 0.0884 -0.3550 -0.4798 -0.1739 0.2886 0.5078 0.4252 0
0 0.2966 0.3270 0.0639 -0.2565 -0.3467 -0.1257 0.2094 0.3826 0.3901 0
0 0.1759 0.1940 0.0379 -0.1522 -0.2057 -0.0745 0.1261 0.2532 0.3449 0
0 0.0513 0.0566 0.0111 -0.0444 -0.0600 -0.0216 0.0409 0.1229 0.2887 0
0 -0.0745 -0.0821 -0.0160 0.0644 0.0871 0.0320 -0.0437 -0.0052 0.2209 0
0 -0.1986 -0.2189 -0.0428 0.1718 0.2322 0.0850 -0.1255 -0.1286 0.1419 0
0 -0.3182 -0.3508 -0.0685 0.2752 0.3720 0.1364 -0.2020 -0.2451 0.0524 0
0 -0.4305 -0.4746 -0.0927 0.3724 0.5034 0.1852 -0.2710 -0.3529 -0.0460 0
0 -0.5331 -0.5877 -0.1148 0.4611 0.6234 0.2305 -0.3306 -0.4509 -0.1510 0
0 -0.6235 -0.6874 -0.1343 0.5393 0.7294 0.2716 -0.3790 -0.5383 -0.2597 0
b)

function ehiper(a,b,T,c)
% Ecuación de la onda por Diferencias Finitas Explicitas
% ingreso de datos¨
% formato: u=ehiper(a,b,T,c)
% Se introduce los extremos de [a,b] en el eje x, el tiempo final T y
% la constante c. La salida es la deformación u(x,t) en cada instante
% de tiempo a lo largo de [a,b]
h=pi/10;
m=(b-a)/h;
k=0.1;
n=T/k;
u=zeros(m+1,n+1);
r=c^2*k^2/h^2;
u(1,:)=0;u(m+1,:)=0;
for i=2:m
u(i,1)=sin(pi*(i-1)*h);
u(i,2)=(1-r)*sin(pi*(i-1)*h)+(r/2)*(sin(pi*(i)*h)+sin(pi*(i-2)*h))+k*0;
end
for j=3:n+1
for i=2:m
u(i,j)=(2-2*r)*u(i,j-1)+r*(u(i+1,j-1)+u(i-1,j-1))-u(i,j-2);
end
end
x=linspace(a,b,m+1);
t=linspace(0,T,n+1);
[x,t]=meshgrid(x,t);
u=u'
surf(x,t,u);

>> ehiper(0,pi,0.8,1)

u=

0 0.8344 0.9198 0.1797 -0.7217 -0.9754 -0.3536 0.5855 0.9991 0.5160 0


0 0.7964 0.8780 0.1716 -0.6889 -0.9310 -0.3375 0.5589 0.9537 0.4925 0
0 0.6861 0.7563 0.1478 -0.5934 -0.8020 -0.2908 0.4815 0.8215 0.4659 0
0 0.5133 0.5659 0.1106 -0.4440 -0.6001 -0.2175 0.3602 0.6189 0.4281 0
0 0.2939 0.3240 0.0633 -0.2542 -0.3435 -0.1245 0.2067 0.3707 0.3662 0
0 0.0477 0.0526 0.0103 -0.0413 -0.0558 -0.0202 0.0362 0.1054 0.2677 0
0 -0.2028 -0.2236 -0.0437 0.1754 0.2371 0.0863 -0.1330 -0.1504 0.1257 0
0 -0.4348 -0.4794 -0.0937 0.3761 0.5084 0.1858 -0.2818 -0.3765 -0.0571 0
0 -0.6274 -0.6916 -0.1351 0.5426 0.7336 0.2706 -0.3927 -0.5607 -0.2665 0
c)
function ehiper(a,b,T,c)
% Ecuación de la onda por Diferencias Finitas Explicitas
% ingreso de datos¨
% formato: u=ehiper(a,b,T,c)
% Se introduce los extremos de [a,b] en el eje x, el tiempo final T y
% la constante c. La salida es la deformación u(x,t) en cada instante
% de tiempo a lo largo de [a,b]
h=pi/20;
m=(b-a)/h;
k=0.05;
n=T/k;
u=zeros(m+1,n+1);
r=c^2*k^2/h^2;
u(1,:)=0;u(m+1,:)=0;
for i=2:m
u(i,1)=sin(pi*(i-1)*h);
u(i,2)=(1-r)*sin(pi*(i-1)*h)+(r/2)*(sin(pi*(i)*h)+sin(pi*(i-2)*h))+k*0;
end
for j=3:n+1
for i=2:m
u(i,j)=(2-2*r)*u(i,j-1)+r*(u(i+1,j-1)+u(i-1,j-1))-u(i,j-2);
end
end
x=linspace(a,b,m+1);
t=linspace(0,T,n+1);
[x,t]=meshgrid(x,t);
u=u'
surf(x,t,u);

>> ehiper(0,pi,0.8,1)

u=

Columns 1 through 13

0 0.4737 0.8344 0.9959 0.9198 0.6243 0.1797 -0.3077 -0.7217 -0.9635 -0.9754 -0.7545 -0.3536
0 0.4680 0.8243 0.9839 0.9087 0.6167 0.1776 -0.3040 -0.7130 -0.9518 -0.9636 -0.7454 -0.3493
0 0.4509 0.7943 0.9481 0.8756 0.5943 0.1711 -0.2929 -0.6870 -0.9172 -0.9285 -0.7182 -0.3366
0 0.4230 0.7450 0.8893 0.8214 0.5574 0.1605 -0.2748 -0.6444 -0.8603 -0.8710 -0.6737 -0.3158
0 0.3848 0.6778 0.8091 0.7473 0.5071 0.1460 -0.2500 -0.5863 -0.7827 -0.7924 -0.6129 -0.2873
0 0.3373 0.5942 0.7092 0.6551 0.4446 0.1280 -0.2191 -0.5140 -0.6861 -0.6946 -0.5373 -0.2518
0 0.2817 0.4962 0.5923 0.5470 0.3713 0.1069 -0.1830 -0.4292 -0.5730 -0.5801 -0.4487 -0.2103
0 0.2193 0.3862 0.4610 0.4258 0.2890 0.0832 -0.1424 -0.3341 -0.4460 -0.4515 -0.3493 -0.1637
0 0.1515 0.2669 0.3186 0.2942 0.1997 0.0575 -0.0984 -0.2309 -0.3082 -0.3120 -0.2414 -0.1131
0 0.0801 0.1411 0.1685 0.1556 0.1056 0.0304 -0.0520 -0.1221 -0.1630 -0.1650 -0.1276 -0.0598
0 0.0068 0.0119 0.0143 0.0132 0.0089 0.0026 -0.0044 -0.0103 -0.0138 -0.0140 -0.0108 -0.0051
0 -0.0667 -0.1175 -0.1403 -0.1296 -0.0879 -0.0253 0.0433 0.1017 0.1357 0.1374 0.1063 0.0498
0 -0.1386 -0.2442 -0.2914 -0.2692 -0.1827 -0.0526 0.0900 0.2112 0.2819 0.2854 0.2208 0.1035
0 -0.2072 -0.3649 -0.4355 -0.4023 -0.2730 -0.0786 0.1346 0.3156 0.4214 0.4266 0.3300 0.1547
0 -0.2707 -0.4768 -0.5691 -0.5256 -0.3567 -0.1027 0.1758 0.4124 0.5506 0.5574 0.4312 0.2021
0 -0.3277 -0.5772 -0.6889 -0.6363 -0.4318 -0.1243 0.2128 0.4992 0.6665 0.6747 0.5219 0.2448
0 -0.3767 -0.6636 -0.7921 -0.7316 -0.4965 -0.1429 0.2447 0.5740 0.7663 0.7757 0.6001 0.2817

Columns 14 through 21
0.1317 0.5855 0.8997 0.9991 0.8602 0.5160 0.0486 0
0.1301 0.5785 0.8888 0.9871 0.8498 0.5097 0.0480 0
0.1253 0.5574 0.8564 0.9511 0.8188 0.4912 0.0894 0
0.1176 0.5229 0.8034 0.8922 0.7681 0.4651 0.1623 0
0.1070 0.4757 0.7309 0.8117 0.6992 0.4390 0.2495 0
0.0938 0.4170 0.6407 0.7116 0.6154 0.4202 0.3307 0
0.0783 0.3482 0.5351 0.5946 0.5215 0.4120 0.3874 0
0.0610 0.2710 0.4165 0.4641 0.4239 0.4124 0.4073 0
0.0421 0.1873 0.2880 0.3248 0.3293 0.4135 0.3865 0
0.0223 0.0991 0.1531 0.1822 0.2427 0.4033 0.3292 0
0.0019 0.0085 0.0156 0.0428 0.1662 0.3693 0.2461 0
-0.0185 -0.0820 -0.1198 -0.0869 0.0979 0.3023 0.1506 0
-0.0384 -0.1699 -0.2481 -0.2012 0.0315 0.1992 0.0552 0
-0.0573 -0.2524 -0.3637 -0.2966 -0.0415 0.0645 -0.0313 0
-0.0744 -0.3264 -0.4612 -0.3730 -0.1296 -0.0907 -0.1048 0
-0.0891 -0.3886 -0.5361 -0.4337 -0.2384 -0.2512 -0.1663 0
-0.1003 -0.4353 -0.5857 -0.4850 -0.3683 -0.4018 -0.2196 0
4)

function ehiper(a,b,T,c)
% Ecuación de la onda por Diferencias Finitas Explicitas
% ingreso de datos¨
% formato: u=ehiper(a,b,T,c)
% Se introduce los extremos de [a,b] en el eje x, el tiempo final T y
% la constante c. La salida es la deformación u(x,t) en cada instante
% de tiempo a lo largo de [a,b]
h=0.1;
m=(b-a)/h;
k=0.1;
n=T/k;
u=zeros(m+1,n+1);
r=c^2*k^2/h^2;
u(1,:)=0;u(m+1,:)=0;
for i=2:m
u(i,1)=sin(2*pi*(i-1)*h);
u(i,2)=(1-r)*sin(2*pi*(i-1)*h)+(r/2)*(sin(2*pi*(i)*h)+sin(2*pi*(i-2)*h))
+k*2*pi*sin(2*pi*(i-1)*h);
end
for j=3:n+1
for i=2:m
u(i,j)=(2-2*r)*u(i,j-1)+r*(u(i+1,j-1)+u(i-1,j-1))-u(i,j-2);
end
end
x=linspace(a,b,m+1);
t=linspace(0,T,n+1);
[x,t]=meshgrid(x,t);
u=u'
surf(x,t,u);

>> ehiper(0,1,1.2,1)

u =

0 0.5878 0.9511 0.9511 0.5878 0.0000 -0.5878 -0.9511 -0.9511 -0.5878 0


0 0.8448 1.3670 1.3670 0.8448 0.0000 -0.8448 -1.3670 -1.3670 -0.8448 0
0 0.7792 1.2608 1.2608 0.7792 0.0000 -0.7792 -1.2608 -1.2608 -0.7792 0
0 0.4159 0.6730 0.6730 0.4159 0.0000 -0.4159 -0.6730 -0.6730 -0.4159 0
0 -0.1062 -0.1719 -0.1719 -0.1062 -0.0000 0.1062 0.1719 0.1719 0.1062 0
0 -0.5878 -0.9511 -0.9511 -0.5878 0.0000 0.5878 0.9511 0.9511 0.5878 0
0 -0.8448 -1.3670 -1.3670 -0.8448 -0.0000 0.8448 1.3670 1.3670 0.8448 0
0 -0.7792 -1.2608 -1.2608 -0.7792 0.0000 0.7792 1.2608 1.2608 0.7792 0
0 -0.4159 -0.6730 -0.6730 -0.4159 -0.0000 0.4159 0.6730 0.6730 0.4159 0
0 0.1062 0.1719 0.1719 0.1062 0.0000 -0.1062 -0.1719 -0.1719 -0.1062 0
0 0.5878 0.9511 0.9511 0.5878 -0.0000 -0.5878 -0.9511 -0.9511 -0.5878 0
0 0.8448 1.3670 1.3670 0.8448 -0.0000 -0.8448 -1.3670 -1.3670 -0.8448 0
5)

function ehiper(a,b,T,c)
% Ecuación de la onda por Diferencias Finitas Explicitas
% ingreso de datos¨
% formato: u=ehiper(a,b,T,c)
% Se introduce los extremos de [a,b] en el eje x, el tiempo final T y
% la constante c. La salida es la deformación u(x,t) en cada instante
% de tiempo a lo largo de [a,b]
h=0.1;
m=(b-a)/h;
k=0.1;
n=T/k;
u=zeros(m+1,n+1);
r=c^2*k^2/h^2;
u(1,:)=0;u(m+1,:)=0;
for i=2:m
u(i,1)=(((i-1)*h)<=0.5).*(1)+(((i-1)*h)>=0.5).*(-1);

u(i,2)=(1-r)*((((i-1)*h)<=0.5).*(1)+(((i-1)*h)>=0.5).*(-1))+(r/2)*(((((i)*h)<=0.5).*(1
)+(((i)*h)>=0.5).*(-1))+((((i-2)*h)<=0.5).*(1)+(((i-2)*h)>=0.5).*(-1)));
end
for j=3:n+1
for i=2:m
u(i,j)=(2-2*r)*u(i,j-1)+r*(u(i+1,j-1)+u(i-1,j-1))-u(i,j-2);
end
end
x=linspace(a,b,m+1);
t=linspace(0,T,n+1);
[x,t]=meshgrid(x,t);
u=u'
surf(x,t,u);

>> ehiper(0,1,1.2,1)
Warning: Size vector should be a row vector with integer elements.
> In ehiper at 12

u=

0 1.0000 1.0000 1.0000 1.0000 0 -1.0000 -1.0000 -1.0000 -1.0000 0


0 1.0000 1.0000 1.0000 0.5000 0 -0.5000 -1.0000 -1.0000 -1.0000 0
0 0 1.0000 0.5000 0 0 0 -0.5000 -1.0000 0 0
0 0 -0.5000 0 0 0 0 0 0.5000 0 0
0 -0.5000 -1.0000 -1.0000 0 0 0 1.0000 1.0000 0.5000 0
0 -1.0000 -1.0000 -1.0000 -1.0000 0 1.0000 1.0000 1.0000 1.0000 0
0 -0.5000 -1.0000 -1.0000 -1.0000 0 1.0000 1.0000 1.0000 0.5000 0
0 0 -0.5000 -1.0000 0 0 0 1.0000 0.5000 0 0
0 0 0 0.5000 0 0 0 -0.5000 0 0 0
0 0 1.0000 1.0000 0.5000 0 -0.5000 -1.0000 -1.0000 0 0
0 1.0000 1.0000 1.0000 1.0000 0 -1.0000 -1.0000 -1.0000 -1.0000 0
0 1.0000 1.0000 1.0000 0.5000 0 -0.5000 -1.0000 -1.0000 -1.0000 0

También podría gustarte