Mercurial > forge
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));