Files
hugo/content/zettels/interaction_analysis.md
T
tdehaeze 5e566f95c1
Deploy / deploy (push) Successful in 6s
Update content - 2026-10-08
2026-10-08 09:13:42 +02:00

73 lines
2.3 KiB
Markdown

+++
title = "Interaction Analysis"
author = ["Dehaeze Thomas"]
draft = false
category = "Control Theory"
subcategory = "Multivariable Analysis"
+++
Tags
:
Two main ways to evaluate the interaction:
- Relative Gain Array
- Structured Singular Value
## Relative Gain Array {#relative-gain-array}
Imagine a 2x2 plant:
\\[ G(s) = \begin{bmatrix} g\_{11}(s) & g\_{12}(s)\\\ g\_{21}(s) & g\_{22}(s) \end{bmatrix} \\]
Now suppose a controller \\(k\_{1}(s)\\) is closed on the first loop.
The new transfer function from \\(u\_2\\) to \\(y\_2\\) (while the first loop is closed) is :
\begin{equation}
y\_2 = g\_{22} \left[ 1 - \underbrace{\frac{g\_{21}g\_{12}}{g\_{11}g\_{22}}}\_{\phi} \underbrace{\frac{g\_{11} k\_{11}}{1 + g\_{11}k\_{11}}}\_{T\_{11}} \right]
\end{equation}
\\(\phi\\) is called the **interaction index**.
\\(T\_{11}\\) is the complementary sensitivity of the first loop (equal to 1 in the bandwidth of the first controller).
Therefore, we want \\(\phi \approx 0\\) to have no interaction.
Similarly, the **relative gain** is defined as:
\\[ \Lambda = \frac{1}{1 - \phi} \\]
And we want \\(\Lambda \approx 1\\) to have no interaction.
Note that the scaling of inputs or outputs of the MIMO plant has no effect on \\(\phi\\) or \\(\Lambda\\).
The **relative gain array** is defined as:
\\[ \Lambda(G) = G \star (G^{-1})^{T} \\]
where \\(\star\\) means element wise multiplication.
```matlab
RGA = G.*pinv(G.')
```
## RGA-number {#rga-number}
The RGA-number is a scalar measure of how far the RGA is from the identity matrix (i.e. from a plant without interaction):
\begin{equation}
\text{RGA-number} = \\| \Lambda(G) - I \\|\_{\text{sum}} = \sum\_{i,j} \left| \Lambda\_{ij} - \delta\_{ij} \right|
\end{equation}
with \\(\delta\_{ij}\\) the Kronecker delta, and \\(\\|\cdot\\|\_{\text{sum}}\\) the sum of the absolute values of all the elements.
The RGA-number should be small around the crossover frequency of the decentralized controller, as this is where the interaction matters most.
```matlab
RGA = G.*pinv(G.');
RGA_number = sum(sum(abs(RGA - eye(size(RGA)))));
```
For a plant evaluated over frequency, this is computed at each frequency point of the frequency response.
## Bibliography {#bibliography}
<style>.csl-entry{text-indent: -1.5em; margin-left: 1.5em;}</style><div class="csl-bib-body">
</div>