Re: give the diagonal of m?

• To: mathgroup at smc.vnet.net
• Subject: [mg128573] Re: give the diagonal of m?
• From: marty.musatov at gmail.com
• Date: Mon, 5 Nov 2012 18:39:01 -0500 (EST)
• Delivered-to: l-mathgroup@mail-archive0.wolfram.com
• Delivered-to: l-mathgroup@wolfram.com
• Delivered-to: mathgroup-newout@smc.vnet.net
• Delivered-to: mathgroup-newsend@smc.vnet.net
• References: <DD6GKI.3sG@wri.com>

```On Saturday, August 12, 1995 12:00:00 AM UTC-7, Richard Mercer wrote:
> >  An elegant test.  My question: why does Transpose[m, {1,
> >  1}] return the list of diagonal elements?
Yes.  Looking under
> >  Transpose in Wolfram's Mathematica Reference Guide (an
> >  appendix to Mathematica, 2nd ed.), I find:
>
> >  Transpose[list, {n1,n2, ...}] transposes list so that the kth level
> >  in list is the nkth level in the result.
>
> >  I expected Depth[Transpose[list, {n1,n2, ...}]] to be
> >  the same as Depth[list].  I expected Transpose to swap
> >  levels; I did not expect it to throw any away.  Evidently
> >  I am laboring under some misconception.  Can someone
> >  explain what is going on?
Yes.
>
> I think so, at the price of a certain amount of abstraction and background
> discussion.
>
> Consider the matrix
>
> A = {{16,27},{38,49}}, or
> A = [ 16  27 ]
>     [ 38  49 ]
> Then
> C = Transpose[A,{1,1}] gives
> {16,49}
> Why?
Yes.
>
> *Short Version*
> Since {1,1} is not a permutation, Transpose[list,{1,1}] is not defined by the
> Reference Guide. The effect of using {1,1} is to say the two entries must be
> the same, so C[[1]] = A[[1,1]] = 16, and C[[2]] = A[[2,2]] = 49. The effect is
> to compress a two-dimensional list into a one-dimensional list.
>
> If you believe that, I have some Netscape shares I'd like to sell you!
> So you'd better read the...
>
>
> *Long Version*
> (0) The discussion below works just as well for non-square matrices and their
> higher-dimensional analogues, but it's simplest to consider a 2x2 matrix.
>
> (1) The structured list objects on which Transpose operates can be viewed as
> functions on certain integer lattices. Sounds fancy, but an example shows it's
> really a simple idea.
>
> The matrix A can be thought of as a function of two indices with the following
> values:
> A(1,1) = 16
> A(1,2) = 27
> A(2,1) = 38
> A(2,2) = 49
> (In Mathematica you use double brackets instead of parentheses.)
> The domain of the function A is therefore the set of ordered pairs
> D = {(1,1), (1,2), (2,1), (2,2)}.
> (set notation, not Mathematica notation!)
> D is the same as the set (cartesian) product {1,2} X {1,2}.
>
> (2) The ordinary transpose operation can be viewed as the composition of the
> function A and the map t defined from D to D as follows:
> t(1,1) = (1,1)
> t(1,2) = (2,1)
> t(2,1) = (1,2)
> t(2,2) = (2,2)
>
> So if B = Transpose[A], then
> B(1,1) = A(t(1,1)) = A(1,1) = 16
> B(1,2) = A(t(1,2)) = A(2,1) = 38
> B(2,1) = B(t(2,1)) = A(1,2) = 27
> B(2,2) = B(t(2,2)) = A(2,2) = 49
> Therefore B = {{16,38},{27,49}} in Mathematica notation, or
> B = [ 16  38 ]
>     [ 27  49 ]
> as expected.
>
> (3) The key is to understand the map t and how it can be generalized to other
> situations. The map t is defined by a "permutation" or reordering applied to
> the elements of the domain D. In this case the reordering is described by {2,1}
> because
>
> -- the first entry of the result is the second(2) entry of the input,
> -- the second entry of the result is the first(1) entry of the input, i.e.
> t(a,b) = (b,a). Therefore
> Transpose[A,{2,1}] means the same as Transpose[A], and
> Transpose[A,{1,2}] = A,
> because the permutation {1,2} means no reordering at all.
>
> (4) If we now extend this discussion to the non-permutation {1,1}, it should
> define a map s by
> -- the first entry of the result is the first(1) entry of the input,
> -- the second entry of the result is the first(1) entry of the input,
>
> i.e. s(a) = (a,a).
> Why not s(a,b) = (a,a)?
Yes. Since only the first entry of the input is used, we
> assume the input has only one entry.
> s maps from {1,2} into {1,2} X {1,2} = D.
>
> (5) By analogy, C = Transpose[A,{1,1}] should now represent the composition of
> the function A with the map s. The result is a function on {1,2}, with values
> C(1) = A(s(1)) = A(1,1) = 16
> C(2) = A(s(2)) = A(2,2) = 49
>
> This discussion could be continued to cases of higher dimensional lists, but
> I'm amazed if you've read this far!
>
> If you have a three dimension list, e.g.
> A = {{{16,27},{38,49}},{{91,82},{73,64}}}
> what should be the result of Transpose[A,{1,1,2}] ?
Yes.
> Explain why Mathematica accepts the non-permutation {1,1,2} but not {1,1,3} in
> its place.
>
> Richard Mercer
AN ... integers for all j = 1, ... , n, xj = 0, 1; and the rank of the matrix (aj) equals 2.Musatov

```

• Prev by Date: Re: Workbook demands .mov file on opening, how do I suppress?
• Next by Date: Re: Conformal Mapping
• Previous by thread: Re: A nice and customized legend within Manipulate
• Next by thread: Re: give the diagonal of m?