From 24b9ce706511442c9f3baf79ed341d825de44b6b Mon Sep 17 00:00:00 2001 From: Fredrik Bagge Carlson Date: Wed, 24 Jun 2026 09:12:05 +0200 Subject: [PATCH] diskmargin: drop the delay-margin line from the Diskmargin show method MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The printed delay margin was computed as ϕm/ω0 using the disk-margin critical frequency (the skewed-sensitivity peak). This is not the classical delay margin (which uses the gain crossover frequency) and, more importantly, is not a valid lower bound on the destabilizing delay: a delay's phase lag ωτ grows with frequency, so the binding frequency is wherever ϕm(ω)/ω is smallest, which is generally not ω0. Evaluating the ratio only at ω0 can therefore overstate the tolerable delay. Drop the misleading line rather than print a number that reads as a guarantee but isn't one. Co-Authored-By: Claude Opus 4.8 (1M context) --- src/diskmargin.jl | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/diskmargin.jl b/src/diskmargin.jl index b5eec87d..bab73ad3 100644 --- a/src/diskmargin.jl +++ b/src/diskmargin.jl @@ -64,14 +64,6 @@ function Base.show(io::IO, dm::Diskmargin) println(io, "Gain margins: [$(dm.γmin), $(dm.γmax)]") end println(io, "Phase margin: ", dm.ϕm) - delaymarg = π/180 * dm.ϕm / dm.ω0 - print(io, "Delay margin: ", delaymarg, " s") - if isdiscrete(dm.L) - samples = delaymarg / dm.L.Ts - println(io, ", ", isfinite(samples) ? floor(Int, samples) : samples, " samples") - else - println(io) - end println(io, "Skew: ", dm.σ) println(io, "Worst-case perturbation: ", dm.f0) end