Exercise 3: Why "Always Pivot and Every System Is Reliable" Is Wrong — Possible Solution ==================================================================== WHAT PARTIAL PIVOTING ACTUALLY FIXES ------------------------------ This chapter verified partial pivoting completely resolved the 10^-16-pivot example, dropping x's relative error from about 122% down to about 10^-16. But that system's underlying problem was well-conditioned - its true solution was not especially sensitive to small changes in the input coefficients. The only thing wrong with it was the ORDER in which Gaussian elimination happened to process the rows, which produced an unnecessarily huge multiplier. Pivoting fixes exactly this kind of problem, because it's a property of the algorithm's own behavior (Chapter 5's territory), and choosing a different row order is a real, available fix. WHY THE SECOND WORKED EXAMPLE SHOWS THE LIMIT OF THAT FIX ------------------------------ This chapter's near-singular matrix example (reused from Chapter 6) had a condition number of about 40,004 - meaning the TRUE, exact solution to that system is itself extremely sensitive to small changes in the input coefficients, independent of how the arithmetic is organized. Pivoting only changes which row gets used as the pivot at each step; it does not change the matrix's own determinant, inverse, or condition number in any way. Applying partial pivoting to that near-singular system would correctly carry out the elimination without introducing any unnecessary extra rounding error of its own - but it still couldn't produce a trustworthy answer, because the true answer itself moves enormously for a tiny change in the inputs, and no amount of careful bookkeeping during elimination changes that underlying fact. THE CORRECTED CONCLUSION ------------------------------ Partial pivoting reliably fixes algorithm-level instability - it should indeed be used essentially always, since it costs little and never makes things worse. But it does not make every linear system "solved reliably" in the sense of guaranteeing a trustworthy answer, because it has no effect on a system's own inherent conditioning. A complete, honest practice is: always pivot (to eliminate the algorithm-level risk this chapter demonstrated), AND separately check the system's condition number (to detect the problem-level risk Chapter 6 demonstrated) before trusting the result, since these are two independent risks that require two independent countermeasures. WHY THIS WORKS AS AN ANSWER ------------------------------ The explanation credits pivoting with what it genuinely fixes (the first worked example) rather than dismissing it, then uses this chapter's own second worked example to show a case pivoting cannot help with, and arrives at a corrected, more complete recommendation that treats stability and conditioning as two separate things to check, matching the chapter's own explicit side-by-side comparison.