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

Generation d'une matrice de transition d'une chaine de Markov

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

 

Retourner vers ✯✎ Supérieur

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 19 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite