Scilab Website | Contribute with GitLab | Mailing list archives | ATOMS toolboxes
Scilab Online Help
6.0.0 - English

Change language to:
Français - 日本語 - Português - Русский

Please note that the recommended version of Scilab is 2025.0.0. This page might be outdated.
See the recommended documentation of this function

Scilab Help >> Control Systems - CACSD > Matrix Computation > riccati

riccati

Riccati equation

Syntax

X=riccati(A,B,C,dom,[typ])
[X1,X2]=riccati(A,B,C,dom,[typ])

Arguments

A,B,C

real matrices nxn, B and C symmetric.

dom

'c' or 'd' for the time domain (continuous or discrete)

typ

string : 'eigen' for block diagonalization or schur' for Schur method.

X1,X2,X

square real matrices (X2 invertible), X symmetric

Description

X=riccati(A,B,C,dom,[typ]) solves the Riccati equation:

A'*X+X*A-X*B*X+C=0

in continuous time case, or:

A'*X*A-(A'*X*B1/(B2+B1'*X*B1))*(B1'*X*A)+C-X

with B=B1/B2*B1' in the discrete time case. If called with two output arguments, riccati returns X1,X2 such that X=X1/X2.

Examples

// Continuous
n = 10;
A = rand(n,n);
B = rand(n,n);
C = rand(n,n);
C = C*C';
R = rand(n,n);
R = R*R'+eye();
B = B*inv(R)*B';

X = riccati(A,B,C,'c','eigen')
// Discrete

n = 10;
F = rand(n,n);
G1      = rand(n,n);
G2 = rand(n,n);
G2 = G2*G2'+eye();
G      = G1/G2*G1';
H      = rand(n,n);
H = H*H';

[X1,X2]= riccati(F,G,H,'d','schur')

See also

Report an issue
<< ricc Matrix Computation sylv >>

Copyright (c) 2022-2024 (Dassault Systèmes)
Copyright (c) 2017-2022 (ESI Group)
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Tue Feb 14 15:02:46 CET 2017