#include #include #include #include int k; double * tau; long int *binom; long int _binom(k, i) { if (i == 0) return 1; else return ((k-i+1)*_binom(k, i-1))/i; } double f(double x) { double y; int i; y = 0; for (i=0; i<=k; i++) { y += tau[i] * binom[i]*pow(x,i)*pow(1-x, k-i); } return y; } int main(int argc, char ** argv) { int i; double x, h; double J, W; srand48(time(NULL)); J = atof(argv[1]); W = atof(argv[2]); k=atoi(argv[3]);; tau = (double *) calloc(k+1, sizeof(double)); binom=(long int *) calloc(k+1, sizeof(long int)); /* precalcolo i coeff. binomiali */ for (i=0; i<=k; i++) { binom[i] = _binom(k,i); } /* calcolo le prob. di transizione */ for (i=0; i<=k; i++) { h = (double) (2*i-k)/k; tau[i] = 1/(1+exp(-2*(J*h + W*h*h*h))); } for (x=0; x<=1; x+=0.01) { printf("%f %f\n", x, f(x)); } }