/* Estilo de graficos */ estilo_graficos_1:"set xzeroaxis linetype -1 linewidth 1; set yzeroaxis linetype -1 linewidth 1; set xtics axis nomirror; set ytics axis nomirror; unset x2tics; set grid; unset border;"; /* Declaracion de variables */ f_x:x; declare(n,integer); N: read("Ingrese la cantidad N de armonicos a usar seguido de ; y luego enter. En cualquier momento puede ingresar quit(); para abortar la ejecucion"); R: read("Resistencia R"); L: read("Inductancia L"); T: read(" Periodo T"); t_max: T*read("Cantidad de periodos a graficar"); w0:2*%pi/T; /* lista de armonicos de n=1 hasta N */ wn:makelist(n*w0*t,n,1,N); b_n: 1/T*integrate(f_x*sin(n*w0*x),x,-T/2,T/2); V:b_n,n=makelist(n,n,1,N); v_t:apply("+",map(sin,wn)*V); Z:makelist(R+%i*n*w0*L,n,1,N); I:V/Z; mod_i:abs(I); arg_i:map(carg,I); arg_i_t:wn+arg_i; i_forzada:apply("+",mod_i*map(sin,arg_i_t)); i_0:i_forzada,t=0,numer; i_natural:(-i_0)*%e^(-R/L*t); i_TOTAL:i_natural+i_forzada; plot2d([v_t,10*i_forzada,10*i_TOTAL],[t,0,t_max], [gnuplot_preamble, estilo_graficos_1]); readonly(" Press ; to finish");