the eigenvalue method
For a constant-coefficient homogeneous system x' = A x, there is one master technique that solves it outright — no guessing, no integrating factors. It rests on a single beautiful guess: that the system has solutions which keep their shape and only grow or shrink in size as time passes, like a shadow that stretches but never changes direction.
Try x(t) = e^(lambda t) v, where v is a fixed nonzero vector and lambda a number to be found. Differentiating gives x' = lambda e^(lambda t) v, while A x = e^(lambda t) A v. For these to match for all t you need A v = lambda v — exactly the eigenvalue equation. So each eigenvalue lambda of A, paired with an eigenvector v, hands you one solution e^(lambda t) v. The recipe is then: compute the eigenvalues by solving det(A - lambda I) = 0 (the characteristic equation), find an eigenvector v for each, and combine the resulting solutions. If A is n-by-n and supplies n independent eigenvectors, the n solutions e^(lambda_i t) v_i form a fundamental set, and the general solution is their linear combination c1 e^(lambda_1 t) v_1 + ... + cn e^(lambda_n t) v_n.
This method reduces a differential-equations problem to pure linear algebra — finding eigenvalues and eigenvectors of a matrix. The character of the solution is read straight off the eigenvalues: real ones give pure growth or decay, complex ones give oscillation, repeated ones may need an extra trick. Those three outcomes are the three cases treated separately.
For A = [1, 2; 0, 3], det(A - lambda I) = (1 - lambda)(3 - lambda) = 0 gives lambda = 1, 3. Eigenvectors (1, 0) and (1, 1) yield solutions e^t (1, 0) and e^(3t) (1, 1). General solution: x(t) = c1 e^t (1, 0) + c2 e^(3t) (1, 1).
Each eigenvalue-eigenvector pair (lambda, v) contributes one solution e^(lambda t) v.
The clean version assumes A has n independent eigenvectors. When a repeated eigenvalue is short of eigenvectors, e^(lambda t) v alone is not enough — you must bring in generalized eigenvectors (the repeated-eigenvalues case).