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: [40x1 double] Energy: [40x1 double] Error: [40x1 double] Lr: [7522x40 double] Lo: [7522x123 double] Residuals: [6.2579e-09 8.9726e-09] Options: [1x1 mor.SparseBalancedTruncationOptions]
Utilice el comando view
para visualizar las contribuciones de estado como valores singulares de Hankel
view(R,"sigma")
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--')
El modelo de orden reducido es una buena elección para el modelo de orden completo.
Consulte también
Funciones
Objetos
Temas relacionados
- Task-Based Model Order Reduction Workflow
- Sparse Model Basics
- Heat Distribution in Circular Cylindrical Rod (Partial Differential Equation Toolbox)