# Forming a 2D table with conditions with a function

I have a function which can be represented as a weighted sum of parameters f(m, n). Where m & n have values 1 - 10.

F = A1* f(1, 2) + A2* f(2, 3) + A3* f(3, 1) + ....


I want to use this F to form a 2D table such that

T = Table[F, {i, 1, 10}, {j, 1, 10}]


with conditions such that for (i, j)th element of table

If i = m && j = n -> f(m, n) = 5,
If i = n && j = m -> f(m, n) = -5
otherwise f(m, n) = 0


To elaborate, for the {2, 3}th element of this table, f(2, 3) should be replaced by 5, f(3, 2) by -5 and other f terms by 0.

How can I do it. Could If function be used with table ?? I could not make it work. Will appreciate any suggestion.. Thanks

• may be I am missing something. But where does m and n come from in the code you show? And what is f(f(m, n)) – Nasser Sep 25 '17 at 19:35
• f(m, n) is a general representation of components f(1, 2), f(2, 3) etc. Hope it explains... – user49535 Sep 25 '17 at 19:55
• but what is n and m in the code? You show i and j only. Are n and m separate input? – Nasser Sep 25 '17 at 19:56
• so in this example you just typed, is m=1 and n=2 ? If so, please edit your question and clarify that n and m are extra input. – Nasser Sep 25 '17 at 20:04
• Yes.. Let me simplify. Lets say f = f(1, 2) + f(1, 3) + f(2, 3). I want to make a 2D table with f such that indices i = 1 - 3 and j = 1 - 3. Now each element of table will represented by a {i, j} set. What I need is that for the element represented by i = 1; j = 2 f(1, 2) = 5 and so on.. – user49535 Sep 25 '17 at 20:05

To elaborate, for the {2, 3}th element of this table, f(2, 3) should be replaced by 5, f(3, 2) by -5 and other f terms by 0.

I do not know if this what you want or not

ClearAll[f,i,j]
f[i_,j_]/;i<j:=5
f[i_,j_]/;j<i:=-5
f[i_,j_]:=0
(T0=Table[f[i,j],{i,1,10},{j,1,10}])//MatrixForm


But different constants multiplied to f parameters in F should make sure that elements of matrix are multiple of 5 & -5, not 5 and -5.

To multiply each entry by A constant, you need to provide the corresponding A constants to use. Here is an example, using random generated constants.

ClearAll[f,i,j]
f[i_,j_]/;i<j:=5 * A0[[i,j]]
f[i_,j_]/;j<i:=-5*A0[[i,j]]
f[i_,j_]:=0
A0=RandomInteger[10,{10,10}];
(T0=Table[f[i,j],{i,1,10},{j,1,10}])//MatrixForm


Update Ref comment

Here is a much easier example and expected o/p for F= 5*f(1, 3)+6*f(2, 3)+4*f(1, 2) T = Table[F, {i, 1, 3}, {j, 1, 3}]; Should give T = {{ 5*0+6*0+4*0, 5*0+6*0+4*5, 5*5+6*0+4*0}, { 5*0+6*0+4*(-5), 5*0+6*0+4*0, 5*0+6*5+4*0}, { 5*(-5)+6*0+4*0, 5*0+6*(-5)+4*0, 5*0+6*0+4*0}} on simplification – T = {{0, 20, 25}, {-20, 0, 30}. {-25, -30 0}}

Ok, may be this is what you want now? You need a way to specify the constants and the entries they affect. I am still not sure if this is what you want

ClearAll[i,j]

(*this A0 encodes the input:  5*f(1, 3)+6*f(2,3)+4*f(1, 2) *)
A0={{5,{1,3}},{6,{2,3}},{4,{1,2}}};

T0=Table[0,{i,1,3},{j,1,3}];
makeEntry[{A0_,{i_,j_}}]:=
(T0[[i,j]]=If[i<j,5*A0,If[i>j,-5*A0,0]];T0[[j,i]]=-T0[[i,j]]);

makeEntry[#]&/@A0;
MatrixForm[T0]


• Let me understand it, could be a way forward. But different constants multiplied to f parameters in F should make sure that elements of matrix are multiple of 5 & -5, not 5 and -5. – user49535 Sep 25 '17 at 20:35
• @user49535 I added the constants. – Nasser Sep 25 '17 at 20:44
• Here is a much easier example and expected o/p for F= 5*f(1, 3)+6*f(2, 3)+4*f(1, 2) T = Table[F, {i, 1, 3}, {j, 1, 3}]; Should give T = {{ 5*0+6*0+4*0, 5*0+6*0+4*5, 5*5+6*0+4*0}, { 5*0+6*0+4*(-5), 5*0+6*0+4*0, 5*0+6*5+4*0}, { 5*(-5)+6*0+4*0, 5*0+6*(-5)+4*0, 5*0+6*0+4*0}} on simplification – T = {{0, 20, 25}, {-20, 0, 30}. {-25, -30 0}} – user49535 Sep 25 '17 at 20:54
• Thanks. if you look this easier ex, for {1, 1} element of matrix - f(1, 3) = f(2, 6) = f(1, 2) = 0. For {1, 2}th element only f(2, 1) = -5, others are 0. For {1, 3}th element f(1, 3) = 5 while others are 0..and so on... – user49535 Sep 25 '17 at 21:00
• Thanks, but seems I am not able to explain the problem properly. It is not related to setting different value for f if indices m>n, n> m and n = m. It is about setting different values to a variable in different elements of a table. Let me try with even easier example. Lets take F = 24 + x. Now if I use Table[F, {i, 1, 3}]. O/P will be {24+x, 24+x, 24+x}. What I want is to give different independent values to x for i = 1, 2 and 3. For ex- If[i == 1, x = 2, If[i == 2, x = 4, If[i == 3, x = 5, 0]]]. Hence the output will be {24+2, 24+4, 24+5} or {26, 28, 29}. Appreciate all help. – user49535 Sep 26 '17 at 14:10