Comme je m'ennuyais, j'ai vérifié le théorème stationnaire regrading la matrice de transition d'une chaîne MARKOV. Donc, je définissais un simple, .: par exempleInexact puissance de la matrice dans MATLAB
>> T=[0.5 0.5 0; 0.5 0 0.5; 0.2 0.4 0.4];
Le théorème stationnaire dit, si vous calculez le transitionmatrix à une puissance très élevée, alors vous aurez à la matrice fixe avec ses principaux composants aux lignes. Essayons donc:
>> T^1000
ans =
0.4211 0.3158 0.2632
0.4211 0.3158 0.2632
0.4211 0.3158 0.2632
Tout va bien jusqu'ici. Continuons:
>> T^1000000000
ans =
0.4211 0.3158 0.2632
0.4211 0.3158 0.2632
0.4211 0.3158 0.2632
OK .... très bien. Prenons juste un zéro de plus:
>> T^10000000000
ans =
0.4210 0.3158 0.2632
0.4210 0.3158 0.2632
0.4210 0.3158 0.2632
??? Quelque chose a changé .... Essayons plus:
>> T^10000000000000000
ans =
1.0e-03 *
0.5387 0.4040 0.3367
0.5387 0.4040 0.3367
0.5387 0.4040 0.3367
Ce qui se passe ici, même la somme des lignes n'est plus 1
>> T^10000000000000000000
ans =
0 0 0
0 0 0
0 0 0
Aaaand il est parti.
J'ai essayé ceci avec R2011a. Je suppose qu'il y a un algorithme de fantaisie dans le backround, qui se rapproche de cette puissance élevée des matrices. Mais comment cela peut-il arriver? Quel algorithme effectue aussi vite sur de tels calculs, et fait que ce genre de manque se comporte dans des situations extrêmes comme celle-ci?
Il devrait et en raison de l'arithmétique en virgule flottante de précision dans les systèmes binaires. En d'autres termes, vous ne pouvez pas représenter précisément un nombre décimal avec une quantité finie de bits. Un exemple: '0.3-0.2-0.1' n'est pas exactement 0. – Oleg
Élever n'importe quoi impliquant des nombres à virgule flottante à une telle puissance est numériquement fou. Vous n'avez pas affaire à des calculs symboliques. –
Peut-être n'est-il pas surprenant étant donné l'ampleur de votre matrice 'T',' 1/10000000000000000' (l'inverse de la puissance où les choses vont vraiment mal) est d'environ 'eps'. Selon l'aide (R2012b) pour 'Z = X^y'" Si 'y' est un nombre entier supérieur à un, la puissance est calculée par équarrissage répété." Je pense que cela n'est vrai que jusqu'à une puissance de 'y = 2^30' et ensuite un autre schéma est utilisé, peut-être une décomposition des valeurs propres. – horchler