Re: MatrixForm

*To*: mathgroup at smc.vnet.net*Subject*: [mg8836] Re: [mg8804] MatrixForm*From*: seanross at worldnet.att.net*Date*: Mon, 29 Sep 1997 02:40:02 -0400*Sender*: owner-wri-mathgroup at wolfram.com

Kent Day wrote: > > I am new to mathematica and am having a problem understanding the way it > uses MatrixForm. The manual says it only affects the look of the > equation and not the way it is processed however if I use it I get > "strange" results. > > a={{a11,a12},{a21,a22}} > b={{b11,b12},{b21,b22}} > > MatrixForm[a+b] > MatrixForm[a]+MatrixForm[b] > MatrixForm[a]+b > > all yield different results. Only the first one being what I would've > expected i.e. a new matrix {{a11+b11,{a12+b12} etc.. the last one gives > the strangest result in which is each element of b is added to the > entrire a matrix. > > any suggestions? also, once a function is in matrixForm as in > f=MatrixForm[a] how can I get f back into list form (is there a ListForm > kind of command?) > > if you reply could you cc my email > > hkowalc at eng.clemson.edu > > thanks > Henri Kowalczyk I think of MatrixForm as something to wrap around output. I caution against actually setting an array equal to MatrixForm[list]. The reason is that every mathematica expression has a zeroeth element, called the Head. Common Heads include Real, Integer, String, List. Mathematica uses the heads to determine which rules apply. f={{1,2},{3,4}}; sets up a symbol f with Head List, so the rules governing lists apply. f2=MatrixForm[f]; sets up a symbol with Head MatrixForm. Thus, f2 is no longer a List. Indeed, Dimensions[f2] returns {1} while Dimensions[f] returns {2,2}. Thus, do all your array math using List symbols and put MatrixForm around the final result to make it easier to look at. Another thing to notice is that Dimensions[f2] returns {1}, but Dimensions[f2[[1]]] returns {3,3}. Head[f2] returns MatrixForm, but Head[f2[[1]]] returns List and is equivalent to your old friend, the list f. So.. If you just have to put MatrixForm around all your intermediate results, then do all your math with the first element of any MatrixForm-ed symbol.