Re: matrix manipulation
- To: mathgroup at smc.vnet.net
- Subject: [mg132399] Re: matrix manipulation
- From: Roland Franzius <roland.franzius at uos.de>
- Date: Mon, 10 Mar 2014 04:36:13 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- Delivered-to: l-mathgroup@wolfram.com
- Delivered-to: mathgroup-outx@smc.vnet.net
- Delivered-to: mathgroup-newsendx@smc.vnet.net
- References: <lfeio3$5r1$1@smc.vnet.net>
Am 08.03.2014 09:01, schrieb dimanag78 at gmail.com: > Hello to all. > > I have the following 6x6 matrix > > Table[Subscript[C, k, j][i], {k, 1, 6}, {j, 1, 6}] > > I want this matrix to be symmetric, that is, > Subscript[C, k, j][i] = Subscript[C, j, k][i] for j != k. > > In other words I want the matrix > > {{Subscript[C, 1, 1][i], Subscript[C, 1, 2][i], Subscript[C, 1, 3][i], > Subscript[C, 1, 4][i], Subscript[C, 1, 5][i], > Subscript[C, 1, 6][i]}, {Subscript[C, 1, 2][i], > Subscript[C, 2, 2][i], Subscript[C, 2, 3][i], Subscript[C, 2, 4][i], > Subscript[C, 2, 5][i], > Subscript[C, 2, 6][i]}, {Subscript[C, 1, 3][i], > Subscript[C, 2, 3][i], Subscript[C, 3, 3][i], Subscript[C, 3, 4][i], > Subscript[C, 3, 5][i], > Subscript[C, 3, 6][i]}, {Subscript[C, 1, 4][i], > Subscript[C, 2, 4][i], Subscript[C, 3, 4][i], Subscript[C, 4, 4][i], > Subscript[C, 4, 5][i], > Subscript[C, 4, 6][i]}, {Subscript[C, 1, 5][i], > Subscript[C, 2, 5][i], Subscript[C, 3, 5][i], Subscript[C, 4, 5][i], > Subscript[C, 5, 5][i], > Subscript[C, 5, 6][i]}, {Subscript[C, 1, 6][i], > Subscript[C, 2, 6][i], Subscript[C, 3, 6][i], Subscript[C, 4, 6][i], > Subscript[C, 5, 6][i], Subscript[C, 6, 6][i]}} > > > Thank you very much, in advance, for yor help. > Avoid C, its reserved. Use more advanced procedures like Outer and Array with Sort. Outer[Sort[{#1,#2}]&, #, #]&[Range[6]] gives you the Matrix of a list of sorted pairs of indices from Range which is of course symmetric. (Outer[ ( Subscript[k, Sequence @@ Sort[{#1, #2}]] &), #, #] &)[ Range[6]] You can use this method directly in array contructions A = Array[Subscript[k, Sequence @@ Sort[{#1, #2}]] &, {6, 6}] If you have already an array A of expressions, you can symmetrize it later B=1/2 (A+Transpose[A]) For compactness and shielding from simplifikations I prefer number strings as indizes Array[Superscript[k, StringJoin @@ ToString /@ Sort[{#1, #2}]] &, {6, 6}] -- Roland Franzius