0

I am trying to show that two matrices are the same.

One matrix has random elements drawn from a distribution of ${(-0.75,-0.25,0,0.25,0.75,0.95)}$, while the other has values with imaginary parts too (but they are close to the entries ${(-0.75,-0.25,0,0.25,0.75,0.95)}$). In fact, they need to be the same when I approximate the matrix with imaginary elements.

I have tried both N and Round but, when using Round, the elements of the matrix with complex entries approximate to 1, -1.

Hence, what command shall I use so that the two matrices are the same?

  • You may want to use Re to only get the real parts of the second matrix? – Carl Lange Feb 19 '19 at 22:37
  • Yes. That works. I used Chop as well to approximate the very small values to 0. However, when I try to test it, it does not give me the answer "True" or "False". I am using MatrixForm[A]==MatrixForm[B]. Does the command not work for matrices? –  Feb 19 '19 at 22:54
  • 1
    MatrixForm should be used only for display: https://mathematica.stackexchange.com/questions/3098/why-does-matrixform-affect-calculations and https://mathematica.stackexchange.com/questions/18393/what-are-the-most-common-pitfalls-awaiting-new-users/18395#18395 detail that. A == B is what you're looking for. – Carl Lange Feb 19 '19 at 22:56
  • What I did precisely is: $"Re[B]==A"$. When not using MatrixForm, it says it is false. I double-checked and both A and B are defined as a list. I checked it visually and the two are the same. –  Feb 19 '19 at 23:02
  • Please update your question with copy-pasteable code so that we can see exactly what we're working with :) – Carl Lange Feb 19 '19 at 23:09
  • I will send you a message! –  Feb 19 '19 at 23:50
  • Sorry, I am not able to continue this discussion - please consider whether the answer @John Doty has posted solves your problem, and mark it as accepted if so :) – Carl Lange Feb 20 '19 at 22:18

1 Answers1

1

Make a matrix:

m = {{0., -1.}, {1., 0.}}

Put in some small imaginary parts:

mapp = m + I 10^-10

Check for equality:

m == mapp
(* False *)

Mathematica has heuristics for approximate equality. If they aren't working for your specific problem, you may have to come up with a better measure, for example:

Norm[m - mapp] < 10^-9
(* True *)
John Doty
  • 13,712
  • 1
  • 22
  • 42