LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
map_pntiter.m
1function Pnt=map_pntiter(MAP,na,t,M)
2% Pnt=map_pntiter(MAP,n,t) - probability of having n arrivals within an interval of length t
3% Neuts and Li, MAM1
4if ~exist('M','var')
5 M=ceil(log2(t*100/map_mean(MAP)));
6end
7if M<0
8 [Pnt,P]=map_pntbisect(MAP,na,t);
9else
10 [Pnt,P]=map_pntbisect(MAP,na,t/2^M);
11 for i=1:M
12 Pold=P;
13 for n=0:na
14 P{n+1}=0*P{n+1};
15 for j=0:n
16 P{n+1}=P{n+1}+Pold{j+1}*Pold{n-j+1};
17 end
18 end
19 end
20 Pnt=P{na+1};
21end
22end
23
24function [Pnt,P]=map_pntbisect(MAP,na,t)
25% Pnt=map_pntiter(MAP,n,t) - probability of having n arrivals within an interval of length t
26% Neuts and Li, MAM1
27D0=MAP{1};
28D1=MAP{2};
29tau=max(diag(-D0));
30N=findN(tau,t);
31V=cell(na+1,N+1);
32P=cell(na+1,1);
33I=eye(size(D0));
34K=D0/tau+I;
35K1=D1/tau;
36% initialize
37for n=0:na
38 P{n+1}=0*I;
39 for k=0:N
40 V{n+1,k+1}=0*I;
41 end
42end
43% algorithm
44V{0+1,0+1}=I;
45P{0+1}=V{0+1,0+1}*br(tau,t,0);
46for n=1:na
47 V{n+1,0+1}=0*I;
48 P{n+1}=0*I;
49 for k=1:N
50 V{n+1,k+1}=V{n+1,k-1+1}*K+V{n-1+1,k-1+1}*K1;
51 P{n+1}=P{n+1}+V{n+1,k+1}*br(tau,t,n);
52 end
53end
54Pnt=P{na+1};
55end
56function N=findN(tau,t)
57epsilon=eps;
58Nmax=100;
59for N=1:Nmax
60 S=0;
61 for n=(N+1):Nmax
62 S=S+br(tau,t,n);
63 end
64 if S<epsilon
65 break;
66 end
67end
68end
69function b=br(tau,t,r)
70b=exp(-tau*t)*(tau*t)^r/factorial(r);
71end
72
73