Solution (source code)

= Solution

Generate successive <matrix powers> and take cumulative sums using <matrix addition>:
``
seriesMat :: Num a => Matrix a -> [Matrix a]
seriesMat m = scanl1 addMat (iterate (multMat m) m)
``
For the stipulated <square matrix>, `iterate (multMat m) m` produces `m`, `m*m`, `m*(m*m)`, and so on. <Associativity> of exact <matrix multiplication> identifies these as $M,M^2,M^3,\ldots$. The <left scan> `scanl1 addMat` then returns
$$
\boxed{\left[M,\ M+M^2,\ M+M^2+M^3,\ldots\right]}.
$$
All dimensions remain compatible. The infinite outer <list> is available a finite prefix at a time under <lazy evaluation>; no convergence of the <matrix geometric series> is needed. With floating-point entries, the expression specifies this particular multiplication and addition order, since machine arithmetic need not obey the exact algebraic laws.