C/Visual C - integrales en c

   
Vista:

integrales en c

Publicado por Xungala (1 intervención) el 02/02/2009 20:10:40
Hola buenas tardes ncesito ayuda con un codigo que casi tengo pero me he trabado en los limites de la integral nose como seguir, es a integral de la fucion de densidad de la normal, se puede hacer mediante el sumatorio de la funcion por la precision,la integral esta definida entre -infinito y el percentil buscado hasta ahi bien lo que no se es interpertar el -00. este es mi codigo como digo esta casi terminado me falta eso., si alguien me puede ayudar o decirme dnde puede encontrar una solucion lo agradecería muchiiiisimo

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int menu(int,double,double,double,double);
int mediafun(int *,int);
double desvfun(int ,int *,int );
double alphafun();
double precisionfun(double,int);
double normalfun(double,int,double,int,int *);

int main(int argc, char *argv[])
{
int media=0;
double desv=0;
double alpha=0;
double precision=0;
double normal=0;
int opcion=0;
int n=0;


menu(media,desv,alpha, precision,normal);


system("PAUSE");
return 0;
}

int menu(int media, double desv, double alpha, double precision,double normal){
int opc=0;
int *v=NULL;
int n=0;

do{
printf(" Percentiles de la distribucion normal ");
printf(" ************************************ ");
printf("1. Asignar media poblacional (%d) ",media);
printf("2. Asignar desviacion tipica poblacional (%f) ",desv);
printf("3. Asignar alpha (%f) ",alpha);
printf("4. Precision (%f) ",precision);
printf("5. Obtener el valor normal (%f) ",normal);
printf("---------------------------------- ");
printf("0. Salir del programa ");
printf("Introduzca la opcion deseada ");
scanf("%d",&opc);




switch(opc){

case 1:
printf("Usted ha elegido asignar la media poblacional ");
printf("Introduce el tamanio de la poblacion ");
scanf("%d",&n);
v=malloc(sizeof(int)* n);
media=mediafun(v,n);
printf("La media es....%d ",media);

break;
case 2:
printf("Usted ha elegido asignar la desviacion tipica poblacional ");
if(v==NULL) printf("No hay datos, vuelva a la opcion 1 e introduzca la poblacion ");
else desv=desvfun(media,v,n);
printf("La desviacion tipica poblacional es......%f ",desv);
break;
case 3:
printf("Usted ha elegido asignar alpha ");
alpha=alphafun();
printf("El alpha asignado es....%f ",alpha);
break;
case 4:
printf("Precision ");
precision=precisionfun(alpha,n);
printf("La precision es....%f ",precision);
break;
case 5:
printf("Usted ha elegido obtener el valor de la normal ");
normal=0.5+normalfun(precision,n,desv,media,v);
printf("Con los valores dados a la poblacion.... ");
printf("tenemos que el valor de la normal es... %f ",normal);
break;
};
}while(opc!=0);



}
int mediafun(int *v,int n){
int i=0;

int suma=0;
int media=0;

printf("ahora introduce los valores de la poblacion ");
for(i=0;i<n;i++){
scanf("%d",&v[i]);

suma+=v[i];
}
media=suma/n;
return media;
}
double desvfun(int media,int *v,int n){
double suma=0;
int i=0;
double var=0,desv=0;
for( i=0;i<n;i++){
suma+=(v[i]-media)*(v[i]-media);
}
var=suma/n;
desv=sqrt(var);
//desv=pow(var,0.5);
return desv;
}
double alphafun(){
float alpha=0.0;
printf("Introduzca el alpha a estudiar, dicho alpha ha de encontrarse entre 0 y 1 ");
scanf("%f",&alpha);
//printf("es...%f",alpha);
return alpha;
}
double precisionfun(double alpha,int n){
double precision=0;
int a=0;
if (alpha==0) printf("No has introducido un valor alpha ve a la opc. 3 ");
else precision=(alpha-a)/n;
return precision;
}
double normalfun(double precision,int n,double desv,int media,int *v){
int i=0;
double r;
const pi=3.141592;
double a=0.0;

a=1/desv*sqrt(2*pi);

//printf("p%f....a%f.....b%f..........n%d",precision,a,b,n);

for(i=1;i<=n;i++){
r+=exp((pow((v[i]-media)/desv,2)));
printf("%f ",r);
r=a*r*precision*exp(-0.5);

}

return r;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:integrales en c

Publicado por AntonioG (42 intervenciones) el 05/02/2009 05:32:19
Hola,

Lo que uno sabe es que casi todo el soporte de la distribucion normal est'a dentro de -4*sigma a 4*sigma. Entocnes, cuando veas un -infinito, evalua desde -4*sigma. Lo mismo cuando tengas que evaluar hasta infinito, solo llega hasta 4*sigma.

Saludos
Blog de C: http://familiaytu.com/blog/
Foro de ayuda en C: http://familiaytu.com/foroC/viewforum.php?f=16
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Hi forum, cool weather and good mood!!.

Publicado por Milioriking (1 intervención) el 28/09/2010 00:59:53
Hi forum, cool weather and good mood. life is a good thing however turn
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar