Contenido principal

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

Truncamiento equilibrado disperso de un modelo térmico

Desde R2023b

Este ejemplo muestra cómo realizar un truncamiento equilibrado de un modelo disperso de espacio de estados obtenido linealizando un modelo térmico de distribución de calor en una barra cilíndrica.

Cargue los datos del modelo.

load cylindricalRod.mat
sys = sparss(A,B,C,D,E);
size(sys)
Sparse state-space model with 3 outputs, 1 inputs, and 7522 states.

El modelo térmico contiene 7522 estados.

Cree un objeto de especificación del truncamiento equilibrado para sys y ejecute el algoritmo.

R = reducespec(sys,"balanced");
R = process(R)
Initializing...
Running ADI with built-in shifts.........
Running ADI with adaptive shifts..
Solved Lyapunov equations to desired accuracy.
R = 
  SparseBalancedTruncation with properties:

        Sigma: [40×1 double]
       Energy: [40×1 double]
        Error: [40×1 double]
           Lr: [7522×40 double]
           Lo: [7522×123 double]
    Residuals: [6.2579e-09 8.9726e-09]
      Options: [1×1 mor.SparseBalancedTruncationOptions]

Utilice el comando view para visualizar las contribuciones de estado como valores singulares de Hankel.

view(R,"sigma")

MATLAB figure

Obtenga el modelo de orden reducido con un error máximo de 1e-6. El resultado es un modelo con orden 8.

rsys = getrom(R,MaxError=1e-6,Method="truncate");

Compare la respuesta de los valores singulares de los modelos.

w = logspace(-7,-3,20);
fsys = frd(sys,w);
sigma(fsys,fsys-rsys,'r--')

MATLAB figure

El modelo de orden reducido es una buena elección para el modelo de orden completo.

Consulte también

Funciones

Objetos

Temas