changeset 9699:7146b37c539f octave-forge

added check for absorbing chains, which are currently not supported
author mmarzolla
date Wed, 14 Mar 2012 20:35:56 +0000
parents ade43392b18d
children 67b198d309fd
files main/queueing/inst/dtmc_fpt.m
diffstat 1 files changed, 12 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/main/queueing/inst/dtmc_fpt.m	Wed Mar 14 19:33:20 2012 +0000
+++ b/main/queueing/inst/dtmc_fpt.m	Wed Mar 14 20:35:56 2012 +0000
@@ -84,6 +84,10 @@
   ( 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)
@@ -120,28 +124,29 @@
 %!       0.9 0.1 0.0 ];
 %! M = dtmc_fpt(P);
 
-%!test
+%!shared P
 %! P = [ 0.0 0.9 0.1; \
 %!       0.1 0.0 0.9; \
 %!       0.9 0.1 0.0 ];
+
+%!test
 %! p = dtmc(P);
 %! M = dtmc_fpt(P);
 %! assert( diag(M)', 1./p, 1e-8 );
 
 %!test
-%! P = [ 0.0 0.9 0.1; \
-%!       0.1 0.0 0.9; \
-%!       0.9 0.1 0.0 ];
 %! p = dtmc(P);
 %! m = dtmc_fpt(P, 1, 1);
 %! assert( m, 1/p(1), 1e-8 );
 
 %!test
-%! P = [ 0.0 0.9 0.1; \
-%!       0.1 0.0 0.9; \
-%!       0.9 0.1 0.0 ];
 %! m = dtmc_fpt(P, 1, [2 3]);
 
+## FIXME: add support for absorbing chains
+%!xtest
+%! P = dtmc_bd([1 1 1], [ 0 0 0] );
+%! dtmc_fpt(Q,1,2);
+
 %!test
 %! P = unifrnd(0.1,0.9,10,10);
 %! normP = repmat(sum(P,2),1,columns(P));