#-----------------------------------------
# forme d'onda circuito RC 
#
#  GdA maggio 2011
#-----------------------------------------

Vc <- function(nu, nut, V0, t) {
  return( V0/sqrt(1+(nu/nut)^2 ) * cos( t*2*pi*nu - atan(nu/nut) ) )
}
Vr <- function(nu, nut, V0, t) {
  return( V0/sqrt(1+(nu/nut)^(-2) ) * cos( t*2*pi*nu - atan(nu/nut) + pi/2) ) 
}


r0 = 50    # Ohm
r  = 10000 # Ohm
c  = 10e-9 # Farad
V0 = 1     # Volt

Deltat.su.T = 3 # finestra temporale da guardare
nut = 1/(2*pi*r*c)

while (1) {
  # loop infinito, finche'  nusunut > 0
  cat ("\n >> dai valore frequenza in unità di frequenza di taglio ( < 0 per terminare )\n")
  nur = scan("",nmax=1)
  if (nur < 0) break
  nu = nur*nut
  T <- 1/nu
  t <- seq(0, T*Deltat.su.T, len=500)
  titolo = sprintf("%.0f Hz  (T = %.2e s)", nu, T)
  plot (t, V0*cos(t*2*pi*nu), ty='l', xlab='t (s)', ylab='V (V)', main=titolo)
  points(t, Vc(nu, nut, V0, t), ty='l', col='red')
  points(t, Vr(nu, nut, V0, t), ty='l', col='blue')       
}
