Code is a fundamental component of all of my research, whether for model building, experimental discovery, performance evidence, or combinations thereof. Behind the majority of my publications lies a great deal of code, most of which never sees the light of day. Some code I make available online simply for ease of replication, and links to such code are provided next to the relevant articles on the Research page. On this particular page, I provide a selection of software that I think may be of interest to students and other researchers. Scripts are divided between algorithms and functional analysis/geometry.
(2024) The Lyapunov Surrogate Method and ADMM for audio signal recovery
Associated Articles: Andrew Calcan and Scott B. Lindstrom, "The ADMM algorithm for audio signal recovery and performance modification with the dual Douglas–Rachford dynamical system," (2024).
Description: This code may be used to solve simulated and real audio signal recovery (from compressed) problems with the Lyapunov surrogate method. It may be used to replicate the experiments in the associated article.
Code authorship: Andrew Calcan created this modified code, based on the code in
Lindstrom, S.B. "Computable Centering Methods for Spiraling Algorithms and their Duals, with Motivations from the Theory of Lyapunov Functions," (2020).
which itself is based on the code available at
Stephen Boyd, Neal Parikh, Eric Chu, Borja Peleato, and Jonathan Eckstein, Matlab scripts for alternating direction method of multipliers. Available at https://web.stanford.edu/~boyd/papers/admm/.
(2020) A Primal-Dual Lyapunov Surrogate Method for Basis Pursuit with ADMM
Associated Articles: "Computable Centering Methods for Spiraling Algorithms and their Duals, with Motivations from the Theory of Lyapunov Functions," (2020).
Description: This code may be used to solve basis pursuit problems with the Lyapunov surrogate method described in the above article. It may be used to replicate the experiments in the associated article.
Code authorship: The modifications that are used to implement the Lyapunov surrogate method were made by me. Credit for the underlying ADMM scripts belongs to:
Stephen Boyd, Neal Parikh, Eric Chu, Borja Peleato, and Jonathan Eckstein, Matlab scripts for alternating direction method of multipliers. Available at https://web.stanford.edu/~boyd/papers/admm/.
(2020) Circumcentering Reflection Methods for Nonconvex Feasibility Problems
Associated Articles: With Neil Dizon and Jeffrey Hogan, "Circumcentering Reflections for Nonconvex Feasibility Problems," (2020).
Description: This code may be used to replicate the sphere and subspace feasibility problem experiments from the associated article.
(2019) Projection Methods for Boundary Value Ordinary Differential Equations
Associated Articles:
With Bishnu P. Lamichhane and Brailey Sims, "Application of Projection Algorithms to Differential Equations: Boundary Value Problems." ANZIAM, (2019) 61(1), 23-46.
"Computable Centering Methods for Spiraling Algorithms and their Duals, with Motivations from the Theory of Lyapunov Functions," (2020).
With Neil Dizon and Jeffrey Hogan, "Circumcentering Reflections for Nonconvex Feasibility Problems," (2020).
Description: This code may be used to solve boundary value ordinary differential equations with a number of projection algorithms, and to compare their performance. The projection methods include the method of alternating projections, the Douglas--Rachford method, the circumcentered reflections method (CRM), and a Lyapunov surrogate method I introduced in article (2). The codes were principally written for the article (1), and they may be used to replicate the experiments therein.
(2017) Phase Portraits Package
Package co-authors: Paul Vrbik.
Associated Articles: Paul Vrbik, "Phase Portraits of Hyperbolic Geometry." Mathematical Intelligencer, (2019) 41(3), 1-9.
Description: This code may be used to generate phase portraits of complex functions, and of functions defined on a number of surfaces that represent non-Euclidean geometries. Images from the gallery created with this code include the rotations and translations of hyperbolic space (excepting "Three rotations of hyperbolic space").
(2020) Generating Riemann phase portraits directly from data structures
Associated Articles: (2020) The Art of Modern Homo Habilis Mathematicus, or: What Would Jon Borwein Do?. In: Sriraman B. (eds) Handbook of the Mathematics of the Arts and Sciences. Springer, Cham.
Description: Maple's more user-friendly routines have significant drawbacks that can render them unable to plot certain functions. In particular, Maple cannot plot the Riemann zeta function over a Riemann sphere with the standard plot3d function. For the sake of simplicity, the larger package I developed with Paul Vrbik in 2017 relies on plot3d and similar functions.
When I wrote the book chapter in 2020, I wanted to include a phase portrait of the Riemann zeta function plotted on the Riemann sphere. In order to create this image (which has since won an award and is in the gallery page), I wrote this new code.
In this code, I built the PLOT3D data structure manually without calling the plot3d function. This allowed me to actually plot the Riemann zeta function. This bones-up approach comes at the expense of a pleasant interface, but the Maple worksheet is still relatively easy to adapt to other functions.
(2021) Heat plots for homotopy
Associated Articles:
Heinz H. Bauschke and Scott B. Lindstrom, “Proximal Averages for Minimization of Entropy Functionals,” Pure and Applied Functional Analysis (2020) 5(3), 505-531.
Regina S. Burachik, Minh N. Dao, and Scott B. Lindstrom, "The Generalized Bregman Distance," SIAM Journal on Optimization, (2019), 31(1), 404-424.
Heinz H. Bauschke, Minh N. Dao, and Scott B. Lindstrom, "Regularizing with Bregman-Moreau Envelopes," SIAM Journal on Optimization, (2018) 28(4), 3208-3228.
Description: This package allows one to easily create heat plots and keys for them. Heat plots make it easy to show homotopies of functions. For example, the image Entropy, Energy, and Homotopy on the Galleries page uses heat plot.
(2021) Entropy Functional Optimization
Associated Articles:
Scott B. Lindstrom, ``A Note on Cores and Quasi Relative Interiors in Partially Finite Convex Programming,'' Journal of Convex Analysis, in press (2020).
Heinz H. Bauschke and Scott B. Lindstrom, “Proximal Averages for Minimization of Entropy Functionals,” Pure and Applied Functional Analysis, (2020) 5(3), 505-531.
Heinz H. Bauschke, Minh N. Dao, and Scott B. Lindstrom, "Regularizing with Bregman-Moreau Envelopes," SIAM Journal on Optimization, (2018) 28(4), 3208-3228.
Jonathan M. Borwein and Scott B. Lindstrom, “Meetings With Lambert W and Other Special Functions in Optimization and Analysis,” Pure and Applied Functional Analysis, (2017) 1(3), p.361.
Description: Entropy functional optimization is a useful example of partially finite convex programming. These scripts allow for replication of the experiments in the associated articles.