is_ss_controllable

Function is_ss_controllable 

Source
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 the StateSpaceModel trait.

§Returns

  • bool - true if the system is controllable, false otherwise.

§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}