Contents

function DEMO_RI_T_HYBRID(istest)
% Computes the solution of the Hinf Riccati equation for a random generated
% generalized system. The computations are done using the Newton method for
% the LQG step and afterwards the RADI. Afterwards, the real residual
% norm is shown and compared to the set tolerance.
%
% Input:
% istest  decides whether the function runs as an interactive demo or a
%         continuous integration test. (optional; defaults to 0, i.e.
%         interactive demo)
%

%
% This file is part of the M-M.E.S.S. project
% (http://www.mpi-magdeburg.mpg.de/projects/mess).
% Copyright (c) 2009-2025 Jens Saak, Martin Koehler, Peter Benner and others.
% All rights reserved.
% License: BSD 2-Clause License (see COPYING)
%
if nargin < 1
    istest = false;
end

Construction of system data.

if exist('OCTAVE_VERSION', 'builtin')
    rand('seed', 1.0); %#ok<RAND>
    eqn.A_ = rand(500) - 250 * eye(500);

    rand('seed', 2.0); %#ok<RAND>
    eqn.B2 = rand(500, 2);
    rand('seed', 3.0); %#ok<RAND>
    B1 = rand(500, 2);

    rand('seed', 4.0); %#ok<RAND>
    eqn.C2 = rand(3, 500);
    rand('seed', 5.0); %#ok<RAND>
    C1 = rand(3, 500);
else
    rng(1.0);
    eqn.A_ = rand(500) - 250 * eye(500);

    rng(2.0);
    eqn.B2 = rand(500, 2);
    rng(3.0);
    B1 = rand(500, 2);

    rng(4.0);
    eqn.C2 = rand(3, 500);
    rng(5.0);
    C1 = rand(3, 500);
end

gam = 5; % Scaling term for disturbances.

Set operator.

opts = struct();
[oper, opts] = operatormanager(opts, 'default');

Construction of options struct.

ADI settings.

opts.adi.maxiter          = 200;
opts.adi.res_tol          = 1.0e-12;
opts.adi.rel_diff_tol     = 0;
opts.adi.info             = 1;
opts.adi.compute_sol_fac  = true;
opts.adi.accumulateK      = false;
opts.adi.accumulateDeltaK = false;

% Shift options.
opts.shifts.num_desired   = 5;
opts.shifts.method = 'projection';

% % NM settings.
opts.nm.maxiter       = 50;
opts.nm.res_tol       = 1.0e-10;
opts.nm.rel_diff_tol  = 1.0e-12;
opts.nm.info          = 1;
opts.nm.linesearch    = false;
opts.nm.accumulateRes = true;

% NM projection settings.
opts.nm.projection      = [];
opts.nm.projection.freq = 0;
opts.nm.res.maxiter     = 10;
opts.nm.res.tol         = 1.0e-06;
opts.nm.res.orth        = true;

% RADI settings.
opts.radi.maxiter       = opts.adi.maxiter;
opts.radi.res_tol       = opts.nm.res_tol;
opts.radi.rel_diff_tol  = 1.0e-16;
opts.radi.info          = 1;

% RI settings.
opts.ri.riccati_solver = 'radi';
opts.ri.lqg_solver     = 'newton';
opts.ri.maxiter        = 10;
opts.ri.res_tol        = 1.0e-10;
opts.ri.rel_diff_tol   = 1.0e-16;
opts.ri.compres_tol    = 1.0e-16;
opts.ri.info           = 1;

% global options
opts.norm           = 2;

% %% Call Riccati iteration with Newton solver.
t_RI_call = tic;
eqn.type = 'T';
eqn.B1   = 1 / gam * B1;
eqn.C1   = C1;
[out, eqn, opts, ~] = mess_lrri(eqn, opts, oper);
t_elapsed = toc(t_RI_call);
mess_fprintf(opts, 'mess_lrri took %6.2f seconds \n', t_elapsed);
ADI step:    1 normalized residual: 9.007645e-01   
		 normalized outer residual: 4.569837e+00  
ADI step:    2 normalized residual: 8.986356e-01   
		 normalized outer residual: 2.041060e+01  
ADI step:    3 normalized residual: 8.773219e-01   
		 normalized outer residual: 7.625133e+02  
ADI step:    4 normalized residual: 8.752302e-01   
		 normalized outer residual: 8.924871e+02  
ADI step:    5 normalized residual: 1.213057e-12   
		 normalized outer residual: 9.515593e+05  
ADI step:    7 normalized residual: 8.735568e-13   
		 normalized outer residual: 9.515593e+05  
  
 NM step:    1 normalized residual: 	9.515593e+05  
               relative change in K: 	1.000000e+00  
               number of ADI steps: 	7   
  
ADI step:    1 normalized residual: 2.227100e+03   
		 normalized outer residual: 2.367773e+05  
ADI step:    2 normalized residual: 2.219935e+03   
		 normalized outer residual: 2.367809e+05  
ADI step:    3 normalized residual: 2.212820e+03   
		 normalized outer residual: 2.367845e+05  
ADI step:    5 normalized residual: 2.198504e+03   
		 normalized outer residual: 2.367916e+05  
ADI step:    6 normalized residual: 1.505466e-16   
		 normalized outer residual: 2.378896e+05  
  
 NM step:    2 normalized residual: 	2.378896e+05  
               relative change in K: 	9.999991e-01  
               number of ADI steps: 	6   
  
ADI step:    1 normalized residual: 1.020530e-01   
		 normalized outer residual: 5.947217e+04  
ADI step:    2 normalized residual: 1.859404e-05   
		 normalized outer residual: 5.947217e+04  
ADI step:    4 normalized residual: 5.128794e-13   
		 normalized outer residual: 5.947217e+04  
  
 NM step:    3 normalized residual: 	5.947217e+04  
               relative change in K: 	9.999943e-01  
               number of ADI steps: 	4   
  
ADI step:    1 normalized residual: 1.013988e-01   
		 normalized outer residual: 1.486782e+04  
ADI step:    2 normalized residual: 1.217239e-04   
		 normalized outer residual: 1.486782e+04  
ADI step:    3 normalized residual: 2.373773e-08   
		 normalized outer residual: 1.486782e+04  
ADI step:    4 normalized residual: 4.000248e-12   
		 normalized outer residual: 1.486782e+04  
ADI step:    5 normalized residual: 6.662207e-16   
		 normalized outer residual: 1.486782e+04  
  
 NM step:    4 normalized residual: 	1.486782e+04  
               relative change in K: 	9.999735e-01  
               number of ADI steps: 	5   
  
ADI step:    1 normalized residual: 1.001011e-01   
		 normalized outer residual: 3.716729e+03  
ADI step:    2 normalized residual: 1.823277e-05   
		 normalized outer residual: 3.716729e+03  
ADI step:    3 normalized residual: 8.080043e-09   
		 normalized outer residual: 3.716729e+03  
ADI step:    5 normalized residual: 2.487653e-16   
		 normalized outer residual: 3.716729e+03  
  
 NM step:    5 normalized residual: 	3.716729e+03  
               relative change in K: 	9.998864e-01  
               number of ADI steps: 	5   
  
ADI step:    1 normalized residual: 9.754853e-02   
		 normalized outer residual: 9.289569e+02  
ADI step:    2 normalized residual: 1.776150e-05   
		 normalized outer residual: 9.289570e+02  
ADI step:    3 normalized residual: 3.027893e-09   
		 normalized outer residual: 9.289570e+02  
ADI step:    5 normalized residual: 8.850789e-17   
		 normalized outer residual: 9.289570e+02  
  
 NM step:    6 normalized residual: 	9.289570e+02  
               relative change in K: 	9.995304e-01  
               number of ADI steps: 	5   
  
ADI step:    1 normalized residual: 9.261102e-02   
		 normalized outer residual: 2.320141e+02  
ADI step:    2 normalized residual: 1.685664e-05   
		 normalized outer residual: 2.320142e+02  
ADI step:    3 normalized residual: 2.730272e-09   
		 normalized outer residual: 2.320142e+02  
ADI step:    5 normalized residual: 7.247021e-17   
		 normalized outer residual: 2.320142e+02  
  
 NM step:    7 normalized residual: 	2.320142e+02  
               relative change in K: 	9.980932e-01  
               number of ADI steps: 	5   
  
ADI step:    1 normalized residual: 8.338454e-02   
		 normalized outer residual: 5.777910e+01  
ADI step:    2 normalized residual: 1.517255e-05   
		 normalized outer residual: 5.777920e+01  
ADI step:    3 normalized residual: 2.456805e-09   
		 normalized outer residual: 5.777920e+01  
ADI step:    5 normalized residual: 1.923526e-16   
		 normalized outer residual: 5.777920e+01  
  
 NM step:    8 normalized residual: 	5.777920e+01  
               relative change in K: 	9.923460e-01  
               number of ADI steps: 	5   
  
ADI step:    1 normalized residual: 6.737154e-02   
		 normalized outer residual: 1.422321e+01  
ADI step:    2 normalized residual: 1.222729e-05   
		 normalized outer residual: 1.422331e+01  
ADI step:    3 normalized residual: 1.978868e-09   
		 normalized outer residual: 1.422331e+01  
ADI step:    5 normalized residual: 1.612093e-15   
		 normalized outer residual: 1.422331e+01  
  
 NM step:    9 normalized residual: 	1.422331e+01  
               relative change in K: 	9.698033e-01  
               number of ADI steps: 	5   
  
ADI step:    1 normalized residual: 4.397716e-02   
		 normalized outer residual: 3.344867e+00  
ADI step:    2 normalized residual: 7.806697e-06   
		 normalized outer residual: 3.344989e+00  
ADI step:    3 normalized residual: 1.261480e-09   
		 normalized outer residual: 3.344989e+00  
ADI step:    5 normalized residual: 8.233093e-15   
		 normalized outer residual: 3.344989e+00  
  
 NM step:   10 normalized residual: 	3.344989e+00  
               relative change in K: 	8.871467e-01  
               number of ADI steps: 	5   
  
ADI step:    1 normalized residual: 1.984205e-02   
		 normalized outer residual: 6.603327e-01  
ADI step:    2 normalized residual: 3.298349e-06   
		 normalized outer residual: 6.604783e-01  
ADI step:    3 normalized residual: 5.162564e-10   
		 normalized outer residual: 6.604783e-01  
ADI step:    5 normalized residual: 1.556937e-14   
		 normalized outer residual: 6.604783e-01  
  
 NM step:   11 normalized residual: 	6.604783e-01  
               relative change in K: 	6.474732e-01  
               number of ADI steps: 	5   
  
ADI step:    1 normalized residual: 5.298135e-03   
		 normalized outer residual: 7.052487e-02  
ADI step:    2 normalized residual: 1.058165e-06   
		 normalized outer residual: 7.065377e-02  
ADI step:    3 normalized residual: 1.622890e-10   
		 normalized outer residual: 7.065379e-02  
ADI step:    5 normalized residual: 6.499289e-15   
		 normalized outer residual: 7.065379e-02  
  
 NM step:   12 normalized residual: 	7.065379e-02  
               relative change in K: 	2.661734e-01  
               number of ADI steps: 	5   
  
ADI step:    1 normalized residual: 7.679310e-03   
		 normalized outer residual: 7.551888e-03  
ADI step:    2 normalized residual: 2.009181e-06   
		 normalized outer residual: 1.310633e-03  
ADI step:    3 normalized residual: 2.505520e-10   
		 normalized outer residual: 1.310721e-03  
ADI step:    5 normalized residual: 1.710550e-15   
		 normalized outer residual: 1.310721e-03  
  
 NM step:   13 normalized residual: 	1.310721e-03  
               relative change in K: 	3.750155e-02  
               number of ADI steps: 	5   
  
ADI step:    1 normalized residual: 9.727785e-03   
		 normalized outer residual: 9.727063e-03  
ADI step:    2 normalized residual: 2.849486e-06   
		 normalized outer residual: 2.816420e-06  
ADI step:    3 normalized residual: 4.139531e-10   
		 normalized outer residual: 4.797276e-07  
ADI step:    5 normalized residual: 1.104932e-15   
		 normalized outer residual: 4.797468e-07  
  
 NM step:   14 normalized residual: 	4.797468e-07  
               relative change in K: 	7.179093e-04  
               number of ADI steps: 	5   
  
ADI step:    1 normalized residual: 9.781351e-03   
		 normalized outer residual: 9.781046e-03  
ADI step:    2 normalized residual: 2.919787e-06   
		 normalized outer residual: 2.919787e-06  
ADI step:    3 normalized residual: 5.111353e-10   
		 normalized outer residual: 5.111317e-10  
ADI step:    5 normalized residual: 5.893132e-16   
		 normalized outer residual: 6.180658e-14  
  
 NM step:   15 normalized residual: 	6.180658e-14  
               relative change in K: 	2.578733e-07  
               number of ADI steps: 	5   
  
RI step:    1 normalized residual: 4.001782e-02 relative change in Z: 1.000000e+00  
               number of Newton steps:   15  
  
RADI step:    1 pc: -2.988561e+02 + 0.000000e+00i normalized residual: 6.618973e-03 relative change in Z: 1.000000e+00  
RADI step:    2 pc: -2.503193e+02 + 0.000000e+00i normalized residual: 1.614140e-06 relative change in Z: 8.854109e-02  
RADI step:    3 pc: -3.026763e+02 + 0.000000e+00i normalized residual: 1.814056e-08 relative change in Z: 1.362125e-03  
RADI step:    4 pc: -2.520617e+02 + 0.000000e+00i normalized residual: 5.525747e-12 relative change in Z: 1.478580e-04  
RI step:    2 normalized residual: 1.927978e-05 relative change in Z: 1.894557e-02  
               number of RADI steps:    4  
  
RADI step:    1 pc: -3.022723e+02 + 0.000000e+00i normalized residual: 7.811222e-03 relative change in Z: 1.000000e+00  
RADI step:    2 pc: -2.452407e+02 + 0.000000e+00i normalized residual: 1.375551e-06 relative change in Z: 9.716100e-02  
RADI step:    4 pc: -2.469370e+02 + -1.867289e+00i normalized residual: 3.886169e-13 relative change in Z: 1.277208e-03  
RI step:    3 normalized residual: 4.541195e-12 relative change in Z: 9.182042e-06  
               number of RADI steps:    4  
  
mess_lrri took   0.69 seconds   

Compute real residuals.

abserr = norm(eqn.A_' * (out.Z * out.Z') + (out.Z * out.Z') * eqn.A_ + ...
              (out.Z * out.Z') * (1 / gam^2 * (B1 * B1') - ...
                                  eqn.B2 * eqn.B2') * ...
              (out.Z * out.Z') + C1' * C1, 2);
relerr = abserr / norm(C1 * C1', 2);
mess_fprintf(opts, '\nset tolerance vs. real residual: %e | %e\n', ...
             opts.ri.res_tol, relerr);

if istest
    mess_assert(opts, relerr < opts.ri.res_tol, ...
                'TEST:accuracy', 'unexpectedly inaccurate result');
end
  
set tolerance vs. real residual: 1.000000e-10 | 4.492886e-12