Professional Documents
Culture Documents
Tarea Lab#3
Mtodos numricos para ingeniera
CM-3207
ESTUDIANTES:
RICARDO CORRALES RETANA 200925308
EMANUEL MURILLO COTO 201048556
GRUPO 2 | I Semestre
Contenido
Descripcin del trabajo ................................................................................................................................. 4
Desarrollo ...................................................................................................................................................... 5
I PARTE .......................................................................................................................................................... 5
Integrales de Fresnel ................................................................................................................................. 5
Obtencin de las sumas ........................................................................................................................ 5
Programacin de las integrales de Fresnel ........................................................................................... 6
Valores pequeos ................................................................................................................................. 6
Valores grandes..................................................................................................................................... 7
Regla del Trapecio ..................................................................................................................................... 8
Regla del trapecio Simple...................................................................................................................... 8
Regla del trapecio compuesto .............................................................................................................. 9
Analisis de Resultados................................................................................................................................. 10
Para x=0,5................................................................................................................................................ 10
Para x=0,5 y 5 trminos de la serie. .................................................................................................... 10
Para x=0,5 y 10 trminos de la serie. .................................................................................................. 10
Para x=0,5 y 50 trminos de la serie. .................................................................................................. 11
Para TrapecioComp con 10 intervalos ................................................................................................ 11
Para TrapecioComp con 100 intervalos .............................................................................................. 12
Anlisis de datos ..................................................................................................................................... 12
Para x=50................................................................................................................................................. 13
Para TrapecioComp con 10 intervalos ................................................................................................ 13
Para TrapecioComp con 50 intervalos ................................................................................................ 14
Para TrapecioComp con 100 intervalos .............................................................................................. 14
Para TrapecioComp con 1000 intervalos ............................................................................................ 14
Anlisis de datos ..................................................................................................................................... 15
II PARTE ....................................................................................................................................................... 16
Condiciones iniciales: .............................................................................................................................. 16
Mtodo Taylor Orden 2 .......................................................................................................................... 17
Ruge Kutta de orden 2 ............................................................................................................................ 25
Ruge Kutta de orden 4 ........................................................................................................................... 34
Al aplicar el script ...................................................................................................................................... 0
Anlisis de Resultados:.............................................................................................................................. 2
Mtodos multipasos ..................................................................................................................................... 2
Caso particular .......................................................................................................................................... 3
Conclusiones ................................................................................................................................................. 6
Bibliografa consultada.................................................................................................................................. 6
Descripcin del trabajo
Tambin la programacin de una funcin que aproxime el valor de una integral indefinida mediante el
mtodo de la regla del trapecio simple. Y seguido de esto el uso de esta programacin para basar el
mtodo de trapecio compuesto.
Para cerrar con la primera seccin se hace el clculo de algunos resultados para comparar las diferencias
y similitudes que se puede encontrar entre el uso de las integrales Fresnel y las funciones de trapecio
simple y compuesto.
Para realizar esto se hizo uso del software computacional Matlab para la programacin de las funciones
de Taylor de orden 2, orden n, Ruge Kutta de orden 2 y 4. Haciendo uno de la derivacin implcita por
medio de la regla de la cadena para la funcin de Taylor de orden n.
Posterior a esto se implementa un script en el cual contenga las condiciones iniciales del problema
propuesto y utilice las funciones antes programadas, graficando los resultados.
I PARTE
Integrales de Fresnel
Obtencin de las sumas
I.Las integrales de Fresnel C(x) y S(x), son empleadas para el clculo de ondas en fsica, y se definen
() = cos ( 2 ) , () = sen ( 2 )
0 2 0 2
Para pequeos valores de x las integrales se pueden obtener a travs de un desarrollo en serie
2 5 4 9
C(x) = ( ) +( )
2 5 2! 2 9 4!
3 3 7 5 11
S(x) = ( ) ( ) +( )
2 3 1! 2 7 3! 2 11 5!
El primer paso que se realiz fue determinar el comportamiento de los desarrollos de las series para
valores menores que 1 con el fin de convertirlo en la suma de una serie desde cero hasta infinito.
2 5 4 9
C(x) = ( ) +( )
2 5 2! 2 9 4!
2 4+1
() = ( ) (1)
2 (4 + 1) 2!
=0
3 3 7 5 11
S(x) = ( ) ( ) +( )
2 3 1! 2 7 3! 2 11 5!
21 41
() = ( ) (1)+1
2 (4 1) (2 1)!
=1
Al obtener las sumas de los valores C(x) y S(x) , se procedi a la programacin en Matlab.
Valores pequeos
1. [5 puntos] Programe una funcin en Matlab que aproxime C(x) y S(x) para pequeos valores (menores
a 1) de x
[C,S]=SerieFresnel[x,m]
Programacin
C = 0;
S = 0;
for i=0:m-1
C=C+(-1)^i*(pi/2)^(2*i)*x^(4*i+1)/((4*i+1)*factorial(2*i));
end
for i=1:m
S=S+(-1)^(i+1)*((pi/2)^(2*i-1))*(x^(4*i-1))/((4*i-1)*factorial(2*i-1));
end
Valores grandes
2. [2 puntos] Programe una funcin en Matlab que calcule C(x) y S(x) para valores grandes
de x
[C,S]=MaxFresnel[x]
Programacin
C= 1/2 + (1/x*pi)*sin(pi*(x^2)/2);
S= 1/2 - (1/x*pi)*cos(pi*(x^2)/2);
end
Regla del Trapecio
3. [5 puntos] Programe una funcin en Matlab que aproxime el valor de una integral definida
[I]=Trapecio[f,a,b]
Programacin
syms x
I =(b-a)*(subs(f,x,b)+subs(f,x,a))/2;
end
Regla del trapecio compuesto
4. [5 puntos] Programe una funcin en Matlab que aproxime el valor de una integral definida
[I]=TrapecioComp[f,a,b,m]
m: nmero de puntos.
Esta funcin debe llamar a la funcin [I]=Trapecio[f,a,b] programada en el punto anterior, las veces que
sea necesario.
Programacin
I=0;
syms x
h = (b-a)/(m-1);
for i=1:m-1
I=I + Trapecio(f,a+(i-1)*h,a+i*h);
end
I=double(I)
end
Analisis de Resultados
Para x=0,5
Para x=0,5 y 5 trminos de la serie.
Fuente: Matlab
Fuente: Matlab
Para x=0,5 y 50 trminos de la serie.
Fuente: Matlab
0.0651058129004716
0.492342948126519
0.0647355176440919
0.492344213323077
0.0647324631544457
Anlisis de datos
Para el mtodo Fresnel para valores pequeos se puede observar que del uso de 10 a 50 trminos para
aproximar la integral, el resultado fue el mismo. Tuvo una convergencia rpida con pocos datos. Para el
caso de trapecio compuesto, estos valores se acercaron ms a los primeros decimales del resultado que
para el segundo caso con valores grandes. Si no se tomara en cuenta todos los decimales como lo
hicimos nosotros en este trabajo y s slo se hiciera uso de 5 de estos, el resultado obtenido por los
diferentes mtodos sera el mismo.
6. [7 puntos] Calcule C y S para x = 50 obtenga el resultado de mediante las funciones de aproximacin
indicadas y usando la funcin TrapecioComp con 10, 50, 100 y 1000 subintervalos. Compare los
resultados.
Para x=50.
Fuente: Matlab
10.2898036894476
-16.9718847156501
Para TrapecioComp con 50 intervalos
7.39196376678401
0.287228572337709
2.16251400318923
2.51126038487882
1.75835898969203
-0.170032508217484
Anlisis de datos
Comparando los datos decidimos que el uso del mtodo de Fresnel para valores grandes (mayores a 1)
converge de una forma muchsimo ms rpida que el mtodo de Trapecio compuesto. Por ejemplo, para
Fresnel utilizamos 50 trminos para aproximar la integral, mientras que, en 50, 100 o 1000 puntos que
se utiliz en el trapecio compuesto no se haba acercado al valor an. Hay que rescatar que entre ms
puntos se probaban en la programacin de trapecio compuesto ms iban sus resultados convergiendo al
valor que se obtuvo por Fresnel.
II PARTE
II. Considere una poblacin de escarabajos, se quiere estudiar la evolucin de cierta caracterstica D de
una generacin a otra. Al inicio del estudio se encontr que la mitad de la poblacin posee dicha
caracterstica y cuatro generaciones despus se encontr que la posee el 80 % de la poblacin.
8 + ln(8) ( 1)(2 ) = 0
1. [2 puntos] Determine todas las condiciones iniciales del problema de valor inicial asociado al
problema descrito anteriormente (f, y0, intervalo).
Condiciones iniciales:
(8) ( 1)(2 )
() =
8
(0) = 0,5
Se requiere averiguar dicha caracterstica para las siguientes 5,10.25.50 , y 1000 generaciones por lo que
t va a variar segn la cantidad de generaciones en estudio
Mtodo Taylor Orden 2
Programa en Matlab:
function [ matrizSol ] = taylor2( f,y0,a,b,n )
tic %Empieza a contar tiempo de ejecucion
syms t
syms y
syms h
h = (b-a)/(n);
ti(1) = a;
w(1) = y0;
%Para plotear ambos graficos y se puedan ver juntos para comparar entre
%diferentes metodos
subplot (3,2,1),plot(ti(1),w(1) ,'*');
hold on
subplot (3,2,4), plot(ti(1),w(1) ,'*'),title ('Taylor2');
hold on
for i= 1:n
df=diff(f,t) + diff(f,y)*f; % primera derivada
ti(i+1) = a + i*h ;
w(i+1) = w(i) + h*subs(f,[t,y], [ti(i),w(i)])+ subs(df,[t,y],
[ti(i),w(i)])*h^2/2 ; %Taylor Orden 2
end
Fuente: Matlab
Para 5 generaciones n =5 [ , ]
0 0.5000
1.0000 0.5943
2.0000 0.6766
3.0000 0.7452
4.0000 0.8006
5.0000 0.8447
Fuente: Matlab
Tiempo 2.578453 s.
Para 10 generaciones n = 10 [ , ]
0 0.5000
1.0000 0.5943
2.0000 0.6766
3.0000 0.7452
4.0000 0.8006
5.0000 0.8447
6.0000 0.8793
7.0000 0.9064
8.0000 0.9275
9.0000 0.9438
10.0000 0.9565
Fuente: Matlab
Tiempo 5.282742 s.
Para 25 generaciones n = 25 [ , ]
Tiempo 13.193256 s
Para 50 generaciones n = 50 [ , ]
Fuente: Matlab
Tiempo 19.351885 s
Fuente: Matlab
Fuente: Matlab
Tiempo 37.408223s
973 1 987 1
974 1 988 1
975 1 989 1
976 1 990 1
977 1 991 1
978 1 992 1
979 1 993 1
Fuente: Matlab
Tiempo 370.300653 s
Fuente: Matlab
Para 5 generaciones n =5 [ , ]
0 0.5000
1.0000 0.5926
2.0000 0.6740
3.0000 0.7423
4.0000 0.7980
5.0000 0.8424
Tiempo 1.407450 s.
Para 10 generaciones n = 10 [ , ]
5.0000 0.8424
Tiempo 2.863813 s
Para 25 generaciones n = 25 [ , ]
0 0.500000000000000 13 0.979494552701764
1 0.592574909919925 14 0.984130541874367
2 0.673985532593660 15 0.987718798492632
3 0.742342816950055 16 0.990495896066986
4 0.798000722693560 17 0.992645105594924
5 0.842436609648928 18 0.994308343529001
6 0.877481562798060 19 0.995595474744873
7 0.904913590025844 20 0.996591538100538
8 0.926288810868689 21 0.997362350206894
9 0.942898733555309 22 0.997958847597810
10 0.955784340844172 23 0.998420449559654
11 0.965770761254532 24 0.998777661683289
12 0.973505674110622 25 0.999054091192868
Fuente: Matlab
Tiempo 4.965691 s
Para 50 generaciones n = 50 [ , ]
25 0.999054091192868
0 0.500000000000000 26 0.999268006773562
1 0.592574909919925 27 0.999433545768350
2 0.673985532593660 28 0.999561648425562
3 0.742342816950055 29 0.999660780893993
4 0.798000722693560 30 0.999737494725959
5 0.842436609648928 31 0.999796859855276
6 0.877481562798060 32 0.999842799660579
7 0.904913590025844 33 0.999878350255835
8 0.926288810868689 34 0.999905861143292
9 0.942898733555309 35 0.999927150489358
10 0.955784340844172 36 0.999943625285214
11 0.965770761254532 37 0.999956374333364
12 0.973505674110622 38 0.999966240205450
13 0.979494552701764 39 0.999973874926946
14 0.984130541874367 40 0.999979783068851
15 0.987718798492632 41 0.999984355094273
16 0.990495896066986 42 0.999987893163734
17 0.992645105594924 43 0.999990631104660
18 0.994308343529001 44 0.999992749864791
19 0.995595474744873 45 0.999994389470834
20 0.996591538100538 46 0.999995658282692
21 0.997362350206894 47 0.999996640154855
22 0.997958847597810 48 0.999997399978258
23 0.998420449559654 49 0.999997987968859
24 0.998777661683289 50 0.999998442986362
Fuente: Matlab
Tiempo 10.391707s.
15 0.987718798492632 31 0.999796859855276
Fuente: Matlab
Tiempo 22.296129 s.
97 0.999999999990897 124 1
98 0.999999999992955 125 1
.
Fuente: Matlab
Tiempo 196.542958 s.
for i= 1:n
k1=h*subs(f,[t,y], [ti(i),w(i)]);
%sera la primera derivada
ti(i+1) = a + i*h ;
%Calculo de k1 , k2, k3, k4
k2=h*subs(f,[t,y], [(ti(i)+0.5*h),(w(i)+0.5*k1)]);
k3=h*subs(f,[t,y], [(ti(i)+0.5*h),(w(i)+0.5*k2)]);
k4=h*subs(f,[t,y], [(ti(i)+h),(w(i)+k3)]);
%RK orden 4
w(i+1) = w(i) + (k1+2*k2+2*k3+k4)/6 ;
%Para plotear ambos graficos y se puedan ver juntos para comparar entre
%diferentes metodos
subplot (3,2,1) ,plot(ti(i+1),w(i+1) ,'*');
hold on
subplot (3,2,2),plot (ti(i+1),w(i+1) ,'*'),title ('RK4');
hold on
end
toc %Termina de contar tiempo de ejecucion
matrizSol = [ ti' w'];
end
Fuente: Matlab
Para 5 generaciones n =5 [ , ]
0 0.5000
1.0000 0.5933
2.0000 0.6753
3.0000 0.7441
4.0000 0.8000
5.0000 0.8445
Fuente: Matlab
Tiempo 2.030195s
Para 10 generaciones n = 10 [ , ]
0 0.5000
1.0000 0.5933
2.0000 0.6753
3.0000 0.7441
4.0000 0.8000
5.0000 0.8445
6.0000 0.8795
7.0000 0.9068
8.0000 0.9280
9.0000 0.9444
10.0000 0.9571
Fuente: Matlab
Tiempo 4.048232s
Para 25 generaciones n = 25 [ , ]
18 0.994635034457381 22 0.998103081129868
Fuente: Matlab
Tiempo 9.178677s
Para 50 generaciones n = 50 [ , ]
Fuente: Matlab
Tiempo 18.202649s
8 0.928012967829262 17 0.993042654214091
Tiempo 40.875884 s
657 1 995 1
658 1 996 1
659 1 997 1
660 1 998 1
661 1 999 1
662 1 1000 1
972 1
973 1
974 1
975 1
976 1
977 1
978 1
979 1
980 1
981 1
982 1
983 1
984 1
985 1
986 1
987 1
988 1
989 1
990 1
991 1
992 1
993 1
Fuente: Matlab
Tiempo 994.822842s
Al aplicar el script
RK4('-log(8)*y*(y-1)*(2-y)/8',0.5,0,5,5);
RK4('-log(8)*y*(y-1)*(2-y)/8',0.5,0,10,10);
RK4('-log(8)*y*(y-1)*(2-y)/8',0.5,0,25,25);
RK2('-log(8)*y*(y-1)*(2-y)/8',0.5,0,50,50);
RK2('-log(8)*y*(y-1)*(2-y)/8',0.5,0,100,100);
RK2('-log(8)*y*(y-1)*(2-y)/8',0.5,0,1000,1000);
RK4('-log(8)*y*(y-1)*(2-y)/8',0.5,0,5,5);
RK4('-log(8)*y*(y-1)*(2-y)/8',0.5,0,10,10);
RK4('-log(8)*y*(y-1)*(2-y)/8',0.5,0,25,25);
RK4('-log(8)*y*(y-1)*(2-y)/8',0.5,0,50,50);
RK4('-log(8)*y*(y-1)*(2-y)/8',0.5,0,100,100);
RK4('-log(8)*y*(y-1)*(2-y)/8',0.5,0,1000,1000);
taylor2('-log(8)*y*(y-1)*(2-y)/8',0.5,0,5,5);
taylor2('-log(8)*y*(y-1)*(2-y)/8',0.5,0,10,10);
taylor2('-log(8)*y*(y-1)*(2-y)/8',0.5,0,25,25);
taylor2('-log(8)*y*(y-1)*(2-y)/8',0.5,0,50,50);
taylor2('-log(8)*y*(y-1)*(2-y)/8',0.5,0,100,100);
taylor2('-log(8)*y*(y-1)*(2-y)/8',0.5,0,1000,1000);
Se obtuvo :
Figura Grafico de los mtodos juntos y de cada uno por aparte con n = 1000
Anlisis de Resultados:
En los diferentes mtodos utilizados el que tiene mejores aproximaciones es el RK4, aunque para
este ejemplo no hubo mucha diferencia entre cada uno de ellos esto se puede observar en los
grficos obtenidos , pero si se analiza con la mayor cantidad de decimales posibles el RK4 es el de
mejor comportamiento pero ese mtodo es el que toma ms tiempo de los tres ya que el proceso
lleva ms clculos .
Es importante sealar que el tiempo que le tomaba correr el mtodo variaba en las diferentes
pruebas con la misma cantidad de iteraciones. Entre las razones que pueden explicar esta
diferencia estn: velocidad del procesador de la computadora, uso que se le est dando a la
computadora aparte del correr el programa.
Estos mtodos al ser orden 2 y orden 4 sus aproximaciones pueden no ser tan exactas al usar gran
cantidad de intervalos , en este casi no hubo ese problema ya que la funcin que se analiz se
puede considerar continua que no tiene mximos o mnimos locales y su derivadas no son cclicas.
Mtodos multipasos
Se conoce como mtodos multipasos a aquellos que emplea la aproximacin en ms de uno de los
puntos de la red precedentes para determinar la aproximacin en el siguiente punto. A
continuacin, se da la definicin exacta de este mtodo.
= (, ), , () = ,
Es aquel cuya ecuacin de diferencias para obtener la aproximacin de wi+1 en el punto de red
ti+1 puede representarse por medio de la siguiente ecuacin, donde m es un entero mayor que 1:
+1 = 1 + 1 1 + + 0 +1 +
[ (+1 +1) + 1 ( ) +
+ 0 (1 1)
= 1, , , 1, = , 0 , 1 , , 1 0 , 1 , ,
0 = , 1 = 1 , 2 = 2 , , 1 = 1 ,
son especificados.
En palabras simples el mtodo multipaso es utilizar los valores previos para construir un polinomio
que aproxime a la funcin (, ()).
El nmero de valores previos que consideremos para determinar el polinomio nos determina el
grado que vamos a obtener del polinomio.
Caso particular
Observe que la ecuacin alcanza O(h3) a expensas de emplear un tamao de paso mayor, 2h.
Adems, note que la ecuacin no es de autoinicio, ya que necesita un valor previo de la variable
dependiente yi1. Tal valor no est disponible en un problema comn de valor inicial. Por ello, las
ecuaciones se denominan mtodo de Heun sin autoinicio.
Como se indica en la figura 26.4, la derivada estimada para la ecuacin se localiza ahora en el
punto medio y no al inicio del intervalo sobre el cual se hace prediccin.
Como se consider anteriormente, esta ubicacin centrada mejora el error del predictor a O(h3).
Sin embargo, antes de realizar una deduccin formal del mtodo de Heun sin autoinicio, lo
resumiremos y lo expresaremos utilizando una nomenclatura ligeramente modificada:
donde los superndices se agregaron para denotar que el corrector se aplica iterativamente desde
j=1 hasta m para obtener mejores soluciones. Observe que
son los resultados finales del corrector en los pasos anteriores. Las iteraciones terminan en
cualquier paso considerando el criterio de terminacin:
Conclusiones
La programacin del mtodo de Fresnel para valores menores que 1 converge tan rpido
como la programacin del trapecio compuesto.
El mtodo que mejor aproxima es el RK4, aunque es el mtodo que se toma ms tiempo
en completar.
Bibliografa consultada
Chapra, S. C., & Canale, R. P. (2007). Mtodos numricos para ingenieros. Mexico D.F.: McGraw-
Hill interamericana.