the matrix convolution formula
When you stack the homogeneous and forced behaviors of a linear system into one statement, the result is a single beautiful formula — the complete closed-form solution of x' = A x + g(t) with initial state x0. It splits cleanly into 'where the initial state goes' plus 'the accumulated effect of the forcing', and the second piece is a convolution of the input with the system's own exponential.
The formula reads x(t) = e^(At) x0 + integral from 0 to t of e^(A(t - s)) g(s) ds. Read it as a story about cause and effect. The first term carries the initial condition forward by the flow e^(At), as if there were no forcing. The integral sums up the forcing's contributions: at each past instant s, a little push g(s) ds is applied, and it then evolves forward over the remaining time t - s under the flow e^(A(t - s)) before arriving at the present moment t. Adding up all those delayed, evolved pushes — that is exactly what the integral does — gives the total forced response. The factor e^(A(t - s)) depending only on the elapsed gap t - s is what makes it a convolution: the system responds to a push the same way no matter when the push happens, only how long ago.
This is Duhamel's principle in matrix form, and it is the systems version of the convolution theorem you meet with Laplace transforms: e^(At) plays the role of the impulse response, and convolving the input with it produces the output. The formula is exact and fully general, requiring nothing of g(t) but integrability, which is its great virtue — and its honest catch is that the integral may not evaluate in elementary terms, in which case the solution legitimately remains an integral to be computed numerically.
If a switch dumps a constant input g(t) = b into a stable system, the formula gives x(t) = e^(At) x0 + integral from 0 to t of e^(A(t-s)) b ds. As t grows, e^(At) x0 decays away (the transient) and the integral approaches the constant steady state -A^(-1) b — the same -A^(-1) b you would get by setting x' = 0 in Ax + b = 0. The convolution recovers the obvious equilibrium and the approach to it in one stroke.
x(t) = e^(At) x0 + integral of e^(A(t-s)) g(s) ds: the initial state carried forward, plus every past push evolved forward and summed.
Order matters: it is e^(A(t-s)) g(s), the elapsed-time exponential acting on the push at time s, not e^(As) or g(t); the convolution structure depends on the gap t - s, not on t and s separately.