AW: AW: Re: Transpose matrix does not work when MatrixForm is used, why?
- To: mathgroup at smc.vnet.net
- Subject: [mg45298] AW: AW: [mg45288] Re: Transpose matrix does not work when MatrixForm is used, why?
- From: Klamser at t-online.de
- Date: Mon, 29 Dec 2003 00:22:06 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
Hi, for your purpose (m = { {1, 2, 3}, {4, 5, 6} }) // MatrixForm; is the best! Where lies the problem positioning a pair of brackets? Regards Peter -----Ursprüngliche Nachricht----- Von: Dr Bob [mailto:drbob at bigfoot.com] Gesendet: Sonntag, 28. Dezember 2003 20:42 An: Klamser at t-online.de; mathgroup at smc.vnet.net Betreff: Re: AW: [mg45288] Re: Transpose matrix does not work when MatrixForm is used, why? I don't want to see EVERY matrix in MatrixForm -- it takes up too much space on my screen, especially for a large matrix, where the screen isn't even wide enough to see a row in that format. Also, MatrixQ will test true for something I think of as a list of lists (not a matrix). Furthermore, MatrixForm is NOT a primitive. Mathematica doesn't have primitives as such. Bobby On Sun, 28 Dec 2003 18:24:55 +0100, <Klamser at t-online.de> wrote: > Hi, > > every modern computer program solves two problems: > > 1. The main problem (Mathematica solve mathematical problems) > > 2. Tell the user something about the found solution: The output! > > Ancient computer program did not! They only solved the problem, the > output > option was forgotten (ALGOL in the early sixties... ;-) => (because there > was not enough memory...). > > The MatrixForm primitive is not a mathematical problem, it is one of the > second kind. Output has something to do with tradition, not so deep with > the > problem itself... > > Therefore the output primitives should not be locked with the problem > itself. > > Some people want to have the same format each Mathematica session. > Therefore > you find by some experts > > http://www.verbeia.com/mathematica/tips/Tricks.html > > or > > http://www.verbeia.com/mathematica/tips/HTMLLinks/Tricks_174.html > > $PrePrint=Which[MatrixQ[#],MatrixForm[#],NumberQ[#],#,True,Short[#,50]]& > > Putting this into your init.m file in the kernel directory, you will have > never again to type //MatrixForm and you never have again to position the > brackets correct: > > (m = { {1, 2, 3}, {4, 5, 6} }) // MatrixForm; > > Regards > > Peter > > > -----Ursprüngliche Nachricht----- > Von: Bobby R. Treat [mailto:drbob at bigfoot.com] > Gesendet: Sonntag, 28. Dezember 2003 11:11 > An: mathgroup at smc.vnet.net > Betreff: [mg45288] Re: Transpose matrix does not work when MatrixForm is > used, why? > > > THANKS for emphasizing that MatrixForm and List are two different > heads. That's very, very true -- but rather obvious and not > particularly helpful. > > The issue is that the MatrixForm "wrapper" affects evaluation, > contrary to the description in Help. The question is what to do about > it. > > Thanks to Andrzej Kozlowski, we have a short answer that seems to > work. > > Bobby > > Klamser at t-online.de wrote in message news:<bsjlej$24e$1 at smc.vnet.net>... >> Hi, >> >> why has Santa Claus a red cape on? >> >> A deer is not a dog is not a dog. >> >> A MatrixForm Object is not a Matrix. >> >> m = { {1, 2, 3}, {4, 5, 6} } // MatrixForm; >> ??m -> m = MatrixForm[{{1, 2, 3}, {4, 5, 6}}] >> >> Therefore m[[0]] -> MatrixForm >> >> But >> >> (m = { {1, 2, 3}, {4, 5, 6} }) // MatrixForm; >> ??m -> m = {{1, 2, 3}, {4, 5, 6}} >> >> Therefore m[[0]] -> List >> >> Therefore again: >> >> A MatrixForm Object is not a Matrix. >> >> Regards >> >> Peter Klamser >> >> >> -----Ursprüngliche Nachricht----- >> Von: steve_H [mailto:nma124 at hotmail.com] >> Gesendet: Mittwoch, 24. Dezember 2003 23:42 >> An: mathgroup at smc.vnet.net >> Betreff: Re: Transpose matrix does not work when MatrixForm is >> used, why? >> >> >> Dr Bob <drbob at bigfoot.com> wrote in message >> news:<bsbmsb$lr1$1 at smc.vnet.net>... >> >> > That may be easier... if we are willing to constantly pay attention to >> > whether the target of Transpose is "wrapped" in MatrixForm or not. >> > (Transpose/@m if it's wrapped, Transpose@m if not.) >> > >> > But if we want Help's claim that evaluation is not affected to be true > (it >> > currently is NOT), then we have to redefine Transpose, Inverse, etc. >> as > in >> > my example. >> > >> > Only then would MatrixForm act properly as a wrapper, as intended. >> > >> > Bobby >> > >> >> >> > On Tue, 23 Dec 2003 18:38:10 +0900, Andrzej Kozlowski > <akoz at mimuw.edu.pl> >> > wrote: >> > >> > > This of course works, but presumably he would want do this for other >> > > functions, (e.g. Inverse etc), not just transpose. So it seems to me > it >> > > is easier simply to use Map: >> > > >> > > m = { {1, 2, 3}, {4, 5, 6} } // MatrixForm >> > > Transpose/@m >> > > >> > > etc. >> > > >> > > Andrzej Kozlowski >> > > >> >> >> Correct Dr Bob, >> >> But why do we have to resort to all these tricks? Why can't Mathematica > just >> accept a MatrixForm (or any other representation form) of the object >> in its functions (Transpose in this example) just as well as the >> list representation? >> >> Each Mathematica function, where needed, could start by checking if this >> 'Wrapper' as you call it exists, and converts it to a list >> representation (remove the wrapper), and do its thing on the list, >> and at the end put the 'wrapper' around the result as needed and >> return the result to the user? >> >> This way one does not have to worry which form of an object one uses, >> the representation form or the list form. >> >> i.e. representation form will be transparent to all Mathematica >> functions. >