posted on: 2019-10-08 08:06:21
This is a short test to try out eigen, and create some notes.

The first thing is the multiplication test. What is the matrix ordering.

We populate a new matrix with k(slow, fast) iterations.

```    for(int i = 0; i<9; i++){
k(i/3, i%3) = i*0.1;
}
```

So if we print our matrix k(i, j), where j is fast we should get a counting right to left across rows. 1, 2 \n 3, 4. Then we create a vector to check the multiplication.

```    Vector3d v1(0.5, 0.25, 0.125);

VectorXd v2 = k*v1;

for(int i = 0; i<3; i++){
for(int j = 0; j<3; j++){
printf("%f\t", k(i, j));
}
printf("%f\t: %f\n", v1(i), v2(i));

}
```

The output is as we expect:

```0.000000	0.100000	0.200000	0.500000	: 0.050000
0.300000	0.400000	0.500000	0.250000	: 0.312500
0.600000	0.700000	0.800000	0.125000	: 0.575000
```

First index is the row.

Does assigning/mapping 1D arrays to matrixes do the same order? Is matrix-matrix multiplication as we expect. m1(3,3) * m2(3, 2) = m3(3, 2)?

```    MatrixXd k2(3,2);
k2 << 0.1, 0.2, 0.3, 0.4, 0.5, 0.6;

MatrixXd o = k * k2;

for(int i = 0; i<3; i++){
for(int j = 0; j<3; j++){
printf("%f\t", k(i, j));
}
printf("| %f, %f\t: %f, %f\n", k2(i, 0), k2(i, 1), o(i, 0), o(i, 1));

}
```

Produces the following output.

```0.000000	0.100000	0.200000	| 0.100000, 0.200000	: 0.130000, 0.160000
0.300000	0.400000	0.500000	| 0.300000, 0.400000	: 0.400000, 0.520000
0.600000	0.700000	0.800000	| 0.500000, 0.600000	: 0.670000, 0.880000
```