| 
20 | 20 | S = ss(matrices_S...)  | 
21 | 21 | T = ss(matrices_T...)  | 
22 | 22 | bodeplot([S, T], lab = ["S" "" "T" ""], plot_title = "Bode plot of sensitivity functions",  | 
23 |  | -    margin = 5Plots.mm)</code></pre><img src="90b4f81a.svg" alt="Example block output"/><p>The sensitivity functions obtained this way should be equivalent to the ones obtained with the code below</p><pre><code class="language-julia hljs">using ControlSystemsBase  | 
 | 23 | +    margin = 5Plots.mm)</code></pre><img src="139b2023.svg" alt="Example block output"/><p>The sensitivity functions obtained this way should be equivalent to the ones obtained with the code below</p><pre><code class="language-julia hljs">using ControlSystemsBase  | 
24 | 24 | P = tf(1.0, [1, 1]) |> ss  | 
25 | 25 | C = 1                      # Negative feedback assumed in ControlSystems  | 
26 | 26 | S = sensitivity(P, C)      # or feedback(1, P*C)  | 
 | 
70 | 70 | ----------  | 
71 | 71 | 1.0s + 2.0  | 
72 | 72 | 
 
  | 
73 |  | -Continuous-time transfer function model</code></pre><h2 id="Gain-and-phase-margins"><a class="docs-heading-anchor" href="#Gain-and-phase-margins">Gain and phase margins</a><a id="Gain-and-phase-margins-1"></a><a class="docs-heading-anchor-permalink" href="#Gain-and-phase-margins" title="Permalink"></a></h2><p>Further linear analysis can be performed using the <a href="https://juliacontrol.github.io/ControlSystems.jl/stable/lib/analysis/">analysis methods from ControlSystemsBase</a>. For example, calculating the gain and phase margins of a system can be done using</p><pre><code class="language-julia hljs">margin(P)</code></pre><pre class="documenter-example-output"><code class="nohighlight hljs ansi">(wgm = [NaN;;], gm = [Inf;;], wpm = [NaN;;], pm = [Inf;;])</code></pre><p>(they are infinite for this system). A Nyquist plot can be produced using</p><pre><code class="language-julia hljs">nyquistplot(P)</code></pre><img src="e8fadfcd.svg" alt="Example block output"/><h2 id="Index"><a class="docs-heading-anchor" href="#Index">Index</a><a id="Index-1"></a><a class="docs-heading-anchor-permalink" href="#Index" title="Permalink"></a></h2><ul><li><a href="#ModelingToolkit.linearize"><code>ModelingToolkit.linearize</code></a></li></ul><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="ModelingToolkit.linearize" href="#ModelingToolkit.linearize"><code>ModelingToolkit.linearize</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">(; A, B, C, D), simplified_sys = linearize(sys, inputs, outputs;    t=0.0, op = Dict(), allow_input_derivatives = false, zero_dummy_der=false, kwargs...)  | 
 | 73 | +Continuous-time transfer function model</code></pre><h2 id="Gain-and-phase-margins"><a class="docs-heading-anchor" href="#Gain-and-phase-margins">Gain and phase margins</a><a id="Gain-and-phase-margins-1"></a><a class="docs-heading-anchor-permalink" href="#Gain-and-phase-margins" title="Permalink"></a></h2><p>Further linear analysis can be performed using the <a href="https://juliacontrol.github.io/ControlSystems.jl/stable/lib/analysis/">analysis methods from ControlSystemsBase</a>. For example, calculating the gain and phase margins of a system can be done using</p><pre><code class="language-julia hljs">margin(P)</code></pre><pre class="documenter-example-output"><code class="nohighlight hljs ansi">(wgm = [NaN;;], gm = [Inf;;], wpm = [NaN;;], pm = [Inf;;])</code></pre><p>(they are infinite for this system). A Nyquist plot can be produced using</p><pre><code class="language-julia hljs">nyquistplot(P)</code></pre><img src="be56ca4c.svg" alt="Example block output"/><h2 id="Index"><a class="docs-heading-anchor" href="#Index">Index</a><a id="Index-1"></a><a class="docs-heading-anchor-permalink" href="#Index" title="Permalink"></a></h2><ul><li><a href="#ModelingToolkit.linearize"><code>ModelingToolkit.linearize</code></a></li></ul><article class="docstring"><header><a class="docstring-article-toggle-button fa-solid fa-chevron-down" href="javascript:;" title="Collapse docstring"></a><a class="docstring-binding" id="ModelingToolkit.linearize" href="#ModelingToolkit.linearize"><code>ModelingToolkit.linearize</code></a> — <span class="docstring-category">Function</span><span class="is-flex-grow-1 docstring-article-toggle-button" title="Collapse docstring"></span></header><section><div><pre><code class="language-julia hljs">(; A, B, C, D), simplified_sys = linearize(sys, inputs, outputs;    t=0.0, op = Dict(), allow_input_derivatives = false, zero_dummy_der=false, kwargs...)  | 
74 | 74 | (; A, B, C, D)                 = linearize(simplified_sys, lin_fun; t=0.0, op = Dict(), allow_input_derivatives = false, zero_dummy_der=false)</code></pre><p>Linearize <code>sys</code> between <code>inputs</code> and <code>outputs</code>, both vectors of variables. Return a NamedTuple with the matrices of a linear statespace representation on the form</p><p class="math-container">\[\begin{aligned}  | 
75 | 75 | ẋ &= Ax + Bu\\  | 
76 | 76 | y &= Cx + Du  | 
 | 
130 | 130 | ## Symbolic linearization  | 
131 | 131 | lsys_sym, _ = ModelingToolkit.linearize_symbolic(cl, [f.u], [p.x])  | 
132 | 132 | 
 
  | 
133 |  | -@assert substitute(lsys_sym.A, ModelingToolkit.defaults(cl)) == lsys.A</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/ModelingToolkit.jl/blob/v9.72.0/src/linearization.jl#L589-L687">source</a></section></article></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../hydraulic/">« Hydraulic Components</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.10.1 on <span class="colophon-date" title="Saturday 12 April 2025 20:44">Saturday 12 April 2025</span>. Using Julia version 1.11.4.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>  | 
 | 133 | +@assert substitute(lsys_sym.A, ModelingToolkit.defaults(cl)) == lsys.A</code></pre></div><a class="docs-sourcelink" target="_blank" href="https://github.com/SciML/ModelingToolkit.jl/blob/v9.72.0/src/linearization.jl#L589-L687">source</a></section></article></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../hydraulic/">« Hydraulic Components</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.10.1 on <span class="colophon-date" title="Monday 21 April 2025 13:24">Monday 21 April 2025</span>. Using Julia version 1.11.5.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>  | 
0 commit comments