Exemplo n.º 1
0
void random1()
{
	drndset(time(NULL));
	fp = fopen(filename, "w");
	if (fp == NULL) exit(EXIT_FAILURE);
	puts("Generating");
	float rsc = (3 * PI) / 16;
	int i;
	float m, x, y, z;
	float sq;
	for (i = 0; i < count; i++) {
		printf("%d\n", i);
		//m = drnd()*1.0;
		m = 1.0 / count;
		float r = 1.0 / sqrt(pow(drnd()*0.999, -2.0 / 3.0) - 1);
		do {
			x = drnd()*2.0 - 1.0;
			y = drnd()*2.0 - 1.0;
			z = drnd()*2.0 - 1.0;
			sq = x * x + y * y + z * z;
		} while (sq > 1.0);
		float scale = rsc * r / sqrt(sq);
		x = x * scale;
		x = y * scale;
		x = z * scale;
		fprintf(fp, "%lf %lf %lf %lf\n", x, y, z, m);
	}
	fclose(fp);
}
Exemplo n.º 2
0
double norm(void){
  static int s=0;
  static double r,th;
  if(s==0){
    r=sqrt(-2*log(drnd()));th=2*PI*drnd();
    s=1;
    return r*cos(th);
  }
  s=0;
  return r*sin(th);
}
Exemplo n.º 3
0
void initialize(int N, Ising **S)
{
		int i,j;

		for(i=0; i<N; i++)
				for(j=0; j<N; j++)
				{
						if(drnd() < 0.5)
								S[i][j].spin=1;
						else
								S[i][j].spin=-1;
				}

		for(i=0; i<N; i++)
				for(j=0; j<N; j++)
				{
						S[i][j].up=i-1;
						S[i][j].down=i+1;
						S[i][j].left=j-1;
						S[i][j].right=j+1;
				}

		for(j=0; j<N; j++)
		{
				S[0][j].up=N-1;
				S[N-1][j].down=0;
		}

		for(i=0; i<N; i++)
		{
				S[i][0].left=N-1;
				S[i][N-1].right=0;
		}
}
Exemplo n.º 4
0
void initwo(double wo[HIDDENNO+1])
{
 int i ;/*繰り返しの制御*/

 /*乱数による重みの決定*/
 for(i=0;i<HIDDENNO+1;++i)
   wo[i]=drnd() ;
} 
Exemplo n.º 5
0
void initwh(double wh[HIDDENNO][INPUTNO+1])
{
 int i,j ;/*繰り返しの制御*/

 /*乱数による重みの決定*/ 
 for(i=0;i<HIDDENNO;++i)
  for(j=0;j<INPUTNO+1;++j)
   wh[i][j]=drnd() ;
} 
Exemplo n.º 6
0
void mcstep(int N, double T, Ising **S)
{
		int i,j,k;
		double E_flip;
		double E1, E2;

		for(k=0; k<N*N; k++)
		{
				i=(int)(drnd()*N);
				j=(int)(drnd()*N);
				E1=-S[i][j].spin * (S[ S[i][j].up ][j].spin + S[ S[i][j].down ][j].spin + S[i][ S[i][j].left ].spin + S[i][ S[i][j].right ].spin );
				E2=-(-S[i][j].spin) * (S[ S[i][j].up ][j].spin + S[ S[i][j].down ][j].spin + S[i][ S[i][j].left ].spin + S[i][ S[i][j].right ].spin );

				E_flip=E2-E1;

				if(E_flip<0 || drnd() < exp(-E_flip/T))
						S[i][j].spin=-S[i][j].spin;
		}
}
Exemplo n.º 7
0
int getpois(double la){
  int i;
  double x,y;
  if(la>500){
    //printf("%g ",la);fflush(stdout);
    i=floor(norm()*sqrt(la)+la+.5);if(i<0)i=0;
    return i;
  }
  x=drnd()-1e-10;
  y=exp(-la);
  i=0;while(1){
    x-=y;if(x<0)return i;
    i++;
    y*=la/i;
  }
}
Exemplo n.º 8
0
int semi(int t0,int t1){
  int i,s0,s1,x0,x1;
  double la,mu;
  getsc(&s1,&s0,t1,t0);// Two legs. Lower placed team is home first
  getsc(&x0,&x1,t0,t1);// (which affects silver goal)
  s0+=x0;s1+=x1;
  if(s0>s1)return t0;
  if(s0<s1)return t1;
  la=fn(al[t0]-be[t1]+hh[0])*15/90.;// Silver goal : two periods of 15 minutes
  mu=fn(al[t1]-be[t0]-hh[1])*15/90.;
  for(i=0;i<2;i++){
    s0=getpois(la);s1=getpois(mu);
    if(s0>s1)return t0;
    if(s0<s1)return t1;
  }
  // Still tied - penalty shoot out. Assume random.
  if(drnd()<.5)return t0; else return t1;
}
Exemplo n.º 9
0
int main()
{
	// Declaraciones 
	FILE *dptr;    
	int i,j,k,m,n,z,P,flag1,flag2,pos,KM,KI,I0,Ic,conc;
	int estado[N][2]={0},sg[SS]={0},sort[N];
	double fase[N][2]={0.0},v[VECES]={0.0},vprom[SS-1]={0.0},mm[SS-1]={0.0};
	double a,b,p1d,p2,pinh=0.0,pinh1=0.0,pinh2=0.0,sum,phic,smax,vtop=0;
        double fase_ins,fase_ini,fase_outs,fase_outi,kmapp,pmolar,trec,vmax,s;

	if((dptr=fopen("mminc.dat","w"))==NULL)
	   printf("\nEl archivo de salida no puede ser abierto\n");

        rand_init();

        a=0.1;
        p2=0.999999;

        // PESOS MOLARES: en Daltons
        pmolar = 60000.;

	// Fraccion del tiempo de procesamiento
        trec = 0.01;		

	// Calcula velocidad para una sola enzima
        vmax=VMAX*1.e-3*pmolar/60.0;		
   
        // Calcula los parametros "b" y "phic"
        b=a/(vmax*DT)-3.0*a;
        printf("\nEl numero de iteraciones para la r. dir. es %f, el No. de ciclos/iteracion es %lf",(b/a)+3,(double)TOPE/((b/a)+3)); 
        phic=1.0+b;

        // Afinidad por el sustrato
        KM=(int)Km*NA*VSIM/1.e6;	

	// Afinidad por el inhibidor
        KI=(int)Ki*NA*VSIM/1.e6;

	// Concentracion de inhibidor
        I0=I*NA*VSIM/1.e6;	

        // Parametros de la enzima
        smax=(double)KM/vmax;

        printf("\nsmax = %f, b = %f",smax,b);

        // Inicializa vector de recorrido de las enzimas
        for(j=0;j<N;j++)
           sort[j]=j;

	// Ciclo de las enzimas 
	for(conc=1;conc<SS;conc++)
	{
           sg[conc-1]=conc;  			// Guarda valores de concentracion de sustrato
           s=(double)conc*NA*VSIM/1.e6;	

           p1d=DT*s/smax;		// Define probabilidad reaccion directa

           for(k=0;k<VECES;k++)
              v[k]=0.0; 

           for(n=0;n<VECES;n++)
           {
	      // Inicializacion: 
              // Las enzimas arrancan en la region caotica 	
              rand_init(); 
	      for(i=0;i<N;i++)
              {
	         fase[i][0]=drand48();
	         fase[i][1]=drand48();
              }

              // Las enzimas estan en reposo
	      for(i=0;i<N;i++)
              {
	         estado[i][0]=0;
	         estado[i][1]=1;
              } 

              P=0;  
              Ic=I0;
              for(z=0;z<TOPE;z++)
              {
                 // Baraja vector de recorrido de las enzimas
                 if(z==0)
                 {
                    for(k=0;k<10;k++)
                    {   
                       for(j=0;j<N;j++)
                       {
                          pos=drnd(N); 
                          i=sort[pos];
                          sort[pos]=sort[j];
                          sort[j]=i;
                       }
                    }        
                 }
                 else if(z%20==0)
                 {
                    for(j=0;j<N;j++)
                    {
                       pos=drnd(N); 
                       i=sort[pos];
                       sort[pos]=sort[j];
                       sort[j]=i;
                   }
                 }

	         // Actualizacion de las fases de las enzimas
	         for(k=0;k<N;k++)  
	         {	
                    pos=sort[k];
 
                    // Actualiza fase para sustrato
                    if((estado[pos][0]==0)||(estado[pos][0]==1)||(estado[pos][0]==-1))	// No hay inhibidor adherido
                    { 
                       flag1=0;
                       flag2=0;
                       fase_ins=fase[pos][0];
                       while(flag1==0)			// Toma en cuenta puntos fijos
                       {  
                          while(flag2==0)
                          { 
                             if(fase_ins==0.5)
                                fase_ins=drand48();
                             else if(fase_ins!=0.5)
                                flag2=1;
                          }  
                          fase_outs=enzima47(fase_ins,a,b,p1d,p2);
                          if(fase_outs!=fase_ins)
                             flag1=1;
                          else
                             fase_ins=drand48();
                       }    
                       fase[pos][0]=fase_outs; 
                    } 

                    // Actualiza fase para inhibidor
                    if((I0!=0)&(Ic>=0))			// Hay inhibidor...
                    {  
                       pinh1=(double)Ic*vmax/(10*KI);	// Probabilidad de entrada del inhibidor
                       pinh2=(double)Ic*vmax/230;  	// Probabilidad de salida del inhibidor

                       if(estado[pos][1]==1)		// El inhibidor entra
                          pinh=pinh1;
                       if(estado[pos][1]==-1)		// El inhibidor sale
                          pinh=pinh2;

                       flag1=0;
                       flag2=0;
                       fase_ini=fase[pos][1];
                       while(flag1==0)			// Toma en cuenta puntos fijos
                       {  
                          while(flag2==0)
                          { 
                             if(fase_ini==0.5)
                                fase_ini=drand48();
                             else if(fase_ini!=0.5)
                                flag2=1;
                          }  
  	                  fase_outi=enzima47(fase_ini,a,b,pinh,p2);
                          if(fase_outi!=fase_ini)
                             flag1=1;
                          else
                             fase_ini=drand48();
                       }
                       fase[pos][1]=fase_outi; 
                    }

                    // Actualiza concentraciones

                    // Formacion de complejo ES: el sustrato entra primero y pasa a region laminar
                    if((estado[pos][0]==0)&(estado[pos][1]==1)&(fase_outs>1)&(fase_ins<=1))	
                       estado[pos][0]=1;

                    // Formacion de complejo ESI inactivo a partir de complejo ES
                    if((estado[pos][0]==1)&(estado[pos][1]==1)&(fase_outi>1)&(fase_ini<=1)&(Ic>0)) 
                    {
                       estado[pos][0]=11;		// Detiene avance de la enzima
                       estado[pos][1]=-1;		// Inhibidor entra
                       fase[pos][1]=drand48();
                       fase_outi=0.0;
                       fase_ini=0.0;
                       Ic--;  
                    }

                    // Formacion de complejo ES a partir de complejo ESI
                    if((estado[pos][0]==11)&(estado[pos][1]==-1)&(fase_outi>1)&(fase_ini<=1))
                    {
                       estado[pos][0]=1;		// Reanuda avance de la enzima
                       estado[pos][1]=1;		// Inhibidor salio
                       fase[pos][1]=drand48();
                       fase_outi=0.0;
                       fase_ini=0.0;
                       Ic++; 
                    }

                    // Complejo ES libera producto
                    if((estado[pos][0]==1)&(estado[pos][1]==1)&(fase_outs>phic))  
                    {
                       estado[pos][0]=-1;		// Enzima queda en recuperacion
                       P++;
                    }

                    // Enzima completa ciclo y queda en reposo
                    if((estado[pos][0]==-1)&(fabs(fase_outs-fase_ins)>=phic)) 
                       estado[pos][0]=0;

                    // Formacion de complejo EI: el inhibidor entro primero
                    if((estado[pos][0]==0)&(estado[pos][1]==1)&(fase_outi>1)&(fase_ini<=1)&(Ic>0))	
                    {
                       estado[pos][0]=10; 		// Detiene avance de la enzima
                       estado[pos][1]=-1;		// Inhibidor sale
                       fase[pos][1]=drand48();
                       fase_outi=0.0;
                       fase_ini=0.0;
                       Ic--;
                    }

                    // Complejo EI libera inhibidor
                    if((estado[pos][0]==10)&(estado[pos][1]==-1)&(fase_outi>1)&(fase_ini<=1))
                    {
                       estado[pos][0]=0;
                       estado[pos][1]=1;
                       fase[pos][1]=drand48();  
                       fase_outi=0.0;
                       fase_ini=0.0;
                       Ic++;
                    }   

                    // Formacion de complejo EI a partir de complejo EIS
                    //if((estado[pos][0]==11)&(estado[pos][1]==-1)&(fase_outs>1)&(fase_ins<=1))	
                    //   estado[pos][0]=11; 

                 }
              }  
              v[n]=(double)P*1.e6*60./(NA*VSIM*DT*TOPE);
           }  
           sum=0.0;
           for(k=0;k<VECES;k++)
              sum+=v[k];

           vprom[conc-1]=sum/(double)VECES; 

           printf("\nEl valor de la concentracion es %d",conc);
           
	}

        for(k=0;k<SS-1;k++)
           mm[k]=VMAX*(N*pmolar*1.e3/(NA*VSIM))*sg[k]/(Km+sg[k]); 

        for(k=0;k<SS-1;k++)
	   fprintf(dptr,"%d \t %f \t %f \n",sg[k],vprom[k],mm[k]);

        for(k=0;k<SS-1;k++)
        {
           if(vprom[k]>vtop)
              vtop=vprom[k];  
        }

        printf("\nVmax es %lf, Vmax/2 es %lf",vtop,vtop/2);

	fclose(dptr);
	return(0);
}
Exemplo n.º 10
0
/*** Return random number between -1.0 and 1.0 ***/
float dpn1()
{
  return ((drnd() * 2.0) - 1.0);
}
Exemplo n.º 11
0
/*** Return random number between -1.0 and 1.0 ***/
double dpn1()
{
  return ((drnd() * 2.0) - 1.0);
}