6

*Edit 2015: Has this been fixed yet?*

(This is on MMA 7.0.1.0 on OS X)

I've just found a large matrix `m`

for which `NullSpace[m]`

and `NullSpace[m, Method->"OneStepRowReduction"]`

give different answers (the first one is the correct answer).

I put the matrix up at pastebin as won't fit here!

What's going on? How might I guess ahead of time which arguments are going to break `Method->"OneStepRowReduction"`

?

(Update; it seems the bug has got *worse* in 8, rather than better.)

@Mr.Wizard for me, versions 7.0.1 and 9.0.1 (Windows) both give an empty null space. It is possible that this was a Mac OS-specific numerical bug. – Oleksandr R. – 2015-07-30T00:04:05.923

@Oleksandr Thanks working to pin this down. – Mr.Wizard – 2015-07-30T00:05:08.310

On a side note, Mathematica 8 yields an empty list in both cases. I'm going to assume the bug has been fixed. – David – 2012-02-02T00:57:11.913

Could have been either of two bugs in "OneStepRowReduction" when algebraics are present. Both were fixed prior to version 8 release. – Daniel Lichtblau – 2012-02-02T14:47:07.803

No, I think this is a real problem --- and your answers indicate it's got worse in Mathematica 8, not better! The NullSpace should not be empty. Here's the result of RootReduce[NullSpace[m]]: {{Root[3 - 80 #1^2 + 9 #1^4 &, 1], Root[3 - 80 #1^2 + 9 #1^4 &, 4], Root[-3 + 4 #1^2 + 3 #1^4 &, 4], Root[3 - 32 #1^2 + 81 #1^4 &, 3], Root[1 - 38 #1 + 116 #1^2 - 90 #1^3 + 27 #1^4 &, 4], Root[1 + 38 #1 + 116 #1^2 + 90 #1^3 + 27 #1^4 &, 4], Root[-1 + 23 #1^2 + 27 #1^4 &, 3], 1}}, which you can verify really is in the kernel. – Scott Morrison – 2012-02-02T19:08:57.630

@DanielLichtblau, is there any reference for these bugs? I'd like to be able to ascertain which code running in 7 I can or cannot 'trust' (to the extend that trusting Mathematica is ever possible). – Scott Morrison – 2012-02-02T20:04:40.330

@Scott Morrison (1) No reference I'm aware of. (2) I verified that matrix.your_vector has a 97th component of around -10.8. So it's not a serious contender for a null vector. – Daniel Lichtblau – 2012-02-02T22:02:38.023

Thanks for looking into this Daniel. In MMA 7 RootReduce was verifying that m.v was exactly zero; so perhaps the problem is in RootReduce in either 7 or 8? I'll investigate further. – Scott Morrison – 2012-02-13T22:07:22.007