butools.mam.FluidStationaryDistr¶
-
butools.mam.
FluidStationaryDistr
()¶ Matlab: pi = FluidStationaryDistr (mass0, ini, K, clo, x)
Mathematica: pi = FluidStationaryDistr [mass0, ini, K, clo, x]
Python/Numpy: pi = FluidStationaryDistr (mass0, ini, K, clo, x)
Returns the stationary distribution of a Markovian fluid model at the given points.
Parameters: mass0 : matrix, shape (1,Np+Nm)
The stationary probability vector of zero level
ini : matrix, shape (1,Np)
The initial vector of the stationary density
K : matrix, shape (Np,Np)
The matrix parameter of the stationary density
clo : matrix, shape (Np,Np+Nm)
The closing matrix of the stationary density
x : vector, length (K)
The distribution function is computed at these points.
Returns: pi : matrix, shape (K,Nm+Np)
The ith row of pi is the probability that the fluid level is less than or equal to x(i), while being in different states of the background process.
Examples
For Matlab:
>>> Q = [-6., 1., 3., 2., 0., 0.; 6., -10., 2., 0., 2., 0.; 3., 7., -12., 0., 0., 2.; 5., 0., 0., -9., 1., 3.; 0., 5., 0., 6., -13., 2.; 0., 0., 5., 3., 7., -15.]; >>> R = [2., 0., 0., 0., 0., 0.; 0., -4., 0., 0., 0., 0.; 0., 0., -12., 0., 0., 0.; 0., 0., 0., 6., 0., 0.; 0., 0., 0., 0., 0., 0.; 0., 0., 0., 0., 0., -8.]; >>> x = (0.0:1.0:30.0); >>> [mass0, ini, K, clo] = GeneralFluidSolve(Q, R); Final Residual Error for Psi: 7.6328e-16 >>> disp(mass0); 0 0.082246 0.069492 0 0.023812 0.020724 >>> disp(ini); 0.70195 0.20505 >>> disp(K); -2.4698 1.1349 1.295 -1.1686 >>> disp(clo); 0.5 0.061087 0.054574 0 0.01618 0.012595 0 0.055389 0.043116 0.16667 0.038913 0.032631 >>> y = FluidStationaryDistr(mass0, ini, K, clo, x); >>> disp(y); 0 0.082246 0.069492 0 0.023812 0.020724 0.1768 0.11964 0.10108 0.047524 0.040629 0.034482 0.25236 0.14136 0.11905 0.085106 0.051849 0.043744 0.29931 0.15521 0.13049 0.10952 0.059068 0.049706 0.32938 0.1641 0.13783 0.1252 0.063703 0.053534 0.34868 0.1698 0.14254 0.13527 0.066678 0.055991 0.36107 0.17346 0.14557 0.14173 0.068587 0.057568 0.36902 0.17581 0.14751 0.14588 0.069813 0.058581 0.37413 0.17732 0.14875 0.14854 0.070599 0.05923 0.3774 0.17829 0.14955 0.15025 0.071104 0.059647 0.37951 0.17891 0.15007 0.15134 0.071428 0.059915 0.38086 0.17931 0.1504 0.15205 0.071636 0.060087 0.38172 0.17956 0.15061 0.1525 0.07177 0.060197 0.38228 0.17973 0.15074 0.15279 0.071856 0.060268 0.38264 0.17983 0.15083 0.15298 0.071911 0.060313 0.38286 0.1799 0.15089 0.1531 0.071946 0.060343 0.38301 0.17995 0.15092 0.15317 0.071969 0.060361 0.38311 0.17997 0.15095 0.15322 0.071983 0.060373 0.38317 0.17999 0.15096 0.15325 0.071993 0.060381 0.38321 0.18 0.15097 0.15327 0.071999 0.060386 0.38323 0.18001 0.15098 0.15329 0.072002 0.060389 0.38325 0.18001 0.15098 0.1533 0.072005 0.060391 0.38326 0.18002 0.15098 0.1533 0.072006 0.060393 0.38326 0.18002 0.15098 0.1533 0.072007 0.060393 0.38327 0.18002 0.15099 0.15331 0.072008 0.060394 0.38327 0.18002 0.15099 0.15331 0.072009 0.060394 0.38327 0.18002 0.15099 0.15331 0.072009 0.060394 0.38327 0.18002 0.15099 0.15331 0.072009 0.060395 0.38327 0.18002 0.15099 0.15331 0.072009 0.060395 0.38327 0.18002 0.15099 0.15331 0.072009 0.060395 0.38327 0.18002 0.15099 0.15331 0.072009 0.060395
For Mathematica:
>>> Q = {{-6., 1., 3., 2., 0., 0.},{6., -10., 2., 0., 2., 0.},{3., 7., -12., 0., 0., 2.},{5., 0., 0., -9., 1., 3.},{0., 5., 0., 6., -13., 2.},{0., 0., 5., 3., 7., -15.}}; >>> R = {{2., 0., 0., 0., 0., 0.},{0., -4., 0., 0., 0., 0.},{0., 0., -12., 0., 0., 0.},{0., 0., 0., 6., 0., 0.},{0., 0., 0., 0., 0., 0.},{0., 0., 0., 0., 0., -8.}}; >>> x = Range[0.0,30.0,1.0]; >>> {mass0, ini, K, clo} = GeneralFluidSolve[Q, R]; "Final Residual Error for Psi: "8.049116928532385*^-16 >>> Print[mass0]; {0., 0.08224612885906893, 0.06949240017690633, 0., 0.023812479297703082, 0.02072428187885746} >>> Print[ini]; {0.7019539736851326, 0.20504772142279093} >>> Print[K]; {{-2.4697521505145907, 1.134862595858089}, {1.2950177373696095, -1.1686305573375777}} >>> Print[clo]; {{0.5, 0.061087420281185266, 0.05457444259943262, 0., 0.016179786329552276, 0.012594625960258435}, {0., 0.05538937584186795, 0.04311604966168951, 0.16666666666666666, 0.03891262165047115, 0.03263123758653177}} >>> y = FluidStationaryDistr[mass0, ini, K, clo, x]; >>> Print[y]; {{0., 0.08224612885906893, 0.06949240017690633, 0., 0.023812479297703082, 0.02072428187885746}, {0.17679828584143387, 0.11964030859218046, 0.10108396370608363, 0.04752378685346968, 0.0406292470977543, 0.03448225831899647}, {0.25236302876555233, 0.1413624893371936, 0.11905425826308001, 0.08510641630266393, 0.051849121729191976, 0.043743883928920646}, {0.29931264954324033, 0.1552119530930992, 0.13049436916913887, 0.10951964597475519, 0.05906828801104183, 0.04970631314037002}, {0.32938468757051215, 0.16409771658698452, 0.13783358942358814, 0.12520170582619924, 0.06370278668078841, 0.053534155407154435}, {0.34868449515660904, 0.1698010870955941, 0.1425442744705256, 0.13526807548357628, 0.06667757320990522, 0.055991171722000466}, {0.3610724041904199, 0.17346191738358857, 0.1455679271785355, 0.1417294213170503, 0.06858700808700413, 0.057568264149546605}, {0.3690238580066053, 0.1758117034241949, 0.14750872644722962, 0.145876782363056, 0.06981262188190124, 0.058580556464752895}, {0.37412767739882563, 0.17731996646316545, 0.14875447212268095, 0.1485388594161015, 0.0705993096793801, 0.05923031906992984}, {0.3774036787247303, 0.17828807903623806, 0.1495540820182828, 0.1502475734813503, 0.07110426294589622, 0.05964738382040349}, {0.37950645389859416, 0.17890948387765165, 0.15006732962417735, 0.15134435005708705, 0.0714283785634811, 0.0599150862161234}, {0.3808561674647779, 0.17930834655920647, 0.15039676915014394, 0.15204834078408558, 0.0716364194665258, 0.06008691702319098}, {0.3817225114911861, 0.17956436554736804, 0.15060822732359253, 0.15250021307481673, 0.07176995520189747, 0.06019721049358771}, {0.38227859390074176, 0.17972869709637077, 0.15074395651087513, 0.15279025747355637, 0.0718556681187339, 0.06026800483960608}, {0.38263552790939337, 0.17983417699921528, 0.15083107734418205, 0.15297642899804645, 0.0719106848832888, 0.0603134457837539}, {0.38286463403528914, 0.1799018816485757, 0.1508869978116073, 0.15309592738064431, 0.07194599863171562, 0.06034261307635817}, {0.3830116909579996, 0.1799453394013931, 0.15092289162205835, 0.1531726301067063, 0.07196866555584394, 0.060361334759496954}, {0.38310608275321023, 0.17997323373801222, 0.15094593087205072, 0.15322186347754735, 0.07198321483119217, 0.06037335169313235}, {0.38316667025115914, 0.17999113834570535, 0.15096071913313355, 0.1532534650245694, 0.07199255361099133, 0.06038106503241529}, {0.38320555970017856, 0.18000263082107842, 0.1509702113113046, 0.1532737491886867, 0.07199854791696529, 0.06038601601281503}, {0.3832305217681999, 0.18001000752502333, 0.15097630407947565, 0.15328676903590022, 0.07200239549715055, 0.06038919391100146}, {0.38324654423330573, 0.18001474242845572, 0.1509802148598379, 0.15329512611783286, 0.0720048651530784, 0.060391233716467846}, {0.38325682861310345, 0.18001778163277804, 0.1509827250822216, 0.1533004902989391, 0.07200645035731282, 0.060392543011510216}, {0.38326342987371637, 0.1800197324144666, 0.15098433632494862, 0.15330393341929766, 0.07200746785632414, 0.060393383411997556}, {0.3832676670413954, 0.18002098456759374, 0.15098537053735236, 0.15330614346358376, 0.07200812096096232, 0.06039392284196271}, {0.3832703867628235, 0.1800217882902569, 0.15098603436985764, 0.15330756203024365, 0.07200854017087183, 0.06039426908722517}, {0.3832721324772268, 0.18002230417773518, 0.15098646046569003, 0.15330847256917773, 0.07200880925018614, 0.06039449133253881}, {0.38327325300330195, 0.18002263531172266, 0.1509867339648889, 0.15330905701908332, 0.07200898196479938, 0.06039463398569475}, {0.3832739722381797, 0.18002284785752437, 0.15098690951650454, 0.15330943216140772, 0.07200909282556067, 0.06039472555083318}, {0.3832744338952716, 0.18002298428483032, 0.15098702219825963, 0.1533096729549508, 0.0720091639840351, 0.06039478432397785}, {0.38327473022026526, 0.18002307185376684, 0.15098709452557996, 0.15330982751370525, 0.07200920965870329, 0.06039482204884339}}
For Python/Numpy:
>>> Q = ml.matrix([[-6., 1., 3., 2., 0., 0.],[6., -10., 2., 0., 2., 0.],[3., 7., -12., 0., 0., 2.],[5., 0., 0., -9., 1., 3.],[0., 5., 0., 6., -13., 2.],[0., 0., 5., 3., 7., -15.]]) >>> R = ml.matrix([[2., 0., 0., 0., 0., 0.],[0., -4., 0., 0., 0., 0.],[0., 0., -12., 0., 0., 0.],[0., 0., 0., 6., 0., 0.],[0., 0., 0., 0., 0., 0.],[0., 0., 0., 0., 0., -8.]]) >>> x = np.arange(0.0,31.0,1.0) >>> mass0, ini, K, clo = GeneralFluidSolve(Q, R) Final Residual Error for G: 6.661338147750939e-16 >>> print(mass0) [[ 0. 0.08225 0.06949 0. 0.02381 0.02072]] >>> print(ini) [[ 0.70195 0.20505]] >>> print(K) [[-2.46975 1.13486] [ 1.29502 -1.16863]] >>> print(clo) [[ 0.5 0.06109 0.05457 0. 0.01618 0.01259] [ 0. 0.05539 0.04312 0.16667 0.03891 0.03263]] >>> y = FluidStationaryDistr(mass0, ini, K, clo, x) >>> print(y) [[ 0. 0.08225 0.06949 0. 0.02381 0.02072] [ 0.1768 0.11964 0.10108 0.04752 0.04063 0.03448] [ 0.25236 0.14136 0.11905 0.08511 0.05185 0.04374] [ 0.29931 0.15521 0.13049 0.10952 0.05907 0.04971] [ 0.32938 0.1641 0.13783 0.1252 0.0637 0.05353] [ 0.34868 0.1698 0.14254 0.13527 0.06668 0.05599] [ 0.36107 0.17346 0.14557 0.14173 0.06859 0.05757] [ 0.36902 0.17581 0.14751 0.14588 0.06981 0.05858] [ 0.37413 0.17732 0.14875 0.14854 0.0706 0.05923] [ 0.3774 0.17829 0.14955 0.15025 0.0711 0.05965] [ 0.37951 0.17891 0.15007 0.15134 0.07143 0.05992] [ 0.38086 0.17931 0.1504 0.15205 0.07164 0.06009] [ 0.38172 0.17956 0.15061 0.1525 0.07177 0.0602 ] [ 0.38228 0.17973 0.15074 0.15279 0.07186 0.06027] [ 0.38264 0.17983 0.15083 0.15298 0.07191 0.06031] [ 0.38286 0.1799 0.15089 0.1531 0.07195 0.06034] [ 0.38301 0.17995 0.15092 0.15317 0.07197 0.06036] [ 0.38311 0.17997 0.15095 0.15322 0.07198 0.06037] [ 0.38317 0.17999 0.15096 0.15325 0.07199 0.06038] [ 0.38321 0.18 0.15097 0.15327 0.072 0.06039] [ 0.38323 0.18001 0.15098 0.15329 0.072 0.06039] [ 0.38325 0.18001 0.15098 0.1533 0.072 0.06039] [ 0.38326 0.18002 0.15098 0.1533 0.07201 0.06039] [ 0.38326 0.18002 0.15098 0.1533 0.07201 0.06039] [ 0.38327 0.18002 0.15099 0.15331 0.07201 0.06039] [ 0.38327 0.18002 0.15099 0.15331 0.07201 0.06039] [ 0.38327 0.18002 0.15099 0.15331 0.07201 0.06039] [ 0.38327 0.18002 0.15099 0.15331 0.07201 0.06039] [ 0.38327 0.18002 0.15099 0.15331 0.07201 0.06039] [ 0.38327 0.18002 0.15099 0.15331 0.07201 0.06039] [ 0.38327 0.18002 0.15099 0.15331 0.07201 0.06039]]