<< maxpluslinsol MaxPlusAndPetrinet maxplusmaxalgolgeneral >>

MaxPlusAndPetrinet >> MaxPlusAndPetrinet > maxplusmaxalgol

maxplusmaxalgol

Max-plus algebra eigenvalue and eigenvector

Calling Sequence

[l,v,d] = maxplusmaxalgol(A)

Parameters

A
: a square input matrix.
l
: an eigenvalue of the matrix A.
v
: a corresponding eigenvector of the matrix A .
d

: a positve integer number that represents the period of vectors

x(q),x(q+1),⋯,x(p-1),x(p), where d = p-q and x(p) = l⊗x(q).

Description

The function valid for both an irreducible and a reducible matrix A as long as the cycle time vector of matrix A contains all elements equal to the same constant, and returns eigenvector and a unique corresponding eigenvalue of matrix A. If the condition is not satisfied the function returns error. And if numerical error this function maxplusmaxalgol still work but A⊗v≠l⊗v and the norm of A⊗v - l⊗v given by norm(A⊗x - l⊗v)≤4.019D-14 .

For details see: Subiono and J.van der Woude (2000); "Power algorithms for (max,+)- and bipartite (min,max,+)-systems"; DEDS, vol.10, pp.369-389, 2000.

If the matrix A irreducible, instead of use function maxalgol, the time computation will more faster.

Examples

A =[-%inf  3. -%inf -%inf 7. -%inf;
       2. -%inf 6. -%inf 7. 2.;
       -%inf 7. 8. 9. -%inf -%inf;
       -%inf -%inf -%inf 1. 2. -%inf;
       8. -%inf 7. -%inf -%inf 2.;
       0. -%inf -%inf 6. 5. -%inf];
// check strognly connected (irreducible) of A
s=maxplusscg(A)
[l,v,d] = maxplusmaxalgol(A)
// check v is the eigenvector of A with corresponding eigenvalue l
 z  = maxplusisegv(A,v,l) 
// or we can check as follows 
isequal(maxplusotimes(A,v),maxplusotimes(l,v))
// instead of we can use maxalgol
[l,v,d] = maxalgol(A)
// Example reducible matrix
A=[7 -%inf;0 3]
// Check matrix A is not irreducible
 s=maxplusscg(A)
[l,v,d] = maxplusmaxalgol(A)
// check v is the eigenvector of A with the eigenvalue l
z = maxplusisegv(A,v,l)
// Example reducible matrix but the cycle time vector at least contain two
// difference elements, and returns an error massage.
A=[8 -%inf;0 11]
// check cycle time vector of matix A and, run maxplusmaxalgol
s=maxplusctv(A)
// the cycle time vector contains difference elements 
[l,v,d]=maxplusmaxalgol(A)
//  An example if numerical error exists                    
A = [12. -%inf -%inf  19. 13.  5.  15. -%inf -%inf -%inf;   
     11.  10.   16.    9. -%inf  13.  6.  8.  5. 18.;  
     -%inf  8. -%inf -%inf  19. -%inf  8. -%inf  4. -%inf;   
     17. -%inf  16. -%inf  -%inf  5. -%inf 17. 16. 19.;  
     -%inf -%inf 4. -%inf  8. -%inf  20. -%inf  16. 14.;  
     6.  2. 7. -%inf -%inf -%inf -%inf -%inf 10. 19.;  
     -%inf 1. -%inf -%inf 9. -%inf 14. 5. -%inf 1.;   
     19. -%inf 9. 19. 4. 20. 18. 10. 16. 11.;  
     5. -%inf 13. 15. -%inf -%inf -%inf 20. 3. -%inf;   
     18.  15. -%inf -%inf 7. -%inf 13. 9. 15. 6.];
[l,v,d]=maxplusmaxalgol(A)
// this means that, the maxplusmaxalgol still work, returns A⊗v ≠ l⊗v,
// but the norm of (A⊗v-l⊗v)≤4.019D-14
~isequal(maxplusotimes(A,v),maxplusotimes(l,v))
// this is true that A⊗v ≠ l⊗v and the norm given by
norm(maxplusotimes(A,v)-maxplusotimes(l,v))

Author

"Max-Plus Algebra Toolbox", ver. 1.1.0, March, 2012.

See Also


Report an issue
<< maxpluslinsol MaxPlusAndPetrinet maxplusmaxalgolgeneral >>