Ejercicio de R solucionado!!

Tras nuestra primera clase de R, Óscar nos propuso realizar un ejercicio en el cual debíamos calcular la declinación, la hora del amanecer y, finalmente, la irradiación extra-atmosférica diaria en el plano horizontal. Para ello disponemos de dos datos: el día del año y la latitud.

A continuación mostramos las dos posibles soluciones al ejercicio propuesto que hemos hecho Álvaro Bueno, Alfonso Medal y yo.

Esta es nuestra solución inicial, en la cual realizamos por separado cada función, anidándolas posteriormente.

 declinacion=function(dn)23.45*sin(2*pi*(dn+284)/365)    ##     declinacion en grados

 amanecer=function(dn,fi)-acos(-tan(declinacion(dn)*2*pi/360)*tan(fi*2*pi/360))*360/(2*pi)    ##amanecer en grados

 excentricidad=function(dn)1+0.033*cos(2*pi*dn/365)

 radext=function(dn,fi)-24/pi*1367*excentricidad(dn)*(amanecer(dn,fi)*(2*pi/360)*sin(fi*2*pi/360)*sin(declinacion(dn)*2*pi/360)+cos(declinacion(dn)*2*pi/360)*cos(fi*2*pi/360)*sin(amanecer(dn,fi)*(2*pi/360)))

 ## dentro de la funcion radext convertimos a radianes lo que esta en grados

 ejercicio=function(dn,fi){c(declinacion(dn),amanecer(dn,fi),radext(dn,fi))}             

 ejercicio=function(dn,fi){

 data.frame(decl=declinacion(dn),

            aman=amanecer(dn,fi),

            Bo0=radext(dn,fi))

}

ejercicio(240,40)

## Si, en lugar de para el día 240 del año, queremos saber el resultado para todos los días del año, entonces pondremos:

ejercicio(1:365, 40)

 Comentamos esta primera solución con Óscar, y nos recomendó esta solución alternativa, más simplificada, que incluimos a continuación.

d2r <- function(x) pi*x/180 ## de grados a radianes

r2d <- function(x) x*180/pi ## de radianes a grados

 declinacion=function(dn)23.45*sin(2*pi*(dn+284)/365)    ##declinacion en grados

amanecer=function(dn,fi){

 decl=d2r(declinacion(dn))

 lat=d2r(fi)

 ws=-acos(-tan(decl)*tan(lat))

 r2d(ws)     ##amanecer en grados

 }

excentricidad=function(dn)1+0.033*cos(2*pi*dn/365)

radext=function(dn,fi){

 decl=d2r(declinacion(dn))

 eo=excentricidad(dn)

 ws=d2r(amanecer(dn, fi))

 lat=d2r(fi)

 -24/pi*1367*eo*(ws*sin(lat)*sin(decl)+cos(decl)*cos(lat)*sin(ws))

 }

ejercicio=function(dn,fi){

 data.frame(decl=declinacion(dn),

            aman=amanecer(dn,fi),

            Bo0=radext(dn,fi))

}

ejercicio(240,40)

ejercicio(1:365, 40)


Suscribirse a comentarios Respuestas cerradas. |

Comentarios cerrados.


Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies