JOVANA
Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

The Fundamental Matrix

You already know how to find a basis of solutions for x' = A x. This guide files those solution vectors side by side into one matrix-valued function — the fundamental matrix — and shows how that single object holds the entire solution set, ready for the matrix exponential to walk in.

From a loose list of solutions to one tidy object

You climbed into this rung already able to solve the unforced linear system x' = A x. The eigenvalue method handed you a handful of building-block solutions: for each eigenvalue lambda with eigenvector v you got a straight-line solution e^(lambda t) v, and for complex or repeated eigenvalues you learned the matching shapes. Together these n independent solutions form a fundamental set, and every solution of the system is a constant combination c_1 x_1(t) + ... + c_n x_n(t) of them. That is the whole solution space, an n-dimensional space of vector-valued functions.

Carrying that solution set around as a loose list of vectors is clumsy. Here is the small idea that organises everything: stand each solution vector up as a column of a matrix. If x_1(t), ..., x_n(t) are your n independent solutions, file them side by side into one n-by-n matrix Psi(t) = [x_1(t) | x_2(t) | ... | x_n(t)]. This is the fundamental matrix — a single matrix-valued function of t that contains the whole solution set at once. Nothing new has been computed; you have only repackaged what you already had into a shape that will pay off enormously.

x_1(t), ..., x_n(t)   independent solutions of  x' = A x

              | |        |  |
  Psi(t)  =   |x_1  x_2 ... x_n|     (each solution is one column)
              | |        |  |

General solution:   x(t) = Psi(t) c ,   c = (c_1, ..., c_n) constant
The fundamental matrix Psi(t) stacks the independent solutions as columns; one constant vector c then names every solution at once.

What makes a matrix a fundamental matrix

Two properties earn Psi(t) the title, and both are inherited directly from its columns. First, every column solves x' = A x, so the whole matrix satisfies the matrix equation Psi'(t) = A Psi(t) — you differentiate a matrix column by column, and each column obeys the system, so the matrix equation just collects n copies of the same law. Second, the columns must be genuinely independent, not secretly redundant. That is exactly the job of the Wronskian: form the number W(t) = det Psi(t), and if it is nonzero, the columns span the full solution space.

Because the columns are independent, multiplying Psi(t) on the right by a constant column vector c picks out the combination c_1 x_1 + ... + c_n x_n — so x(t) = Psi(t) c is the general solution, and as c ranges over all constant vectors it sweeps out every solution exactly once. The matrix has quietly turned a sum of n functions into a single product. A fundamental matrix is not unique, though: you can rescale or recombine the columns however you please. If Psi solves the matrix equation, so does Psi(t) C for any invertible constant matrix C, because (Psi C)' = Psi' C = A Psi C. There is an entire family of fundamental matrices for one system.

The one normalised choice that erases the bookkeeping

Out of that whole family, one member is special. Suppose you want to honour an initial condition x(t0) = x_0. With a general Psi you would plug in t0 to get x_0 = Psi(t0) c, then solve c = Psi(t0)^(-1) x_0 — a small linear system to grind through every time. The clever move is to pick the fundamental matrix that makes that step vanish. The principal fundamental matrix Phi(t) is the one normalised so that Phi(t0) = I, the identity matrix, at the chosen start time.

Look at what that buys you. With Phi(t0) = I, the initial condition x(t0) = x_0 forces c = x_0 directly — no inverse to compute — and the solution is simply x(t) = Phi(t) x_0. The constants you used to chase are gone; the starting state itself is the constant. You can always build Phi from any other fundamental matrix by normalising: Phi(t) = Psi(t) Psi(t0)^(-1), since that product solves the matrix equation and equals I at t0. The principal fundamental matrix reads each solution off its initial state, with no algebra in between.

Why this is the doorway to the matrix exponential

Now hold the principal fundamental matrix up against the simplest case of all: a single scalar equation x' = a x, whose principal solution from t0 = 0 is x(t) = e^(a t) x_0. The object Phi(t) is playing the exact role that e^(a t) plays for one variable — it satisfies Phi' = A Phi (echoing (e^(a t))' = a e^(a t)), it equals I at t = 0 (echoing e^(0) = 1), and it propagates the initial state forward by left-multiplication. That resemblance is not a coincidence to be admired and dropped; it is a promise. The principal fundamental matrix of x' = A x deserves to be called the matrix exponential e^(At), and the next guide makes that definition honest.

Seen this way, Phi(t) is the system viewed as motion rather than as an equation. Feed it a starting point x_0 and it tells you where that point has been carried after time t; do this for every possible start at once and you have the flow of the system, a whole field of points streaming along like a fluid. Because the map x_0 maps to Phi(t) x_0 is just multiplication by a matrix, the flow of a linear system is linear — straight lines stay straight, the origin stays put, and scaling the start scales the whole trajectory. That single matrix is the complete answer to every initial value problem the system can pose.

Holding the threads together

Let the layers settle. A fundamental set is n independent solution vectors. Stack them as columns and you get a fundamental matrix Psi(t), checked once with the Wronskian and good for all time, whose general solution is the single product x(t) = Psi(t) c. Normalise so that the matrix is the identity at the start, and Psi becomes the principal fundamental matrix Phi(t), which reads off solutions as x(t) = Phi(t) x_0 with no constants to solve. And Phi is the very object the next guides will name e^(At). Each layer is the same solution set, just packaged for more leverage.

Keep one thread loose on purpose, because the rung will pull it. Everything so far concerns the unforced system x' = A x. The instant you push the system with an input, x' = A x + g(t), no eigenvector trick alone will give the answer — but the fundamental matrix does. Promoting the constant c in x = Psi(t) c to a function of time is the move called variation of parameters, and it works precisely because Psi(t) is invertible everywhere, which is the Wronskian fact from earlier doing its real job. You have built the object; the rest of this rung is learning to compute it and to lean on it.