pub fn is_ss_controllable<T: StateSpaceModel>(model: &T) -> (bool, DMatrix<f64>)Expand description
Checks if a given state-space model is controllable.
§Arguments
model- A reference to a state-space model that implements theStateSpaceModeltrait.
§Returns
bool-trueif the system is controllable,falseotherwise.
§Panics
This function will panic if the computation of the controllability matrix fails.
§Examples
use control_sys::analysis;
use control_sys::model;
let ss_model = model::DiscreteStateSpaceModel::from_matrices(
&nalgebra::dmatrix![1.0, -2.0;
2.0, 1.0],
&nalgebra::dmatrix![1.0;
2.0],
&nalgebra::dmatrix![],
&nalgebra::dmatrix![],
0.05,
);
let (is_controllable, controllability_matrix) = analysis::is_ss_controllable(&ss_model);Examples found in repository?
examples/controllability.rs (line 17)
6fn main() -> Result<(), Box<dyn std::error::Error>> {
7 let ss_model = model::DiscreteStateSpaceModel::from_matrices(
8 &nalgebra::dmatrix![1.0, -2.0;
9 2.0, 1.0],
10 &nalgebra::dmatrix![1.0;
11 2.0],
12 &nalgebra::dmatrix![],
13 &nalgebra::dmatrix![],
14 0.05,
15 );
16
17 let (is_controllable, controllability_matrix) = analysis::is_ss_controllable(&ss_model);
18
19 if is_controllable {
20 println!("The system is controllable");
21 println!("Its controllability matrix is: {}", controllability_matrix);
22 }
23
24 Ok(())
25}