A general-purpose forced-response solver for damped MDOF systems in MATLAB, validated against closed-form benchmarks before it gets used in anger.
Placeholder. Closed-form forced-response is tractable for one or two degrees of freedom. Past that — anything resembling a real system — the algebra gets unmanageable and the intuition leaves with it. The final project is to build a numerical solver that handles the general case while staying honest with the textbook.
Placeholder. Approach: assemble M, C, K matrices, solve the eigenproblem, decouple via modal decomposition, integrate each modal coordinate under arbitrary forcing, recombine. Then validate the whole pipeline against closed-form cases — single-DOF harmonic, two-DOF beating, undamped vs. proportionally damped — before trusting it on anything novel.
┌─────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ assemble │───▶│ eigen + │───▶│ modal │───▶│ recombine │ │ M, C, K │ │ normalize │ │ integrate │ │ physical x │ └─────────────┘ └──────────────┘ └──────────────┘ └──────────────┘ │ ▼ ┌──────────────┐ │ benchmarks │ │ 1-DOF, 2-DOF │ │ proportional │ └──────────────┘
Placeholder. Decoupling first lets each modal coordinate use the cheapest stable integrator that still resolves it. Direct integration of the full system would be simpler to write and worse to trust.
Placeholder. The single-DOF harmonic and two-DOF beating cases are the regression suite. If a refactor breaks them, the refactor is wrong.
Placeholder. A response that looks wrong on a plot is wrong. Numbers can be wrong without looking it; plots usually can't.
Placeholder. In progress through Winter 2026. Final write-up — solver, benchmarks, novel application — lands here when the project closes out.