Linear differential equation solver (lde.m)

solves a linear, first-order, vector differential equation

369 Downloads

Updated 15 Jun 2021

View License

lde.m solves linear, vector differential equations, including nonhomogeneous equations with functional coefficients. For a constant square matrix A, lde(A) is functionally equivalent to expm(A) (exponential matrix), although lde can be faster (for large matrices) and can exhibit better numerical accuracy (e.g. by a factor of 10^-15 in one test case). Relative to MATLAB's ordinary differential solvers (e.g. ode45), an advantage of lde is that it can simultaneously obtain all independent solutions of a homogeneous differential equation, or can simultaneously process multiple forcing functions for a nonhomogeneous equation. A live script demo is included showing several practical applications: (1) exponential matrix, (2) resonantly forced harmonic oscillator, (3) harmonic oscillator with variable mass ("leaky bucket on a spring"), (4) Airy functions, and (5) Scorer functions.

Cite As

Kenneth Johnson (2023). Linear differential equation solver (lde.m) (https://www.mathworks.com/matlabcentral/fileexchange/60475-linear-differential-equation-solver-lde-m), MATLAB Central File Exchange. Retrieved .

MATLAB Release Compatibility
Created with R2016b
Compatible with any release
Platform Compatibility
Windows macOS Linux
Acknowledgements

Inspired: pageexpm

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Version Published Release Notes
1.6.1

- Re-ran lde_demo.mlx with R2021a and newer computer (6-core Xeon processor, 3.6GHz, 15MB cache; 128 GB RAM, 2400 MHz).
- Fixed legend problem in lde_demo.mlx, third figure.

1.6.0.1

spelling correction in Description

1.6.0.0

Updated documentation citation in lde.m comments.
Revised local function getPadeCoef in lde.m.

1.5.0.0

Fixed handling of 'MATLAB:nearlySingularMatrix' (missing lastwarn(''), corrected commentary explanantion).

1.4.0.0

12/21/2016 Algorithm runtime is improved. This version should now be stable.
12/21/2016(b) minor fixes in comments, spelling

1.3.0.0

12/19/2016 update: Further improvments to error/tolerance analysis
12/19/2016 update: Further improvements to error/tolerance analysis

1.2.0.0

12/16/2016 update: Improved error/tolerance analysis

1.1.0.0

2016/12/13 update: more robust error/tolerance control

1.0.0.0