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 51 invités