Generation d'une matrice de transition d'une chaine de Markov
Réponses à toutes vos questions après le Bac (Fac, Prépa, etc.)
-
fusp
- Membre Naturel
- Messages: 20
- Enregistré le: 15 Mai 2008, 20:20
-
par fusp » 30 Déc 2008, 21:00
Bonsoir tout le monde,je voudrai savoir comment on peut generer une matrice pseudo-stochastique (je ne sais pas si ça se dit),bref une matrice de transition d'une chaine de markov,merci
-
Mika44
- Membre Naturel
- Messages: 14
- Enregistré le: 01 Jan 2008, 19:42
-
par Mika44 » 30 Déc 2008, 21:10
Qu'est ce que tu entends par générer ??
la matrice de transition d'une CM : P = (pi,j(1))i,j;)E
avec pi,j(1) la proba de passer de l'état i à j en une étape.
-
fusp
- Membre Naturel
- Messages: 20
- Enregistré le: 15 Mai 2008, 20:20
-
par fusp » 30 Déc 2008, 21:17
oui c'est ça,je veux generer les probabilités de transition et par consequent la matrice (la generation se fait par ordinateur biensur)
-
Mika44
- Membre Naturel
- Messages: 14
- Enregistré le: 01 Jan 2008, 19:42
-
par Mika44 » 30 Déc 2008, 21:32
Tu as eu la réponse que tu voulais ?
J'ai toujours pas compris si tu demandes comment générer les probas ou comment écrire les probas dans une matrice.
-
fusp
- Membre Naturel
- Messages: 20
- Enregistré le: 15 Mai 2008, 20:20
-
par fusp » 30 Déc 2008, 21:37
non pas encore,en fait je veux ecrire un programme en C par exemple qui me genere les p(i,j),par exemple je lui donne l'ordre de la matrice de transition et lui il me revoie les elts de la matrice c.à.d les p(i,j).
-
Mika44
- Membre Naturel
- Messages: 14
- Enregistré le: 01 Jan 2008, 19:42
-
par Mika44 » 30 Déc 2008, 21:52
Ok, je ferais un tableau de tableau. Dont la somme de chaque ligne égale 1 :
const float MAX = 1.0, MIN = 0.0;
float tab [n][n];
int i,j;
for (i=0; i for (j=0; j tab[i][j]=0.0;
}
}
for (i=0; i while (sommeLigne(j)<=1) { // sommeLigne à définir, calcul la somme des pi,j d'une ligne
srand(time(NULL));
tab[i][j] = (rand() % (MAX - MIN + 1)) + MIN;
}
}
-
fusp
- Membre Naturel
- Messages: 20
- Enregistré le: 15 Mai 2008, 20:20
-
par fusp » 30 Déc 2008, 21:57
merci,mais je voudrai juste savoir si l'algorithme ne risque pas de diverger dans ce cas ??
-
Mika44
- Membre Naturel
- Messages: 14
- Enregistré le: 01 Jan 2008, 19:42
-
par Mika44 » 30 Déc 2008, 22:07
Je viens d'éditer l'algo,
le problème qui reste est que la somme dépasse à chaque fois 1 car on ajoute une fois de trop.
Il faudrait détecter dès que ça dépasse 1 et annuler le dernier ajout dans la 2ème boucle.
On pourrait ajouter un test qui dès qu'on fait un annulement d'ajout, regarde l'écart par rapport à 1 et l'ajoute.
Sinon là c'est pas super aléatoire comme génération (tes pi,j situés à droite de la matrice seront toujours égaux à 0).
Peut-être un truc à bidouiller pour que ça soit plus aléatoire (du genre générer un autre entier aléatoire entre 0 et n-1 qui définit le numéro de la colonne de la pi,j).
-
fusp
- Membre Naturel
- Messages: 20
- Enregistré le: 15 Mai 2008, 20:20
-
par fusp » 30 Déc 2008, 22:24
oui vraiment c'est le probleme que j'ai,j'arrive pas a faire en sorte que ça soit equidistribué, merci et bonne soirée a vous Mika44
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 19 invités