From: <mma...@us...> - 2012-03-14 20:36:02
|
Revision: 9885 http://octave.svn.sourceforge.net/octave/?rev=9885&view=rev Author: mmarzolla Date: 2012-03-14 20:35:56 +0000 (Wed, 14 Mar 2012) Log Message: ----------- added check for absorbing chains, which are currently not supported 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 19:33:20 UTC (rev 9884) +++ trunk/octave-forge/main/queueing/inst/dtmc_fpt.m 2012-03-14 20:35:56 UTC (rev 9885) @@ -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)); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |