/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

ayuda con generar el # ? con el metodo de mntekrlo

 
      Índice del Foro elrincondelc.com -> Dev-C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
kiara_luna



Registrado: 13 Ago 2011
Mensajes: 6

MensajePublicado: 13/08/2011 12:53 pm
Título: ayuda con generar el # ? con el metodo de mntekrlo

hola hice el siguiente programa para generar el numero pi de forma aleatoria, el funcionamiento que trate de hacer es como el de los dardos al tiro al blanco y entre mas dardos dentro del ciruclo más cerca del numero pi, pero no se si el procedimietno que aplique es el mismo de montecarlo o no, y si no lo es entonces como sería con dicho metodo, por otro lado cuando trato de hacerlo con cout y cin no funciona asi use #include <iostream.h> ó #include <iostream>
using std::cout;
using std::cin; ayuda!!!!
#include <stdio.h>
#include <conio.h>
otra pregunta puedo graficar este procedimiento con dev c++
void calculodepi(void);
main()
{
//textcolor(9);
printf("\n Este programa calcula pi \n\n\n");
char seleccion;
do{
fflush(stdin);/*borra las variables en la memoria*/
// textcolor(5);
printf("1.presionar c para comensar:\n");
printf("2.presionar s para salir:\n\n");
seleccion=getchar();

switch(seleccion){
case 'c':calculodepi(); /*llama a la funcion*/
break;
}
}
while(seleccion!='s');
}


void calculodepi(void) /*FUNCION REALISA EL CALCULO ITERATIVO*/
{
double pii=1,salida,errora; /*define las variables*/
int contador=1,numero;
char signoa=1;

//textcolor(6);
printf("ingresa el numero de iteraciones: ");
scanf("%d",&numero);
for (contador=1;contador<numero;contador++){ /*realiza el procedimiento iterativo*/

double incremento,suma;
incremento=(2*contador+1);

incremento=1/incremento;
incremento*=signoa;
suma=pii-incremento;
errora=sqrt(4*incremento*incremento);
pii=suma;
signoa*=(-1);
}

salida=4*pii;

FILE *archivo;/*guarda los datos en un txt*/
if (!(archivo=fopen("datos.txt","a"))) /* controlamos si se produce un error */
{
printf("Error al abrir el fichero");
exit(0); /* abandonamos el programa */
}
else
{
fprintf(archivo,"pi=%20.12Lf error=%e\n",salida,errora);
fclose(archivo);
}
//textcolor(2);
printf("pi vale %20.14Lf\n",salida);
printf("el error relativo es %e\n\n",errora);
getch();

}
_________________
kiara_luna
Volver arriba
kiara_luna



Registrado: 13 Ago 2011
Mensajes: 6

MensajePublicado: 29/08/2011 2:25 pm
Título: error en hallar media

hola ya fui capaz de hallar pi con el metodo montecarlo, el problema ahora es que no me esta hallando bien la media pues tiene que darme un valor igual o mayor a 3.0, y en la desviacion me esta dando muy alto ayuda...
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <conio.h>
#include <time.h>
int main()
{
int cantidad;
double x,y;
int i;
double z, contador=0;
double pi, media, suma, varianza, desviacion;

printf( "Cuantas iteracciones desea hacer: ");
scanf("%d",&cantidad);

srand(time(NULL));
for ( contador=0; contador<cantidad; contador++)
{
x = (double)rand()/RAND_MAX;
y = (double)rand()/RAND_MAX;
z = x*x+y*y;

if (z<=1)
{
contador++;
cantidad++;
pi=contador*4/cantidad;
suma = suma + pi;

if(pi>=3.0){

suma = suma + pi;
media = suma/(double)cantidad ;
varianza = ((suma - media)*(suma-media))/cantidad;
desviacion = sqrt(varianza); }
}
}

printf("pi es %lf\n", pi);
printf("La media es %lf\n", media);
printf("la varianza vale %20.14Lf\n",varianza);
printf("la desviacion vale %20.14Lf\n",desviacion);
getch();

}
_________________
kiara_luna
Volver arriba
      Índice del Foro elrincondelc.com -> Dev-C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com