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