[R] Matrix multiplication
peter dalgaard
pdalgd at gmail.com
Wed Dec 12 10:28:59 CET 2012
On Dec 12, 2012, at 08:19 , annek wrote:
> Hi,
> I have a transition matrix T for which I want to find the steady state matrix for. This could be approximated by taking T^n , for large n.
>
> T= [ 0.8797 0.0382 0.0527 0.0008
> 0.0212 0.8002 0.0041 0.0143
> 0.0981 0.0273 0.8802 0.0527
> 0.0010 0.1343 0.0630 0.9322]
>
> According to a text book I have T^200 should have reached the steady state L
>
> L =[0.17458813 0.17458813 0.17458813 0.17458813
> 0.05731902 0.05731902 0.05731902 0.05731902
> 0.35028624 0.35028624 0.35028624 0.35028624
> 0.44160126 0.44160126 0.44160126 0.44160126]
>
> I am addressing the problem using a for loop doing matrix multiplication (guess there might be better ways, please suggest) and find a steady state matrix after n=30. But if I run the code with n=100 or more I get "Inf" for all entities in L. Does anyone know why is that?
>
> The code I use look like this
> #------------------------------------
> rep<-20
>
> T <- Ttest
> for(i in 1:rep){
> print(i)
> T<-T%*%Ttest
> Ttest<-T
> }
> L<-T
> print(L)
> #----------------------------------
Your code is not reproducible, but I notice that at the end of your loop, T==Ttest, so you are squaring a matrix on every iteration. I.e., you are generating T^2, T^4, T^8, so at i=20 you are computing T^1048576 or so. If you go beyond that, I suppose that even a tiny roundoff will cause an eigenvalue slightly bigger than 1 to blow things up.
--
Peter Dalgaard, Professor,
Center for Statistics, Copenhagen Business School
Solbjerg Plads 3, 2000 Frederiksberg, Denmark
Phone: (+45)38153501
Email: pd.mes at cbs.dk Priv: PDalgd at gmail.com
More information about the R-help
mailing list