Barry W. Peyton Created 2026-10-13 Updated 2026-11-05
Coauthor with Jean R. S. Blair of a treatment of chordal graphs and junction trees, explaining how graph structure supports sparse matrix computations.[ref]
An Introduction to Chordal Graphs and Clique Trees by Jean R. S. Blair and others. author attribution and the named work’s subject
CLIME precision-matrix estimator Created 2026-10-03 Updated 2026-10-05
The constrained minimization estimator minimizes subject toIts constraints and objective separate by columns. Feasibility of the true precision matrix and elementary matrix-norm inequalities yield entrywise error bounds under an entrywise covariance-estimation bound.
Compressed sparse storage Created 2026-10-14 Updated 2026-10-31
Compressed sparse storage keeps a sparse matrix as numerical nonzero values, their row or column indices, and pointers to the start of each compressed column or row. It avoids allocating all entries. A sparse direct solver must additionally allocate possible fill-in predicted by symbolic factorization, because elimination can create entries absent from the input.
Fill-in Created 2026-10-14 Updated 2026-10-18
Fill-in consists of new nonzero positions created by Gaussian elimination, absent from the original sparse matrix in the same ordering. For a Cholesky decomposition , compare with the lower triangle of , not with the unpermuted input. Each new undirected edge of the elimination graph contributes one structural position in . The sparse elimination of a four-leaf star gives six such positions when the center is eliminated first, and none when the leaves are eliminated first.
Symbolic factorization predicts possible nonzeros from the pattern alone. An initially zero becomes nonzero in a single scalar step if both and are nonzero; however, at later steps several contributions can cancel. For an exact example, letEliminate indices in that order. The first Schur complement, in order , isThe second pivot element updates the entry to . The remaining block is , so all four pivot elements are positive and is a symmetric positive-definite matrix. The elimination graph retains the structural edge , but this exact choice of coefficients makes the numerical entry vanish. A small change to generally removes the cancellation.
Such an exact zero is different from discarding a small value computed with floating-point arithmetic. The symbolic factorization deliberately reserves space for possible entries without depending on special numerical identities. A perfect elimination ordering creates no structural fill-in at all; an ordering with cancellations need not have that property.
Finite element method Created 2026-09-28 Updated 2026-10-14
The finite element method replaces an infinite-dimensional weak formulation by finitely many unknowns attached to a finite element mesh. Simple local functions, often piecewise polynomial functions, join to form a global approximation. The attraction is that each finite element can be integrated separately, while the assembled equations enforce a global balance. A piecewise-linear hat function only meets its immediate neighbors, so a large problem can have a sparse matrix rather than a dense one. Gilbert Strang's MIT lecture develops this connection from the one-dimensional weak formulation through local hats to the stiffness matrix and load integrals.[ref]
https://ocw.mit.edu/courses/18-085-computational-science-and-engineering-i-fall-2008/676ba0a00eef45a6cb3823c4da61ee11_18-085F08-L18.pdf. Gilbert Strang, MIT 18.085, Lecture 18: Finite Elements in 1D, transcript pp. 2–8, 2008; accessed 2026-10-11
For the conforming Galerkin method, let be a real Hilbert space, a bounded coercive bilinear form, and a bounded linear functional. Given a conforming finite element space , the continuous and discrete problems areWriting in a basis of gives the linear systemHere is the stiffness matrix and is the vector of loads tested against the basis functions. The Galerkin method uses the same trial and test space in this construction. Finite element methods also use the Petrov-Galerkin method, with different trial and test spaces; testing against the trial space is therefore a property of this construction, rather than a definition of every finite element method.
The finite element solution of the one-dimensional Poisson equation below gives every entry explicitly. Refining the finite element mesh then improves the approximation by adding local degrees of freedom. For a symmetric coercive bilinear form, Galerkin orthogonality makes the discrete solution the best approximation in the energy norm; the geometry of orthogonal projection explains why this local construction yields a globally meaningful answer.
Gauss-Seidel method Created 2026-10-05 Updated 2026-10-18
With , the Gauss-Seidel method solves . It uses each newly computed coordinate immediately in the remaining triangular solve. It is successive over-relaxation with parameter one, and converges from every start when is a symmetric positive-definite matrix.
To solve a linear system , split its matrix into the diagonal matrix and the strictly lower and upper parts , retaining their actual signs. Every diagonal entry must be nonzero. A sweep updates coordinates in order:The Jacobi method uses the old vector throughout; the Gauss-Seidel method reuses each fresh coordinate. Thus the update order is part of the method.[ref]
Notes for Ma221 Lecture 21, Nov 10 2009. Math 221, Matrix Computations, Fall 2009; Gauss-Seidel: component loop, splitting and update-order remark, web lines 372–380
The matrix splitting has , , so its iteration matrix isCompute the update by forward substitution with the lower triangular matrix , rather than forming a matrix inverse. For a sparse matrix, a sweep only visits stored entries and can overwrite the working vector. Dependencies on fresh coordinates constrain parallel execution. This makes the Gauss-Seidel method an inexpensive solver component, including in a multigrid method.[ref]
Notes for Ma221 Lecture 21, Nov 10 2009. Math 221, Matrix Computations, Fall 2009; Basic iterative methods, cheap splitting requirement; Gauss-Seidel loop and red-black ordering; opening list of solver building blocks
George S. Lueker Created 2026-10-13 Updated 2026-11-05
George S. Lueker coauthored research on graph representations of vertex elimination. The work connects a combinatorial ordering problem with the computational fill produced by sparse matrix factorization.[ref]
Algorithmic Aspects of Vertex Elimination on Graphs by Donald J. Rose and others. author attribution and the described mathematical development
Portrait of George S. Lueker
. External portrait hosted by University of California, Irvine. Source. Gershgorin circle theorem Created 2026-09-24 Updated 2026-10-18
The Gershgorin circle theorem locates every eigenvalue of a square matrix using only its entries. A diagonal entry supplies a centre in the complex plane, and the sum of the off-diagonal absolute values in its row supplies a radius. Small off-diagonal couplings therefore confine the eigenvalues near the diagonal entries. This turns a global eigenvalue problem into a picture built one row at a time.
Precisely, let , with , and define the closed Gershgorin discsEvery eigenvalue of satisfies , including eigenvalues on the boundaries. No symmetry or diagonalizability is required. Despite the name, the theorem uses filled disks, not just their circular boundaries.[ref]
https://www.stat.uchicago.edu/~lekheng/courses/302/notes2.pdf. Gene H. Golub, CME 302: Numerical Linear Algebra, Lecture 2, §6, 2005; notes by James Lambers, edited by Lek-Heng Lim
The short reason is the triangle inequality. For a nonzero eigenvector with , choose with . The th row givesThus the largest eigenvector coordinate identifies a Gershgorin disc containing , even though that eigenvector need never be computed to use the bound.
This is useful when a full eigenvalue computation would be expensive: forming the Gershgorin discs needs one pass over the nonzero entries of a sparse matrix. If lies outside every Gershgorin disc, then is an invertible matrix, since zero is not an eigenvalue. The condition is exactly in every row, namely strict diagonal dominance. This connects diagonal dominance to solvability of a linear system; the inverse infinity-norm bound from diagonal dominance adds a quantitative bound. It is a sufficient test: failure to exclude zero does not prove singularity.
For a concrete symmetric matrix, takeThe three Gershgorin discs have centres and are pairwise disjoint. The finite-dimensional spectral theorem makes the eigenvalues real, so their possible locations reduce to the intervals , , and . Gershgorin eigenvalue counting gives exactly one eigenvalue in each. Independently, the characteristic polynomial iswhose numerical polynomial roots are , , and , rounded to six decimal places. All are positive, as Gershgorin bounds for symmetric matrices already guarantee without finding those polynomial roots.
Three separated Gershgorin discs, each containing one real eigenvalue of the symmetric example
. Details. S. Gerschgorin published the result in 1931 in Über die Abgrenzung der Eigenwerte einer Matrix, in the Bulletin de l'Académie des Sciences de l'URSS, issue 6, pages 749–754. The original paper's §2 states both eigenvalue inclusion and counting in separated groups of Gershgorin discs; §3 already discusses column bounds and transformations preserving the eigenvalues. Thus both the localization picture and ways to sharpen it were part of the original development.[ref]
https://www.mathnet.ru/php/getFT.phtml?jrnid=im&paperid=5235&what=fullt&option_lang=eng. S. Gerschgorin, Über die Abgrenzung der Eigenwerte einer Matrix, 1931, pp. 749–754; original German paper in the journal archive
Graphical Lasso Created 2026-09-24 Updated 2026-10-03
The graphical Lasso estimates a sparse precision matrix by minimizing a Gaussian negative log-likelihood plus an entrywise penalty.
Jacobi method Created 2026-09-24 Updated 2026-10-31
The Jacobi method solves a linear system by updating every coordinate from the same old vector. It requires every diagonal entry to be nonzero. Isolating coordinate in row gives the simultaneous ruleHere is the iteration matrix. A sweep computes a complete new vector before replacing the old one, so its coordinate updates can run independently.[ref]
Notes for Ma221 Lecture 21, Nov 10 2009. Math 221, Matrix Computations, Fall 2009; Jacobi: component loop and splitting immediately before Gauss-Seidel
For a sparse matrix, a sweep needs work proportional to the stored nonzero entries, while Gaussian elimination may create fill-in. The Jacobi method is therefore a simple starting point for large linear systems, and the weighted Jacobi method supplies a useful building block of a multigrid method. Its beauty is that a local row correction becomes a global eigenvalue question: the convergence criterion for a stationary iteration is exactly .
Low-rank approximation 2026-10-14
A low-rank approximation replaces an matrix by a matrix of matrix rank at most a chosen integer , with , while making an explicitly chosen error norm small. The point is to describe many entries using a few shared patterns: an image compression may retain broad brightness patterns while discarding finer ones. The approximation is useful when the saved storage or computation justifies the lost detail. A small matrix rank alone says nothing about the error.
The compact representation is a sum of outer products, equivalently a product of two thin matrices:Here are the columns of , and the star denotes the conjugate transpose; over the real numbers use the transpose. The rank bound for a matrix product gives . Conversely, choose a basis of the column space of as the columns of , and put the coordinates of each column of into ; pad with zero columns if the matrix rank is smaller than . Each nonzero outer product is a rank-one matrix: it repeats a single column pattern at different strengths across the columns.
Keeping the two factors stores scalars instead of . This saves space only when . The usual singular value decomposition representation stores scalars because it keeps the singular values separately; absorbing them into one factor removes that extra array. These are representation sizes at equal scalar precision, before file overhead. See Uschmajew and Vandereycken, §9.2: thin factors and their storage, and Illinois CS 357, Low-rank approximation: storing singular vectors and values.
The factors also give without forming the full matrix . Direct evaluation uses scalar multiplications, compared with for a dense matrix applied to a vector. For , the two factors contain scalars rather than , and the same counts describe these multiplication costs. Constructing the factors is a separate cost. Moreover, a low-rank approximation need not be a sparse matrix: the constant matrix whose entries are all has matrix rank despite having no zero entries.
For the standard unweighted problem, write a singular value decomposition with and singular values . Retain the first paired left singular vectors and right singular vectors:The Eckart-Young-Mirsky theorem says that this same minimizes both of the following error norms over all matrices with matrix rank at most :where and an empty sum is zero. Here the Frobenius norm is , whereas the operator norm is specifically induced by the Euclidean norm, . The first aggregates errors in all entries; the second bounds the worst output error for a unit vector input. These formulas apply to real and complex matrices. [ref]
https://math.uchicago.edu/~may/REU2016/REUPapers/Mazeika.pdf. Mazeika, §§4.1 and 4.3: norms and optimal singular-value truncation
For , a relative Frobenius norm tolerance is met precisely when the discarded squared singular values sum to at most . Thus one can choose the smallest suitable before reconstructing the matrix. Many individually small discarded singular values can still have a large combined error. An operator norm tolerance instead tests only the largest discarded singular value, . The two questions can therefore select different ranks.
The following stipulated matrix makes the tradeoff visible. Define four real vectors of length :The vectors are orthonormal, so this is already a singular value decomposition written as outer products, with positive singular values . All entries lie between and and can be displayed as brightnesses. The first component is uniform brightness, the second distinguishes broad blocks, and the last two supply finer alternating patterns. This is a designed arithmetic example, not measured image data.
Here has every entry equal to , while has entries within the two diagonal blocks and in the other two blocks. For instance, becomes : its error is . The full residual is , whose Frobenius norm is and whose operator norm is . Since , the relative Frobenius norm error is . Two thin factors use scalars, or if the normalized left singular vectors, right singular vectors, and singular values are stored separately, instead of dense entries.
Retaining three components reduces the Frobenius norm error to while using scalars in two factors. Retaining all four reconstructs exactly but uses scalars, giving no saving in this generic representation; keeping the singular values separately uses . Our particular sign patterns could be encoded more economically, but that would exploit an additional structure beyond the general low-rank approximation. The striking feature is that numerical error and storage can both be read from the decomposition, rather than judged only by how smooth the picture looks.
The constraint is deliberately matrix rank at most . The truncation has . If , the best approximation is itself, with zero error. Requiring matrix rank exactly can destroy attainment: for and , the matrices have matrix rank for , and both error norms equal . Their error has infimum zero, but no rank-two matrix attains it. If , the displayed does have matrix rank exactly and attains the same minimum under either constraint.
Optimality also does not always mean uniqueness. For , the best Frobenius norm approximation is unique when . [ref]
https://link.springer.com/chapter/10.1007/978-3-030-31351-7_9. Uschmajew and Vandereycken, Theorem 9.1: uniqueness across a singular-value gap
A positive tie across the cutoff permits different choices: for and , both and have Frobenius norm error and operator norm error . More generally, is optimal for every real unit vector in the first two coordinate directions. Rotating which tied direction is kept changes the approximation. Repeated singular values entirely inside the retained group do not change its sum of outer products. At the only feasible matrix is zero; at the unique zero-error approximation is , even if some singular values are tied at zero.A strict gap does not guarantee uniqueness for the operator norm. For and , every with has matrix rank and error , which is optimal. Only minimizes the Frobenius norm, since . An unchanged worst direction can hide extra error in another direction under the operator norm.
Finally, these guarantees concern the stated norms and the sole matrix rank constraint. They do not establish that a discarded pattern is noise or irrelevant to a particular task: the finer patterns in our constructed example were put there intentionally. Adding entrywise weights or restrictions on the factors changes the problem, so the Eckart-Young-Mirsky theorem above does not automatically solve it. For historical context, the original 1936 matrix problem is documented in the existing Eckart-Young-Mirsky theorem section.
Matrix graph 2026-10-14
For a symmetric sparse matrix, its matrix graph has one vertex per unknown and an edge whenever the off-diagonal entry is structurally nonzero. Simultaneous row and column permutation relabels this graph. Nonsymmetric patterns are instead represented by directed or bipartite graphs when row and column roles must be distinguished.
Numerical linear algebra Created 2026-09-24 Updated 2026-10-14
Past exam of the mathematics course of the University of Cambridge 2006 iii Paper 68 7 Solution Created 2026-10-03 Updated 2026-10-14
A Mehrstellen method gains accuracy by exploiting the differential equation in the local truncation error of a compact finite difference method stencil. The extra nearby values alone do not guarantee higher order: one must also modify the source term. Consider on a square with prescribed Dirichlet boundary data, using the same spacing in both directions.
For comparison, the five-point Laplacian has expansionIts leading error is not a multiple of , because the mixed fourth derivative is missing. To obtain an isotropic leading error, consider a symmetric nine-point finite-difference stencil with weight on each axial neighbor, on each diagonal neighbor, and on the center, all divided by . Vanishing on constants and consistency of a numerical method require and . Taylor expansion then gives the fourth-derivative contributionFor this to equal we must choose , hence , . The resulting nine-point finite-difference stencil operator isIts expansion, retaining the next term for later use, isThus by itself is second order on a general function. On a Poisson equation solution, however, . Approximating this known source derivative by gives the fourth-order Mehrstellen method equationEquivalently, its two stencils areThe normalized local truncation error is , since . If the equation is multiplied by , the row residual is ; this change of normalization does not make the solution sixth order. The fourth-order correction of the nine-point Poisson stencil retains only the closest axial and diagonal unknowns. A fourth-order one-dimensional second derivative instead uses , widening the unknown stencil and introducing negative outer weights. Mehrstellen method accuracy is obtained by correcting known source values rather than widening that unknown stencil.
The compact scheme has useful stability and solvability properties. With homogeneous Dirichlet boundary data, is symmetric, has positive diagonal and nonpositive off-diagonal entries, and is a positive definite symmetric operator. Indeed its quadratic form is a sum of positive edge weights times squared differences, with boundary values set to zero. Vanishing of this sum would force a constant on the connected grid and then zero by connection to the boundary. Consequently the Dirichlet boundary condition linear system has a unique solution. The same weights give a discrete maximum principle: if at every interior node and on the boundary, a positive maximum inside would make every weighted difference to its neighbors nonpositive. Equality forces the maximum to propagate to the boundary, which is impossible. Thus everywhere.
This also turns consistency of a numerical method into a quantitative convergence result, rather than merely suggesting an order. Let , let be the normalized residual of the exact solution, and set . Exact Dirichlet boundary data imply on the boundary and . On the unit square the quadratic barrierhas exactly, is nonnegative on the boundary, and has maximum . If , then and , while both comparison functions are nonpositive on the boundary. The discrete maximum principle provesThis is maximum-norm convergence of the corrected nine-point Poisson scheme. It requires sufficient smoothness of the solution up to the boundary for the uniform truncation bound. On other domains the source and boundary closures must retain the required accuracy; boundary singularities can invalidate a smooth-solution order estimate.
The same expansion reveals how to add still more accuracy. Differentiating givesThus the sixth derivatives appearing in the term can also be expressed solely through the source. With exact source derivatives,is the sixth-order source correction of the nine-point Poisson stencil, with normalized residual . If source derivatives are replaced by differences, must be approximated through fourth order and the fourth derivatives through second order to retain that accuracy. The unknowns still occupy the same nine-point finite-difference stencil; only evaluation of known source data becomes more elaborate. The same inverse bound yields sixth-order convergence when these approximations and the boundary data have matching accuracy.
A particularly instructive case is the Laplace equation, . Both displayed error corrections automatically vanish: and , which also makes the pure sixth derivatives sum to zero. Expanding the stencil two orders further gives, for a sufficiently smooth harmonic function,For verification, the three eighth-derivative contributions are , and . Because is a harmonic function, their sum is . The example has , so this term is genuinely present. The unmodified harmonic nine-point scheme therefore has sixth-order nodal convergence under the same smoothness and boundary assumptions. This harmonic superconvergence of the nine-point stencil is special to harmonic functions; it should not be confused with the fourth-order source-corrected scheme for general Poisson equation data.
The appeal of Mehrstellenverfahren is this combination of a compact sparse matrix, favorable discrete maximum principle properties, and high accuracy obtained by using the governing equation. The derivation also shows precisely which accuracy belongs to the operator on arbitrary functions, which belongs to its action on solutions, and which survives in the computed boundary-value solution.
Past exam of the mathematics course of the University of Cambridge 2019 iii Paper 324 4 a i Solution Created 2026-10-03 Updated 2026-10-05
The usual sufficient input promises for the HHL algorithm are efficient quantum state preparation of the nonzero vector , efficient access to a sparse matrix with at most nonzero entries per row, and a condition number after an efficiently known normalization. Both the positions and values of the nonzero matrix elements must be computable coherently in polynomial time. More generally, efficient Hamiltonian simulation can replace the sparsity promise. We assume is invertible; if zero eigenvalues occur, one must instead restrict to their orthogonal complement and specify the desired inverse on that support.
With and a known bound , choose . The HHL controlled reciprocal rotation then succeeds with probabilityThis is the required inverse-polynomial lower bound. In the usual approximate algorithm, inverse-polynomial requested error also gives polynomial runtime under these input promises. The original HHL paper states the dependence on sparsity, conditioning, and accuracy.
There is a qualification for a literally exact version. Representability of the eigenvalues in bits does not itself make exact quantum phase estimation efficient: using requires controlled powers corresponding to evolution times as large as . Under the paper's idealization we may describe their exact action, but polynomial runtime for that exact circuit additionally requires efficient implementations of those controlled powers, or equivalent efficient exact spectral access. Assuming an operation executes exactly does not bound its cost. This distinction is recorded in cost of exact phase estimation on a dyadic spectrum.
Past exam of the mathematics course of the University of Cambridge 2019 iii Paper 341 7 Solution Created 2026-10-03 Updated 2026-10-14
Consider a bounded Lipschitz domain and homogeneous Dirichlet boundary conditions forAssume is a bounded real symmetric matrix field with uniformly, is bounded, and defines a bounded linear functional on , the zero-boundary Sobolev space. The weak formulation isThe Cauchy-Schwarz inequality gives continuity . Uniform ellipticity and the Poincaré inequality give a coercive bilinear form, . The Lax-Milgram theorem therefore supplies a unique weak solution, with . Its proof represents by a bounded linear operator using the Riesz representation theorem; coercivity gives an injective operator with closed image, and a zero orthogonal complement makes that image all of . This yields existence, uniqueness and the displayed estimate.
For a conforming finite element space , the Galerkin method finds such that for every . With a basis , this is the linear system , where the stiffness matrix is and . Its positive-definite matrix property proves unique discrete solvability. Local support gives a sparse matrix through elementwise assembly.
For the symmetric problem, the Ritz method minimizes over . Differentiating in every direction gives precisely the Galerkin method equations. Conversely, if solves them, , proving it is the unique minimum. The same argument over gives , where is the energy norm. Thus the Ritz method chooses the best trial function in that norm.
Subtracting the continuous and discrete equations gives Galerkin orthogonality, . For arbitrary and , it follows that . Coercivity and continuity prove the Céa lemma:In the symmetric energy norm, the Cauchy-Schwarz inequality improves the constant to one. Equivalently, Galerkin orthogonality gives the Pythagorean identity . These estimates establish stability and show that approximation properties of the trial space determine convergence.
For continuous piecewise-linear elements on a shape-regular mesh in dimensions at most three, a finite element interpolation estimate gives when . Combining it with the Céa lemma yields energy norm error. More generally, degree- elements give error in under the corresponding regularity and approximation assumptions. Mere mesh refinement cannot supply an order whose required solution regularity is absent.
An additional order in the L2 norm follows under a dual elliptic regularity assumption. Solve and assume . The Aubin–Nitsche duality argument uses Galerkin orthogonality to obtainTherefore , giving for the piecewise-linear case with . This improvement explicitly requires regularity of the dual problem.
As a concrete example, solve on with zero endpoint values. On a uniform mesh of spacing , the piecewise-linear hat functions give , and . The discrete equations are , whose solution is . The exact solution is , so is its piecewise-linear nodal interpolant. On each interval ,Integrating the squared error and squared derivative error gives the explicit rateswhere the norm here is .
For nonsymmetric coercive problems, the Galerkin method, Galerkin orthogonality and the Céa lemma still apply, but the symmetric quadratic minimization interpretation of the Ritz method generally does not. Nonconforming trial spaces, inexact integration and noncoercive equations need additional arguments beyond the conforming coercive theory proved here.
Past exam of the mathematics course of the University of Cambridge 2023 iii Paper 216 1 e Solution 2026-09-28
Put . The Weighted graph Laplacian of the tree is defined byMultiplication of the Gaussian likelihood by the prior shows that, conditionally on the precision parameter ,Completing the square therefore givesAs a function of , the posterior density isso, in shape-rate notation,The precision matrix has the sparsity pattern of a tree. A sparse Cholesky decomposition and its triangular solves have cost and storage on this graph, while the gamma update also costs . Hence each systematic-scan Gibbs sampler iteration costs .
Past exam of the mathematics course of the University of Cambridge 2025 iii Paper 324 2 i Solution Created 2026-09-24 Updated 2026-09-25
For the HHL algorithm to have runtime polynomial in , the Hermitian matrix must be invertible, have a condition number bounded by , and be a sparse matrix with its nonzero entries efficiently accessible by an oracle. The normalized state must also be preparable in time. With precision costs suppressed, these assumptions let HHL prepare, with high probability,
Construct a fresh sparse matrix, transform each stored value, and omit products that become zero.Filtering preserves column order. It handles
def scale(s: Double): SparseMatrix = {
val out = new SparseMatrix(N)
for (i <- 0 until N) {
out.rows(i) = rows(i).map { case (j, x) => (j, s * x) }
.filter(e => e._2 != 0.0)
}
out
}s == 0.0 and any floating point underflow producing zero. Sharing immutable list structure elsewhere would be safe; this code constructs new transformed rows. Within the class, Scala's ordinary private permits access to out.rows. The result isThe time complexity is for stored entries. As usual for the supplied Double model, arithmetic means machine arithmetic; for a finite-real interpretation assume finite operands and products, excluding infinities and NaNs.Entry in source row Before processing source row
i becomes entry in destination row j. Visit source rows in descending order and prepend, producing increasing destination column order without a sorting pass.def transpose: SparseMatrix = {
val out = new SparseMatrix(N)
var i = N - 1
while (i >= 0) {
for ((j, x) <- rows(i)) {
out.rows(j) = (i, x) :: out.rows(j)
}
i -= 1
}
out
}i, each destination row contains exactly the contributions from source rows with index greater than i, in increasing index order. Prepending index i preserves that order, and each source position is unique. Hence the representation invariant holds andThe source sparse matrix is unchanged.

