Computation steps in a code?

Hello, I am trying to figure out the detailed steps of the attached computation.

data = {{5, 9}, {8, 15}};
p[x_] := a x + b; 
eqns = Table[p[data[[i, 1]]] == data[[i, 2]], {i, 2}]
 **Result**: {5 a + b == 9, 8 a + b == 15}

Is there a command that lets you see the detailed compute steps? I don’t get how one gets the result. This is an example from the Linear Algebra training module.

Thank you,
Andrew

compute example.nb (3.91 KB)

Check out Trace[].

In this case:

data = {{5, 9}, {8, 15}}; 
p[x_] := a x + b; eqns = 
 Trace@Table[
    p[data[[i, 1]]] == data[[i, 2]], {i, 2}] Result : {5 a + b == 9, 
    8 a + b == 15}

Then:

ToString[%] displays:


"{Table[p[data[[i,1]]] == data[[i,2]], {i, 2}] (Result:{5 a + b == 9, \
8 a + b == 15}), {{{{data (Result:{5 a + b == 9, 8 a + b == 15}), \
{{5, 9}, {8, 15}} (Result:{5 a + b == 9, 8 a + b == 15})}, {i \
(Result:{5 a + b == 9, 8 a + b == 15}), 1 (Result:{5 a + b == 9, 8 a \
+ b == 15})}, {{5, 9}, {8, 15}}[[1,1]] (Result:{5 a + b == 9, 8 a + b \
== 15}), 5 (Result:{5 a + b == 9, 8 a + b == 15})}, p[5] (Result:{5 a \
+ b == 9, 8 a + b == 15}), (a 5 + b) (Result:{5 a + b == 9, 8 a + b == \
15}), {(a 5) (Result:{5 a + b == 9, 8 a + b == 15}), (5 a) (Result:{5 \
a + b == 9, 8 a + b == 15})}, (5 a + b) (Result:{5 a + b == 9, 8 a + \
b == 15})}, {{data (Result:{5 a + b == 9, 8 a + b == 15}), {{5, 9}, \
{8, 15}} (Result:{5 a + b == 9, 8 a + b == 15})}, {i (Result:{5 a + b \
== 9, 8 a + b == 15}), 1 (Result:{5 a + b == 9, 8 a + b == 15})}, \
{{5, 9}, {8, 15}}[[1,2]] (Result:{5 a + b == 9, 8 a + b == 15}), 9 \
(Result:{5 a + b == 9, 8 a + b == 15})}, (5 a + b == 9) (Result:{5 a \
+ b == 9, 8 a + b == 15})}, {{{{data (Result:{5 a + b == 9, 8 a + b == \
15}), {{5, 9}, {8, 15}} (Result:{5 a + b == 9, 8 a + b == 15})}, {i \
(Result:{5 a + b == 9, 8 a + b == 15}), 2 (Result:{5 a + b == 9, 8 a \
+ b == 15})}, {{5, 9}, {8, 15}}[[2,1]] (Result:{5 a + b == 9, 8 a + b \
== 15}), 8 (Result:{5 a + b == 9, 8 a + b == 15})}, p[8] (Result:{5 a \
+ b == 9, 8 a + b == 15}), (a 8 + b) (Result:{5 a + b == 9, 8 a + b == \
15}), {(a 8) (Result:{5 a + b == 9, 8 a + b == 15}), (8 a) (Result:{5 \
a + b == 9, 8 a + b == 15})}, (8 a + b) (Result:{5 a + b == 9, 8 a + \
b == 15})}, {{data (Result:{5 a + b == 9, 8 a + b == 15}), {{5, 9}, \
{8, 15}} (Result:{5 a + b == 9, 8 a + b == 15})}, {i (Result:{5 a + b \
== 9, 8 a + b == 15}), 2 (Result:{5 a + b == 9, 8 a + b == 15})}, \
{{5, 9}, {8, 15}}[[2,2]] (Result:{5 a + b == 9, 8 a + b == 15}), 15 \
(Result:{5 a + b == 9, 8 a + b == 15})}, (8 a + b == 15) (Result:{5 a \
+ b == 9, 8 a + b == 15})}, {5 a + b == 9, 8 a + b == 15} (Result:{5 \
a + b == 9, 8 a + b == 15})}"

Hello Mike,
Thank you very much!
Andrew

Hello Mike,

Thanks very much for your help! I was hoping these new commands would help me sort out the compute logic.

But I am not seeing what I was hoping to see:

  • How is “i” counted, from 1 to ?
    data[[i,1]] is ?
    data[[i,2]] is ?

Thanks,
Andrew

Hi Andrew,

Another way to generate the equations. It has the advantage that it does not need hardcoded part indices and iteration variables, so it is easier to extend to more dimensions, and the Trace is much easier to understand.

MapThread[p[#1] == #2 &, Transpose@data]
(* {5 a + b == 9, 8 a + b == 15} *)

Trace[MapThread[p[#1] == #2 &, Transpose@data]] // TableForm

Thank you very much!
Andrew