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