Hola buenas os .comento:
Mi funcion para calcular la varianza es asi:
double calcularDesviacion (int serie[])
{
double sumatorio;
double promedio;
double desviacion;
int t;
sumatorio=0;
t=0;
do
{
sumatorio=sumatorio+serie[t];
t++;
}while (t<MAXTIRADAS);
promedio=(1.0*sumatorio)/MAXTIRADAS;
desviacion=sqrt(sumatorio*1.0/MAXTIRADAS-pow(promedio,2));
return desviacion;
}
Esta metida dentro de un codigo principal pero no me da ningun error al compilar.
El problema es que no me da resultado. En mi programa aparece: "La desviacion tipica de la serie de numeros es -1.#IO"
Sabeis que es eso y por que aparece?
Muchas gracias de antemano.
P.D: Estoy empezando en este mundo asi que espero que no os metais mucho conmigo.
1 * X = X, luego (1.0*sumatorio) = sumatorio. No hace falta complicar las ecuaciones de forma gratuita.
Si el promedio se calcula como media(x)=sum(xi)/N, la desviación se calcula como sum( (xi-media(x))?2 ). En tu caso, tu cálculo es "media(x)-media(x)^2".
Lo siento pero no entiendo lo que me dices.
Cual es la formula exacta de la varianza? Es que por mas que la busco e intento aplicarla no me sale.
varianza (wikipedia) (http://es.wikipedia.org/wiki/Varianza)
N -> Número de muestras
media(x) = sum( x[ i ] ) / N
varianza2 = sum( pow(x[ i ] - media(x), 2) ) / N = sum( pow( x[ i ], 2 ) ) / N - pow( media(x), 2 )
varianza = sqrt( varianza2 )
double calcularDesviacion (int serie[])
{
double sumatorio = 0;
double sumatorio2 = 0;
double promedio = 0;
double desviacion = 0;
int t;
for ( t=0; t < MAXTIRADAS; t++ )
{
sumatorio += serie[ t ];
sumatorio2 += pow( serie[ t ], 2 );
}
promedio = sumatorio / MAXTIRADAS;
double desviacion2 = sumatorio2 / MAXTIRADAS - pow( promedio, 2 );
desviacion = sqrt( desviacion2 );
return desviacion;
}
EDITO: He corregido la ecuación. Espero que no tenga más fallos
Muchisimas gracias de verdad!!
No he copiado tu codigo porque hay cosas que aun no hago asi o no entiendo, pero me ha servido para aclararme y ver que hacia mal.
Otra vez mas: MUCHAS GRACIAS
de nada hombre.
suerte con tu proyecto :)