Description
Currently (see [1]) if a state space system has eigenvalues at 0, it will return a scalar NaN for DC gain:
except LinAlgError:
# zero eigenvalue: singular matrix
return np.nan
The shape of the return is addressed in #126.
It may be possible to do better here: one relatively expensive way would be to minreal
each input output pair and evaluate the DC gain. This would allow finite and non-finite entries in the returned matrix, rather than all NaNs. I'm not sure how to decide on +inf or -inf instead of NaN: in C*inv(-A)*B
, if we find some sort of inverse of A that has infs (this is not hard using, e.g., singular value decomposition), one could still potentially add or subtract infs when multiplying by C and B, so getting NaNs.
[1]
python-control/control/statesp.py
Lines 617 to 619 in 32f13bc