From: <mma...@us...> - 2012-03-12 21:35:23
|
Revision: 9836 http://octave.svn.sourceforge.net/octave/?rev=9836&view=rev Author: mmarzolla Date: 2012-03-12 21:35:17 +0000 (Mon, 12 Mar 2012) Log Message: ----------- added new test cases Modified Paths: -------------- trunk/octave-forge/main/queueing/inst/ctmc_check_Q.m trunk/octave-forge/main/queueing/inst/dtmc_check_P.m Modified: trunk/octave-forge/main/queueing/inst/ctmc_check_Q.m =================================================================== --- trunk/octave-forge/main/queueing/inst/ctmc_check_Q.m 2012-03-12 19:37:46 UTC (rev 9835) +++ trunk/octave-forge/main/queueing/inst/ctmc_check_Q.m 2012-03-12 21:35:17 UTC (rev 9836) @@ -46,7 +46,8 @@ return; endif - if ( norm( sum(Q,2), "inf" ) > epsilon ) + if (any(Q(~logical(eye(size(Q))))<0) || \ # there is any negavite non-diagonal element + norm( sum(Q,2), "inf" ) > epsilon ) err = "Q is not an infinitesimal generator matrix"; return; endif @@ -54,3 +55,37 @@ result = rows(Q); err = ""; endfunction +%!test +%! Q = [0]; +%! [result err] = ctmc_check_Q(Q); +%! assert( result, 1 ); +%! assert( err, "" ); + +%!test +%! N = 10; +%! Q = ctmc_bd(rand(1,N-1),rand(1,N-1)); +%! [result err] = ctmc_check_Q(Q); +%! assert( result, N ); +%! assert( err, "" ); + +%!test +%! Q = [1 2 3; 4 5 6]; +%! [result err] = ctmc_check_Q(Q); +%! assert( result, 0 ); +%! assert( index(err, "square") > 0 ); + +%!test +%! N = 10; +%! Q = ctmc_bd(rand(1,N-1),rand(1,N-1)); +%! Q(2,1) = -1; +%! [result err] = ctmc_check_Q(Q); +%! assert( result, 0 ); +%! assert( index(err, "infinitesimal") > 0 ); + +%!test +%! N = 10; +%! Q = ctmc_bd(rand(1,N-1),rand(1,N-1)); +%! Q(1,1) += 7; +%! [result err] = ctmc_check_Q(Q); +%! assert( result, 0 ); +%! assert( index(err, "infinitesimal") > 0 ); Modified: trunk/octave-forge/main/queueing/inst/dtmc_check_P.m =================================================================== --- trunk/octave-forge/main/queueing/inst/dtmc_check_P.m 2012-03-12 19:37:46 UTC (rev 9835) +++ trunk/octave-forge/main/queueing/inst/dtmc_check_P.m 2012-03-12 21:35:17 UTC (rev 9836) @@ -66,4 +66,8 @@ %!test %! P = [0 1; 1 0]; -%! assert( dtmc_check_P(P), 2 ); \ No newline at end of file +%! assert( dtmc_check_P(P), 2 ); + +%!test +%! P = dtmc_bd( linspace(0.1,0.4,10), linspace(0.4,0.1,10) ); +%! assert( dtmc_check_P(P), rows(P) ); \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |