0

I am wondering whether Mathematica can also compute the Laguerre polynomials of matrix argument as the appear in multivariate statistics?

For example, they appear in this paper here: http://www.jstor.org/stable/2237846?seq=1#page_scan_tab_contents

which is from 1960. So it should be possible yet the help file does not really give any input.

Thank you so much!

J. M.'s missing motivation
  • 124,525
  • 11
  • 401
  • 574
Hirek
  • 483
  • 4
  • 11
  • 3
    Apparently yes, eg m = # + Transpose@# &@RandomReal[{-1, 1}, {10, 10}]; LaguerreL[3.2, m] seems to work. In general you could also use MatrixFunction for this sort of thing. – acl Jan 30 '15 at 00:45
  • @acl thanks so much! I am still wondering what is actually going on under the hood since they tend to be polynomials in the eigenvalues. Hmm what does your expression # + Transpose@# &@RandomReal do? – Hirek Jan 30 '15 at 16:15
  • it produces a 10 by 10 matrix of elements drawn from a uniform random distribution and then adds it to its transpose. I just wanted a symmetric matrix. – acl Jan 30 '15 at 16:30
  • Ah sweet! @acl because Muirhead (1982) has a closed form expression for the distribution function of the largest eigenvalue of a non-central Wishart matrix. A rather artistic achievement in terms of heavy integration. But then I was stuck with Laguerre. Thank you so much! Oh and why don't you write this up as your answer and I shall vote it as answered. – Hirek Jan 30 '15 at 20:39
  • Ah @acl wait a minute, this produces a matrix with entries as the Laguerre polynomial in each cell what I meant the entire matrix is an input into Laguerre and then out comes a scalar given that the Laguerre polynomial is a polynomial in the eigenvalues of a matrix. – Hirek Jan 30 '15 at 20:43
  • 1
    Oops you're right, LaguerreL is Listable so it just threads. OK, this does what you want I think: m = # + Transpose@# &@RandomReal[{-1, 1}, {10, 10}]; MatrixFunction[LaguerreL[3.2, #] &, m] (the idea is that MatrixFunction takes a scalar fn as the first arg, turns it into a matrix function and applies it to the second argument). Unless you actually do want a scalar as the output but then you need to explain how you want to get it. – acl Jan 31 '15 at 00:25
  • So operationally, you can think of MatrixFunction as taking a scalar function as the first arg, finding its series expansion, then using that to turn it into a matrix function and finally applying that to the second arg. If the second arg can eg be diagonalised via an orthogonal transformation, all you'd need to do do the transformation, apply a polynomial to the eigenvals and undo the transformation. – acl Jan 31 '15 at 00:28
  • @acl Could you wrap all those comments in an answer? – Dr. belisarius Sep 01 '15 at 20:22
  • @belisarius nah I'm on holidays. Why don't you go ahead and do it? – acl Sep 01 '15 at 20:46
  • @acl Enjoy your holidays! Site cleanup can surely wait for you :D – Dr. belisarius Sep 01 '15 at 21:14

0 Answers0