From: <mma...@us...> - 2012-03-14 22:17:22
|
Revision: 9886 http://octave.svn.sourceforge.net/octave/?rev=9886&view=rev Author: mmarzolla Date: 2012-03-14 22:17:16 +0000 (Wed, 14 Mar 2012) Log Message: ----------- add test Modified Paths: -------------- trunk/octave-forge/main/queueing/inst/dtmc_fpt.m Modified: trunk/octave-forge/main/queueing/inst/dtmc_fpt.m =================================================================== --- trunk/octave-forge/main/queueing/inst/dtmc_fpt.m 2012-03-14 20:35:56 UTC (rev 9885) +++ trunk/octave-forge/main/queueing/inst/dtmc_fpt.m 2012-03-14 22:17:16 UTC (rev 9886) @@ -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,12 +138,27 @@ %!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); %! normP = repmat(sum(P,2),1,columns(P)); %! P = P./normP; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |