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;
}
#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


0