il mio primo programma
…non scrive "Hello World! I’m here." ma per un semplice grafo a tre vertici con pesi bidirezionali sui rami a piacere calcola la distribuzione che rende stazionaria la ME, la sua entropa e produzione di entropia per unita’ di tempo, e consente di confrontare queste quantita’ con quelle di altre distribuzioni normalizzate, con l’obiettivo di capire se effettivamente (come sembra) la distribuzione stazionaria rende minima la produzione di entropia. Il prossimo passo e’ quello di rendere il confronto sistematico con un ciclo che spanni in maniera ragionata lo spazio di tutte le distribuzioni normalizzate (unico problema, devo decidere con quale criterio far variare i parametri liberi, che sono due). Poi si passera’ a circuiti piu’ complessi, grafi piu’ complessi etc. etc.
Eccone la prima parte (molto rudimentale).
#include <iostream.h>
#include <stdio.h>
#include <math.h>
int main()
{
float ab,ba,ac,ca,bc,cb;
float A,B,C;
float N;
float a,b,c;
cout <<"\nDATI\n\n";
printf("ab: ");
scanf("%f",& ab);
printf("ba: ");
scanf("%f",& ba);
printf("bc: ");
scanf("%f",& bc);
printf("cb: ");
scanf("%f",& cb);
printf("ca: ");
scanf("%f",& ca);
printf("ac: ");
scanf("%f",& ac);
cout <<"\nSTATO STAZIONARIO\n\n";
A = ab*ac + ac*cb + ab*bc;
B = bc*ba + bc*ca + ba*ac;
C = ca*cb + ca*ab + cb*ba;
N = A + B + C;
a = A/N;
b = B/N;
c = C/N;
printf("a: %f",a); printf("\n");
printf("b: %f",b); printf("\n");
printf("c: %f",c); printf("\n");
cout <<"\nENTROPIA\n\n";
float S,sigma;
float Fab,Fbc,Fca,Jab,Jbc,Jca;
S = - a*log(a) - b*log(b) - c*log(c);
Fab = log(ab*b/(ba*a));
Fbc = log(bc*c/(cb*b));
Fca = log(ca*a/(ac*c));
Jab = ab*b - ba*a;
Jbc = bc*c - cb*b;
Jca = ca*a - ac*c;
sigma = Fab*Jab + Fbc*Jbc + Fca*Jca;
printf("Entropia: S= %f",S); printf("\n");
printf("Produzione di entropia: sigma= %f",sigma); printf("\n\n");
}
