Неверно, что AB и BA ВСЕГДА будут давать разные результаты. Правило состоит в том, что умножение матриц некоммутативно, но не исключительно некоммутативно. Это означает, что, хотя в некоторых случаях, например, в вашей программе, A B и B A дают одинаковый результат, это не всегда так. И обычно это не так, у вас просто есть образцы матриц, которые делают это.
Правило гласит: "A (B C) = (AB) C", что является ассоциативное свойство умножения матриц. Но код, который у вас есть, по сути делает "BCA = AB C". Поскольку умножение матриц не является коммутативным, вам нужно поставить «A» слева от «(B C)» следующим образом: a.mult(b.mult(c))
a.mult(b.mult(c)).equals((a.mult(b)).mult(c))
Правило гласит: «A (B + C) = AB + A C», что является распределительным свойством. Ваш код делает "(A + B) C = (A C) (B C)". Это должно быть слегка переписано.
Правило гласит: "(2A) B = 2 (AB) = A (2B)". Ваш код делает "(A + B) C = AB + B C". Этот код не связан с этим правилом и выглядит как число 7.