1function G=MG1_EG(A,optVerbose)
2%MG1_EG determines G directly
if rank(A0)=1
11% beta = (A_maxd)e + (A_maxd + A_maxd-1)e + ... + (Amaxd+...+A1)e
13 sumA=sumA+A(:,i*m+1:(i+1)*m);
14 beta=beta+sum(sumA,2);
20if (drift < 1) % pos recurrent
case
21 if (rank(A(:,1:m))==1) % A0 = alpha * beta ?
22 temp=find(sum(A(:,1:m),2)>0,1,
'first'); % index of first nonzero row
23 beta=A(temp,1:m)/sum(A(temp,1:m));
26elseif (drift > 1) % transient
case
27 if (rank(A(:,1:m))==1) % A0 = alpha * beta ?
32 A(:,i*m+1:(i+1)*m)=diag(theta.^(-1))*A(:,i*m+1:(i+1)*m)
'*diag(theta);
34 etahat=GIM1_Caudal(A);
35 temp=A(:,dega*m+1:end);
37 temp=temp*etahat+A(:,i*m+1:(i+1)*m);
39 G=diag(theta.^(-1))*(A(:,1:m)*(eye(m)-temp)^(-1))'*...
49 Gcheck=A(:,dega*m+1:end);
51 Gcheck=A(:,j*m+1:(j+1)*m)+Gcheck*G;
53 res_norm=norm(G-Gcheck,inf);
54 fprintf(
'Final Residual Error for G: %d\n',res_norm);