changeset 9700:67b198d309fd octave-forge

add test
author mmarzolla
date Wed, 14 Mar 2012 22:17:16 +0000
parents 7146b37c539f
children b4dccb6ed82d
files main/queueing/inst/dtmc_fpt.m
diffstat 1 files changed, 17 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/main/queueing/inst/dtmc_fpt.m	Wed Mar 14 20:35:56 2012 +0000
+++ b/main/queueing/inst/dtmc_fpt.m	Wed Mar 14 22:17:16 2012 +0000
@@ -84,10 +84,6 @@
   ( N>0 ) || \
       error(err);
 
-  if ( any(diag(P) == 1) ) 
-    error("dtmc_fpt() does not currently support absorbing chains");
-  endif
-
   if ( nargin == 1 )   
     M = zeros(N,N);
     ## M(i,j) = 1 + sum_{k \neq j} P(i,k) M(k,j)
@@ -142,10 +138,25 @@
 %!test
 %! m = dtmc_fpt(P, 1, [2 3]);
 
-## FIXME: add support for absorbing chains
+## FIXME: check this (matrix not ergodic???)
 %!xtest
 %! P = dtmc_bd([1 1 1], [ 0 0 0] );
-%! dtmc_fpt(Q,1,2);
+%! dtmc_fpt(P);
+
+## Example on p. 461 of
+## http://www.cs.virginia.edu/~gfx/Courses/2006/DataDriven/bib/texsyn/Chapter11.pdf
+%!test
+%! P = [ 0 1 0 0 0; \
+%!      .25 .0 .75 0 0; \
+%!      0 .5 0 .5 0; \
+%!      0 0 .75 0 .25; \
+%!      0 0 0 1 0 ];
+%! M = dtmc_fpt(P);
+%! assert( M, [16 1 2.6667 6.3333 21.3333; \
+%!             15 4 1.6667 5.3333 20.3333; \
+%!             18.6667 3.6667 2.6667 3.6667 18.6667; \
+%!             20.3333 5.3333 1.6667 4 15; \
+%!             21.3333 6.3333 2.6667 1 16 ], 1e-4 );
 
 %!test
 %! P = unifrnd(0.1,0.9,10,10);