Possible Duplicate:

Why don’t * and ^ work as I expected on matrices?

When I enter this

Inverse[{{-112, 49, 2, 283}, {-138, 5, 3, 359}, {-20, 0, 0, 6}, {-40, -20, 0, 12}}] *

{{-112, 49, 2, 283}, {-138, 5, 3, 359}, {-20, 0, 0, 6}, {-40, -20, 0, 12}}

I don’t get the identity matrix, but this output:

Can anybody explain why and how I can fix it?

=================

=================

1 Answer

1

=================

You need to use Dot for matrix multiplication; * gives element-wise multiplication.

mat = {{-112, 49, 2, 283}, {-138, 5, 3, 359}, {-20, 0, 0, 6}, {-40, -20, 0, 12}} ;

Dot[mat, Inverse[mat]]

(* {{1, 0, 0, 0}, {0, 1, 0, 0}, {0, 0, 1, 0}, {0, 0, 0, 1}} *)

4

The OP’s confusion might be due to the fact that in MATLAB, * performs matrix multiplication, while .* performs Hadamard multiplication. In Mathematica, OTOH, * is Hadamard multiplication, while . is the operator for matrix multiplication. Common trip-up…

– J. M.♦

Sep 10 ’12 at 8:32