care: Continuous-time Algebraic Riccati Equation solution

Description Usage Arguments Details Value Note Examples

Description

Computes the unique solution to the continuous-time Riccati equation:

A'* X + X*A - X * B * R^-1 * B' * X + Q'*Q = 0

Usage

1
care(A, B, Q, R = 1)

Arguments

A

State-matrix of a state-space system

B

Input-matrix of a state-space system

Q

Symmetric output-matrix of a state-space system

R

Single number

Details

X <- care(A, B, Q, R) returns the stablizing solution (if it exists) to the continuous-time Riccati equation.

The care function also returns the gain matrix, G and a vector, L of the closed-loop eigenvalues, where

G = R^-1 B'X*E

L = eig(a-b*g)

Value

Returns the stabilizing matrix, gain and closed-loop eigenvalues in a list.

Note

A, B must be controllable

Examples

1
2
3
4
5
6
a <- matrix(c(-3, 2,1, 1), byrow = TRUE, ncol = 2)
b <- matrix(c(0, 1), nrow = 2)
c <- matrix(c(1, -1), ncol = 2)
q <- t(c)%*%c
r <- 3
care(a, b, q, r)

Example output

Attaching package:controlThe following object is masked frompackage:stats:

    step

The following object is masked frompackage:base:

    append

$X
          [,1]     [,2]
[1,] 0.5895174 1.821575
[2,] 1.8215747 8.818840

$L
          [,1]
[1,] -3.502629
[2,] -1.436984

$G
          [,1]     [,2]
[1,] 0.6071916 2.939613

Warning message:
In Matrix::Schur(val) : imaginary parts discarded in coercion

control documentation built on May 1, 2019, 7:33 p.m.