3 ms·
Arguably LU / LDLT factorizations before solving the direct system are the more elegant / beautiful / simpler answers if you take the algorithm at face value. H
by ThatGeoGuy 10y ago
Arguably LU / LDLT factorizations before solving the direct system are the more elegant / beautiful / simpler answers if you take the algorithm at face value. However, large-dimension matrix inversion has problems outside of just beauty. Part of the problem is that we don't have fast, perfect representations of real or complex numbers. At best we have double precision floating points, which means that when you take the adjoint over the determinant, you're looking at a lot of error.
That's not to say that the implementations of these have to be ugly or that our current BLAS / LAPACK / whatever can't be improved. There's a lot of room for improvement in this space, but the fact that they're 1. fast and 2. well tested and robust means that improving these sorts of interfaces come with baggage. People complain about the wheel being reinvented every time somebody invents a new Javascript framework, but could you imagine if this same problem applied to BLAS and other high performance math libraries? (Arguably, at least then we'd have more choices in math space)
- effie 10y ago> Part of the problem is that we don't have fast, perfect representations of real or complex numbers. We'll probably never have perfect representation of real numbers, but Gustafson's unums seem to be the next best thing that can actually make a difference. His examples of how unums can solve the trickiest numerical challenges are impressive. http://insidehpc.com/2015/03/slidecast-john-gustafson-explains-energy-efficient-unum-computing/ http://insidehpc.com/2015/03/slidecast-john-gustafson-explai... http://radiofreehpc.com/tmp/TheEndofErrorSampleChapter.pdf http://radiofreehpc.com/tmp/TheEndofErrorSampleChapter.pdf
- pmarreck 10y agoI avoid floating point wherever possible (especially after reading "What Every Programmer Needs To Know About Floating Point") and just use large integers. Not sure if the particular math in question here can be modified to use large integers...