Passivity Indices

This example shows how to compute various measures of passivity for linear time-invariant systems.

Passive Systems

A linear system G(s) is passive when all I/O trajectories (u(t),y(t)) satisfy

0TyT(t)u(t)dt>0,T>0

where yT(t) denotes the transpose of y(t).

To measure "how passive" a system is, we use passivity indices.

  • The input passivity index is defined as the largest ν such that

0TyT(t)u(t)dt>ν0TuT(t)u(t))dt

The system G is "input strictly passive" (ISP) when ν>0. ν is also called the "input feedforward passivity" (IFP) index and corresponds to the minimum feedforward action needed to make the system passive.

  • The output passivity index is defined as the largest ρ such that

0T(yT(t)u(t)dt>ρ0TyT(t)y(t))dt

The system G is "output strictly passive" (OSP) when ρ>0. ρ is also called the "output feedback passivity" (OFP) index and corresponds to the minimum feedback action needed to make the system passive.

  • The I/O passivity index is defined as the largest τ such that

0TyT(t)u(t)dt>τ0T(uT(t)u(t)+yT(t)y(t))dt

The system is "very strictly passive" (VSP) if τ>0.

Circuit Example

Consider the following example. We take the current I as the input and the voltage V as the output. Based on Kirchhoff's current and voltage law, we obtain the transfer function for G(s),

G(s)=V(s)I(s)=(Ls+R)(Rs+1C)Ls2+2Rs+1C.

Let R=2, L=1 and C=0.1.

R = 2; L = 1; C = 0.1; 
s = tf('s');
G = (L*s+R)*(R*s+1/C)/(L*s^2 + 2*R*s+1/C);

Use isPassive to check whether G(s) is passive.

PF = isPassive(G)
PF = logical
   1

Since PF = true, G(s) is passive. Use getPassiveIndex to compute the passivity indices of G(s).

% Input passivity index
nu = getPassiveIndex(G,'in')
nu = 2
% Output passivity index
rho = getPassiveIndex(G,'out')
rho = 0.2857
% I/O passivity index
tau = getPassiveIndex(G,'io')
tau = 0.2642

Since τ>0, the system G(s) is very strictly passive.

Frequency-Domain Characterization

A linear system is passive if and only if it is "positive real":

G(jω)+GH(jω)>0ωR.

The smallest eigenvalue of the left-hand-side is related to the input passivity index ν:

ν=12minωλmin(G(jω)+GH(jω))

where λmin denotes the smallest eigenvalue. Similarly, when G(s) is minimum-phase, the output passivity index is given by:

ρ=12minωλmin(G-1(jω)+G-H(jω)).

Verify this for the circuit example. Plot the Nyquist plot of the circuit transfer function.

nyquist(G)

The entire Nyquist plot lies in the right-half plane so G(s) is positive real. The leftmost point on the Nyquist curve is (x,y)=(2,0) so the input passivity index is ν=2, the same value we obtained earlier. Similarly, the leftmost point on the Nyquist curve for G-1(s) gives the output passivity index value ρ=0.286.

Relative Passivity Index

It can be shown that the "positive real" condition

G(jω)+GH(jω)>0ωR

is equivalent to the small gain condition

||(I-G(jω))(I+G(jω))-1||<1ωR.

The relative passivity index (R-index) is the peak gain over frequency of (I-G)(I+G)-1 when I+G is minimum phase, and + otherwise:

R=(I-G)(I+G)-1.

In the time domain, the R-index is the smallest r>0 such that

0T||y-u||2dt<r20T||y+u||2dt

The system G(s) is passive if and only if R<1, and the smaller R is, the more passive the system is. Use getPassiveIndex to compute the R-index for the circuit example.

R = getPassiveIndex(G)
R = 0.5556

The resulting R value indicates that the circuit is a very passive system.