41
Instituto Politécnico Nacional Profesor: Dr. David Romero Romero. Curso: Análisis de Sistemas Lineales. 11/Mayo/2015 Alumno: Ramos Albarrán Fernando

Proyecto I

Embed Size (px)

DESCRIPTION

Métodos de Integración, Sistemas Lineales. Instituto Politécnico Nacional. Fernando Ramos Albarrán

Citation preview

PROYECTO: SOLUCIN NUMRICA DE ECUACIONES DIFERENCIALES

Escuela Superior de Ingeniera Mecnica y Elctrica. Sistemas Lineales.11/Mayo/2015Alumno: Ramos Albarrn Fernando

Instituto Politcnico Nacional

Profesor: Dr. David Romero Romero.

Curso: Anlisis de Sistemas Lineales.

Seccin de Estudios de Posgrado e Investigacin[PROYECTO: SOLUCIN NUMRICA DE ECUACIONES DIFERENCIALES]

Tabla de contenidoINTRODUCCIN2Mtodos Explcitos3Mtodo Predictor - Corrector3Mtodos Implcitos4DESARROLLO4EJERCICIO 14A)SOLUCIN POR EL MTODO DE EULER4B)SOLUCIN POR EL MTODO TRAPEZOIDAL6C)SOLUCIN POR EL MTODO DE RUNGE KUTTA DE 4TO ORDEN8D)SOLUCIN POR EL MTODO DE GEAR DE 1ER ORDEN O EULER REGRESIVO9EJERCICIO 211A)SOLUCIN POR EL MTODO DE HEUN11B)SOLUCIN POR EL MTODO TRAPEZOIDAL13EJERCICIO 315A)SOLUCIN POR EL MTODO DE EULER15B)SOLUCIN POR EL MTODO TRAPEZOIDAL17C)SOLUCIN POR EL MTODO DE RUNGE KUTTA DE 4TO ORDEN19D)SOLUCIN POR EL MTODO DE GEAR DE 1ER ORDEN O EULER REGRESIVO20EJERCICIO 422A)DETERMINAR h MXIMO CON EL MTODO DE GEAR DE 1ER ORDEN22B Y C) SOLUCIN CON EL MTODO DE EULER PARA 2hmax y hmax/223CDIGO DE LOS MTODOS EN FORTRAN 9025CONLCUSIONES33BIBLIOGRAFA33

INTRODUCCINSea una ecuacin diferencial ordinaria de la formaY seaLa ecuacin de pendiente ordenada al origen. De acuerdo con esta ecuacin, la pendiente estimada f se usa para extrapolar desde un valor anterior yi a un nuevo valor yi+1 en una distancia h (figura 1).Nuevo valor = valor anterior + pendiente tamao de pasoO bien:Nuevo valor = valor anterior + funcin evaluada en el valor anterior tamao de paso

Figura 1 Ilustracin grfica del mtodo de un paso.Esta frmula se aplica paso a paso para calcular un valor posterior y, por lo tanto, para trazar la trayectoria de la solucin. Todos los mtodos de un paso que se expresen de esta forma general, son llamados mtodos explcitos y tan slo van a diferir en la manera en la que se estima la pendiente. En otras palabras, se toma la pendiente al inicio del intervalo como una aproximacin de la pendiente promedio sobre todo el intervalo. Tal procedimiento, llamado mtodo de Euler. Despus se revisa otro mtodo de un paso que emplean otras formas de estimar la pendiente que dan como resultado predicciones ms exactas. Todas estas tcnicas en general se conocen como mtodos de Runge-Kutta. El mtodo de Euler puede ser considerado tambin como el mtodo de Adams-Bashford de 1er orden.Muchas veces se tienen sistemas que involucran constantes de tiempo desde pequeos valores hasta grandes valores, stos son llamados sistemas rgidos, y para encontrar soluciones para dichos sistemas, es necesario mezclar los mtodos explcitos con los que se conocen como mtodos implcitos, se forma entonces un mtodo predictor-corrector, se puede usar solamente algn mtodo implcito para mejorar la aproximacin, la mayor parte del tiempo stos ltimos conducen a un sistema de ecuaciones no lineales, por lo cual es un poco ms complicado aplicar el mtodo. La forma de los mtodos implcitos es de la forma:Nuevo valor = valor anterior + funcin evaluada en diferentes valores incluyendo el actual tamao de pasoLos mtodos usados en ste documento son los siguientes:Mtodos ExplcitosMtodo de Euler - Adams-Bashford de 1er Orden-Mtodos de Runge-Kutta de Cuarto OrdenEl ms popular de los mtodos RK es el de cuarto orden. Como en el caso de los procedimientos de segundo orden, hay un nmero infinito de versiones. La siguiente, es la forma comnmente usada y, por lo tanto, le llamamos mtodo clsico RK de cuarto orden:Donde

Mtodo Predictor - CorrectorMtodos de Heun

La primer frmula de (6) es la predictora (Euler) que corresponde al mtodo explcito y la segunda ecuacin es el mtodo corrector que corresponde al mtodo implcito.Mtodos ImplcitosRegla Trapezoidal Adams Moulton 2do Orden-Mtodo de Gear de 1er Orden o Euler RegresivoDESARROLLOEJERCICIO 1

A) SOLUCIN POR EL MTODO DE EULERCdigo usado para graficar en MatLab, donde t1 a t4 y x1 a x4 son las salidas del programa en ForTran, para h=0.1, 0.01, 0.001 y 0.0001 respectivamente. El cdigo en ForTran del programa para el mtodo de Euler est al final de este documento. Si se requiere comparar otro valor de h se modifica la funcin en MatLab, aadiendo una x5 y t5 con sus etiquetas correspondientes.function Euler_vs_analitica(t1,x1,t2,x2,t3,x3,t4,x4)%Grfica de la solucin numrica h=0.1:plot(t1,x1,'-r')hold on%Grfica de la solucin numrica h=0.01:plot(t2,x2,'-m')hold on%Grfica de la solucin numrica h=0.001:plot(t3,x3,'-g')hold on%Grfica de la solucin numrica h=0.0001:plot(t4,x4,'-y')hold on%Solucin analtica:Q=length(t4);SolAn=zeros(Q,1);for i=1:Q SolAn(i)=-1./(t4(i)-1);endplot(t4,SolAn,'-b')title('Comparacin del Mtodo de Euler con la solucin analtica');xlabel('Tiempo t (seg)');ylabel('x(t)');legend('h=0.1','h=0.01','h=0.001','h=0.0001','Solucin verdadera');end

Haciendo zoom en la grfica se observa que para un paso pequeo la aproximacin es ms exacta para este sistema.

B) SOLUCIN POR EL MTODO TRAPEZOIDALSe usa exactamente el mismo cdigo de MatLab para graficar que en el mtodo de Euler mostrado anteriormente, donde t1 a t4 y x1 a x4 son las salidas del programa en ForTran, para h=0.1, 0.01, 0.001 y 0.0001 respectivamente. El cdigo en ForTran del programa para el mtodo trapezoidal est al final de este documento.

Haciendo zoom en varias partes de la grfica se puede observar que el mtodo de la regla trapezoidal es mucho ms exacto que el mtodo de Euler, para h=0.0001 es casi exacto para ste sistema, incluso para h=0.001 es ms exacto que el mtodo de Euler.

C) SOLUCIN POR EL MTODO DE RUNGE KUTTA DE 4TO ORDENUsando la misma funcin para graficar en MatLab se obtiene la siguiente grfica.

Al hacer zoom se observa que, como el sistema no es rgido; se obtiene una solucin parecida al mtodo trapezoidal y adems; debido a que su pendiente se fragmenta en ms pedazos ms pequeos que el mtodo de Euler es ms exacto que ste ltimo.

D) SOLUCIN POR EL MTODO DE GEAR DE 1ER ORDEN O EULER REGRESIVOUsando la misma funcin para graficar en MatLab se obtiene la siguiente figura.

Haciendo zoom en la figura se observa que para valores cercanos a donde la funcin es discontinua el mtodo muestra inestabilidad, se observa que es ms exacto que el Euler explcito pero menos exacto que el trapezoidal o incluso el Runge Kutta de 4to orden.

EJERCICIO 2 A) SOLUCIN POR EL MTODO DE HEUNCdigo usado para graficar en MatLab, donde t1 a t6 y x1 a x6 son las salidas del programa en ForTran, para respectivamente. El cdigo en ForTran del programa para el mtodo de Heun est al final de este documento. Si se requiere comparar otro valor de h se modifica la funcin en MatLab, aadiendo una x7 y t7 con sus etiquetas correspondientes.function heun_vs_analitica2(t1,x1,t2,x2,t3,x3,t4,x4,t5,x5,t6,x6)%Grfica de la solucin numrica h=2^-2:plot(t1,x1,'-y')hold on%Grfica de la solucin numrica h=2^-4:plot(t2,x2,'-m')hold on%Grfica de la solucin numrica h=2^-6:plot(t3,x3,'-c')hold on%Grfica de la solucin numrica h=2^-8:plot(t4,x4,'-r')hold on%Grfica de la solucin numrica h=2^-10:plot(t5,x5,'-g')hold on%Grfica de la solucin numrica h=2^-12:plot(t6,x6,'-k')hold on%Solucin analtica:Q=length(t6);SolAn=zeros(Q,1);for i=1:Q SolAn(i)=(t6(i)).^3;endplot(t6,SolAn,'-b')title('Comparacin del Mtodo de Heun con la solucin analtica');xlabel('Tiempo t (seg)');ylabel('x(t)');legend('h=2^-2','h=2^-4','h=2^-6','h=2^-8','h=2^-10','h=2^-12','Solucin verdadera');end

Haciendo zoom en la grfica se observa que para un paso pequeo la aproximacin es ms exacta para este sistema.

B) SOLUCIN POR EL MTODO TRAPEZOIDALSe usa exactamente el mismo cdigo de MatLab para graficar que en el mtodo de Heun mostrado anteriormente, donde t1 a t6 y x1 a x6 son las salidas del programa en ForTran, para respectivamente. Se observa que

Se puede observar que el mtodo de Heun es ms exacto en ste caso, ya que es un sistema no rgido y el mtodo de Heun tiene una mejor aproximacin de la pendiente.

EJERCICIO 3

A) SOLUCIN POR EL MTODO DE EULERCdigo usado para graficar en MatLab, donde t1 a t6 y x1 a x6 son las salidas del programa en ForTran, para respectivamente. El cdigo en ForTran del programa para el mtodo de Euler est al final de este documento (para ver cmo se introducen 2 variables de estado en el cdigo de ForTran). Si se requiere aadir otro valor de h se modifica la funcin en MatLab, aadiendo una x7, x8 y t7, t8 con sus etiquetas correspondientes.function euler_ejercicio3(t1,x1,t2,x2,t3,x3,t4,x4,t5,x5,t6,x6)%Grfica de la solucin numrica de x1(t) para h=0.05:plot(t1,x1,'-y')hold on%Grfica de la solucin numrica de x2(t) para h=0.05:plot(t2,x2,'-m')hold on%Grfica de la solucin numrica de x1(t) para h=0.005:plot(t3,x3,'-b')hold on%Grfica de la solucin numrica de x2(t) para h=0.005:plot(t4,x4,'-r')hold on%Grfica de la solucin numrica de x1(t) para h=0.0005:plot(t5,x5,'-g')hold on%Grfica de la solucin numrica de x2(t) para h=0.0005:plot(t6,x6,'-k')hold ontitle('Comparacin las soluciones usando del Mtodo de Euler para el ejercicio 3');xlabel('Tiempo t (seg)');ylabel('x(t)');legend('x1(t) para h=0.05','x2(t) para h=0.05','x1(t) para h=0.005','x2(t) para h=0.005','x1(t) para h=0.0005','x2(t) para h=0.0005');end

Se acerca el zoom para observar la aproximacin de cada solucin. Para x1(t) se tiene la grfica siguiente, como se puede ver, mientras sea menor el paso tiende a estabilizarse.

Para la solucin x2(t) se tiene

B) SOLUCIN POR EL MTODO TRAPEZOIDALSe usa un cdigo en MatLab similar al que se us en la solucin del mtodo de Euler. Y se obtienen las grficas siguientes:

Haciendo zoom en la solucin x1(t) se observa una mayor exactitud que en el mtodo de Euler

Mientras que para la solucin x2(t) se obtiene la misma exactitud que en la solucin x1(t)

C) SOLUCIN POR EL MTODO DE RUNGE KUTTA DE 4TO ORDENUsando la misma funcin para graficar en MatLab se obtiene la siguiente grfica.

Haciendo zoom en las grficas de x1(t) y x2(t) se observa que el mtodo de Runge Kutta es un poco menos preciso que el mtodo Trapezoidal, con resultados muy similares, pero mucho ms preciso que el mtodo de Euler para este tipo de sistema.

D) SOLUCIN POR EL MTODO DE GEAR DE 1ER ORDEN O EULER REGRESIVOUsando la misma funcin para graficar en MatLab se obtiene la siguiente figura.

Haciendo zoom en ambas soluciones se tiene que es menos preciso que el mtodo Trapezoidal y que el Runge Kutta de 4to orden, pero es mejor que el Euler explcito.

EJERCICIO 4

A) DETERMINAR h MXIMO CON EL MTODO DE GEAR DE 1ER ORDENLa siguiente grfica se obtuvo usando pasos de

Haciendo un zoom en la grfica se puede apreciar que tan estable es para los valores de h dados, se puede deducir que para h=0.01 tiene ms error en la aproximacin. Se selecciona el paso mximo como h=0.0002

B Y C) SOLUCIN CON EL MTODO DE EULER PARA 2hmax y hmax/2Claramente se aprecia en la grfica obtenida que para un valor mayor de la h mxima determinada por el mtodo de Gear en el inciso anterior el sistema de vuelve inestable, mientras que para valores menores a h mxima el sistema no presenta inestabilidad.

Haciendo un zoom en ambas grficas, se puede ver ms claramente esto. Para h=0.0004 se comporta de la forma siguiente

Y para h=0.0001 de sta otra forma:

CDIGO DE LOS MTODOS EN FORTRAN 90!****************************************************************************!! PROGRAMA: euler (Adams - Bashford 1er orden)!! OBJETIVO: Hallar el valor numrico aproximado para la solucin de una ! ecuacin diferencial de la forma y'=f(x,y)!!****************************************************************************

program datosimplicit none

double precision, dimension(100000) :: x,treal h,x0,df,t0,t1integer i,puntos

print *, '****************************************'print *, ' MTODO DE EULER 'print *, '****************************************'

print *, 'Tiempo inicial: 'read *, t0print *, 'Tiempo final:'read *, t1print *, 'Valor inicial de x(t): 'read *, x0print *, 'Valor de h: 'read *, h

10 format (T8, 't', T22 , 'x(t)' )20 format (T2, F10.6, T16, F10.6)

puntos = (t1 - t0)/hx(1) = x0t(1) = t0

do i=1,puntos call Yprima(x,i,df)call Euler(x,i,h,t,df)end do

open(7,FILE='EULER_log.TXT')write(7,10)do i=1,puntos+1write(7,20) t(i),x(i)end doclose(7)end program datos subroutine Yprima(x,i,df)double precision, dimension(100000) :: xdf = x(i)**2returnend subroutine

subroutine Euler(x,i,h,t,df)double precision, dimension(100000) :: x,tx(i+1) = x(i) + df*ht(i+1) = t(i) + hreturnend subroutine!****************************************************************************!! PROGRAMA: Trapezoidal (Adams - Moulton Implcito)!! OBJETIVO: Hallar el valor numrico aproximado para la solucin de una ! ecuacin diferencial de la forma y'=f(x,y)!!****************************************************************************

program trapezoidalimplicit none

double precision, dimension(100000) :: x,tdouble precision h,x0,df,t0,t1integer i,ciclos

print *, '****************************************'print *, ' METODO TRAPEZOIDAL 'print *, '****************************************'

print *, 'tiempo inicial: 'read *, t0print *, 'tiempo final:'read *, t1print *, 'valor inicial de x(t): 'read *, x0print *, 'valor de h: 'read *, h

10 format (t8, 't', t22 , 'x(t)' )20 format (t2, f10.6, t16, f12.6)

ciclos = (t1 - t0)/hx(1) = x0t(1) = t0

do i=1,ciclos call procesotrapecio(x,t,i,h)end do

open(7,file='trapecio_log.txt')write(7,10)do i=1,ciclos+1write(7,20) t(i),x(i)end doclose(7) end program trapezoidal

subroutine procesotrapecio(x,t,i,h)double precision, dimension(100000) :: x,tdouble precision alpha,xn,halpha=(x(i)**2)+(2/h)*x(i)

call newton(x,i,h,xn,alpha)

x(i+1) = xnt(i+1) = t(i) + hreturn end subroutine subroutine newton(x,i,h,xn,alpha)double precision, dimension(100000) :: xdouble precision xn,fx,dfx,alpha,hreal :: tol = 0.001integer :: nit = 100integer itit = 1xn = x(i) do fx = xn**2 - (2/h)*xn + alphadfx = 2*xn - (2/h)xn = xn - (1/dfx)*(fx)fx = xn**2 - (2/h)*xn + ((x(i)**2) + x(i)*(2/h))if(abs(fx)=nit)exitit = it + 1end doreturnend!****************************************************************************!! PROGRAMA: runge kutta de 4to orden!! OBJETIVO: hallar el valor numrico aproximado para la solucin de una ! ecuacin diferencial de la forma y'=f(x,y)!!****************************************************************************

program rungekutta

implicit none

double precision, dimension(100000) :: x,treal h,x0,t0,tfdouble precision k1,k2,k3,k4integer i,nc

print *, '****************************************'print *, ' METODO RUNGE KUTTA 4TO ORDEN 'print *, '****************************************'

print *, 'introduce el tiempo inicial: 'read *, t0print *, 'introduce el tiempo final: 'read *, tfprint *, 'introduce el valor inicial de x: 'read *, x0print *, 'introduce el valor del paso: 'read *, h

10 format (t8, 't', t22 , 'x'/ t6, 5('-'), t20, 5('-') /)20 format (t2, f12.6, t16, f12.6)

nc = (tf - t0)/hx(1) = x0t(1) = t0

do i=1,nccall yprima(x,i,h,k1,k2,k3,k4)call procesorungek(x,i,h,t,k1,k2,k3,k4)end do

open(7,file='kutta4_log.txt')write(7,10)do i=1,nc+1write(7,20) t(i),x(i)end doclose(7)end program

subroutine yprima(x,i,h,k1,k2,k3,k4)double precision, dimension(100000) :: xdouble precision k1,k2,k3,k4k1 = x(i)**2k2 = (x(i) + (h/2)*k1)**2k3 = (x(i) + (h/2)*k2)**2k4 = (x(i) + h*k3)**2returnend

subroutine procesorungek(x,i,h,t,k1,k2,k3,k4)double precision, dimension(100000) :: x,tdouble precision k1,k2,k3,k4x(i+1) = x(i) + (h/6)*(k1 + 2*k2 + 2*k3 + k4)t(i+1) = t(i) + hreturnend

!****************************************************************************!! PROGRAMA: Gear de 1er orden o Euler regresivo!! OBJETIVO: hallar el valor numrico aproximado para la solucin de una ! ecuacin diferencial de la forma y'=f(x,y)!!****************************************************************************program trapezoidalimplicit none

double precision, dimension(100000) :: x,tdouble precision h,x0,df,t0,t1integer i,ciclos

print *, '****************************************'print *, ' MTODO DE GEAR 'print *, '****************************************'

print *, 'tiempo inicial: 'read *, t0print *, 'tiempo final:'read *, t1print *, 'valor inicial de x(t): 'read *, x0print *, 'valor de h: 'read *, h

10 format (t8, 't', t22 , 'x(t)' )20 format (t2, f10.6, t16, f12.6)

ciclos = (t1 - t0)/hx(1) = x0t(1) = t0

do i=1,ciclos call procesotrapecio(x,t,i,h)end do

open(7,file='gear_log.txt')write(7,10)do i=1,ciclos+1write(7,20) t(i),x(i)end doclose(7) end program trapezoidal

subroutine procesotrapecio(x,t,i,h)double precision, dimension(100000) :: x,tdouble precision alpha,xn,halpha=(1/h)*x(i)

call newton(x,i,h,xn,alpha)

x(i+1) = xnt(i+1) = t(i) + hreturn end subroutine subroutine newton(x,i,h,xn,alpha)double precision, dimension(100000) :: xdouble precision xn,fx,dfx,alpha,hreal :: tol = 0.001integer :: nit = 100integer itit = 1xn = x(i) do fx = xn**2 - (1/h)*xn + alphadfx = 2*xn - (1/h)xn = xn - (1/dfx)*(fx)fx = xn**2 - (1/h)*xn + alphaif(abs(fx)=nit)exitit = it + 1end doreturnend

!****************************************************************************!! PROGRAMA: Heun!! OBJETIVO: hallar el valor numrico aproximado para la solucin de una ! ecuacin diferencial de la forma y'=f(x,y)!!****************************************************************************

program heun

implicit none

double precision, dimension(100000) :: x,t double precision yprima,k1,k2,aux real h,x0,df,t0,t1 integer i,ciclos

print *, '****************************************' print *, ' metodo de heun ' print *, '****************************************'

print *, 'tiempo inicial: ' read *, t0 print *, 'tiempo final:' read *, t1 print *, 'valor inicial de x(t): ' read *, x0 print *, 'valor de h: ' read *, h

10 format (t8, 't', t22 , 'x(t)' ) 20 format (t2, f10.6, t16, f10.6)

ciclos = (t1 - t0)/h x(1) = x0 t(1) = t0

do i=1,ciclos t(i+1) = t(i) + h k1=h*yprima(t(i),x(i)) aux=x(i)+k1 k2=h*yprima(t(i+1),aux) x(i+1) = x(i)+.5*(k1+k2) end do

open(7,file='heun_log.txt') write(7,10) do i=1,ciclos+1 write(7,20) t(i),x(i) end do close(7) end program heun

double precision function yprima(tt,xx) double precision tt,xx yprima=xx-tt**3+3*tt**2 return end function yprima

!****************************************************************************!! PROGRAM: Euler!! PURPOSE: Ejemplo para introducir datos cuando se tiene un sistema de 2 variables de estado.!!****************************************************************************program euler

implicit none

double precision, dimension(100000) :: x1,x2,treal h,x01,x02,df1,df2,t0,t1integer i,ciclos

print *, '****************************************'print *, ' METODO DE EULER 'print *, '****************************************'

print *, 'tiempo inicial: 'read *, t0print *, 'tiempo final:'read *, t1print *, 'valor inicial de x1(t): 'read *, x01print *, 'valor inicial de x2(t): 'read *, x02print *, 'valor de h: 'read *, h

10 format (t8, 't', t22 , 'x1(t)', t36, 'x2(t)')20 format (t2, f14.6, t16, f14.6, t30, f14.6)

ciclos = (t1 - t0)/hx1(1) = x01x2(1) = x02t(1) = t0

do i=1,ciclos call yprima(x1,x2,t,i,df1,df2)call procesoeuler(x1,x2,i,h,t,df1,df2)end do

open(7,file='euler_log.txt')write(7,10)do i=1,ciclos+1write(7,20) t(i),x1(i),x2(i)end doclose(7)end program euler subroutine yprima(x1,x2,t,i,df1,df2)double precision, dimension(100000) :: x1,x2,tdf1 = -2*x2(i)+2*t(i)**2df2 = .5*x1(i)+2*t(i)returnend subroutine

subroutine procesoeuler(x1,x2,i,h,t,df1,df2)double precision, dimension(100000) :: x1,x2,tt(i+1) = t(i) + hx1(i+1) = x1(i) + df1*hx2(i+1) = x2(i) + df2*hreturnend subroutineCONLCUSIONESComo pudo observarse en el transcurso del desarrollo de ste documento es que no siempre una aproximacin por un mtodo implcito para un sistema no rgido es la ms exacta, de ello depende de qu forma ste fragmentada la pendiente. Se puede concluir tambin que en los sistemas rgidos como es el caso del ejercicio 4, se deben hacer las pruebas suficientes para determinar su estabilidad, para encontrar el h mximo o los intervalos de tiempo, no siempre es recomendable hacerlo a prueba y error cmo se hizo en ste documento, se debe tener un conocimiento ms a fondo de esto, y se llega a que la rigidez de un sistema depende de los valores propios (modos), lo que probablemente se examine a ms detalle en trabajos posteriores.BIBLIOGRAFA

[1] Computer-Aided Analysis of Electronic Circuits, Algorithms and Computational Techniques, by Leon O. Ch. (1975).[2] Numerical Methods for Engineersby Steven Chapra and Raymond Canale(Jan 24, 2014).

[3] Introduction to Programming with Fortran: With Coverage of Fortran 90, 95, 2003, 2008 and 77 byian chivers andJane Sleightholme (Feb 9, 2012).

Seccin de Estudios de Posgrado e Investigacin2