M1 := Mat([[0, 0, -0.079, -0.018],[0, 0, 0.032, -0.012], [1, 0, 1.056, -0.012],[0, 1, -0.060, 1.025]]);
M2 := Mat([[0, -0.063, 0, -0.018],[1, 1.026, 0, -0.012], [0, 0, 0, -0.012], [0, 0, 1, 1.025]]);
M1 := Transposed(M1);
M2 := Transposed(M2);
Result := Num.SimDiag([M1,M2],10);
Dec(Result[2]*M1*Result[1],3);
Dec(Result[2]*M2*Result[1],3);
Mat([
["0.062", "0.016", "0.000", "0.006"],
["0.021", "0.030", "-0.002", "-0.000"],
["0.000", "0.005", "1.006", "-0.035"],
["-0.000", "-0.000", "-0.031", "0.982"]
])
-------------------------------
Mat([
["0.048", "0.000", "0.030", "-0.005"],
["0.000", "0.991", "-0.002", "-0.021"],
["0.020", "0.005", "0.029", "-0.000"],
["0.000", "-0.030", "-0.000", "0.982"]
])
-----------------------------
|