Numerical Experiments and Changed Assumptions
These three bounded experiments extend the core labs into numerical judgment. Budget 6–10 hours, included in the module workload. Predict before executing; small Python loops and the offline kit suffice. Save exact and approximate results separately. No plots or timings alone establish a theorem.
1. Scaling, residuals and uncertainty
Use A=[[1,1],[1,10001/10000]] with b=(2,2) and b'=(2,20001/10000). Represent the fractions exactly, solve both, and compute the relative input/output changes. Then scale both A and b by 1/1000 and by 10. Verify that exact solutions, condition numbers and scaled backward errors stay invariant, while raw residuals of an inexact candidate change scale.
Convert the original inputs to float and compare computations with the exact oracle. Attribute differences to the specific source: changed data, rounding, algorithmic error, or intentional approximation. A zero residual for supplied data cannot determine the unknown measurement error.
Acceptance: derived perturbation bound, reproducible table, scale-invariant diagnostics, and a statement of which uncertainty the calculation cannot resolve.
2. Weighting and regularization
Fit a constant to (1,3), first with equal weights, then weights (1,3). Transform the design and response by square-root weights and use the QR solver. Verify the weighted residual condition directly. The answer changes from two to 5/2.
For A=[[1,1],[2,2]], b=(1,2), derive all minimizers and their minimum-norm member. For lambda in {1/10,1,10}, form the ridge augmentation by appending sqrt(lambda) times the identity to A and zeros to b. Both coefficients equal 5/(10+lambda). Check A^T(b−Ax)=lambda*x, not the unregularized orthogonality condition.
Acceptance: objective written before each solve, predicted coefficients, reported penalty convention and an explanation of why changed units can alter the penalty unless it is transformed consistently.
3. Convergence needs hypotheses
Compare power iteration on diag(3,1) from (1,1) and (0,1), and diag(−3,1) from (1,1). Record eigenpair residual, Rayleigh estimate and stopping status. Do not label the second run a dominant-eigenvalue success.
Separately trace Jacobi on the SPD matrix of P18. All-ones errors are multiplied by −3/2, so this iteration diverges. For [[0.5,10],[0,0.5]], calculate the first several powers by multiplication and compare the explicit formula from P12. This nonsymmetric case is a handwritten/loop experiment, outside the symmetric power-iteration API. Explain transient amplification despite eventual decay.
Acceptance: counterexamples to an unjustified convergence claim, a valid replacement statement, and an honest iteration-limit result when convergence is not observed. Future sparse solvers and preconditioners need their own analysis.