How to choose relative error bound when using reducespec on sparse LTI model

8 views (last 30 days)
Hello everyone,
I have a sparse LTI model, named "sys", that I want to reduce with reducespec and balanced truncation.
The final model should have a maximum relative error of e.g. 30%.
I have tried the following:
R = reducespec(sys, "balanced");
R.Options.Goal = "relative";
sysR = getrom(R, MaxError=0.3, Method='truncate');
However, in contrast to the full model, the MOR specification object of the sparse model does not have the "Goal" field under "R.Options", which appears to mean that it cannot be switched to relative error bound.
Unrecognized property 'Goal' for class 'mor.SparseBalancedTruncationOptions'.
Is there another way to switch to the relative error bound, or is there a fundamental underlying reason why this is not applicable to sparse models?
Thank you in advance!

Answers (1)

Simar
Simar on 11 Jun 2024
Edited: Simar on 11 Jun 2024
Hi Dires,
The error you are encountering suggests that the mor.SparseBalancedTruncationOptions class does not support Goal property directly. This limitation might stem from specific challenges and assumptions associated with applying MOR techniques to sparse systems.Though, direct Goal option for specifying relative error bounds seems unavailable for sparse models through reducespec with balanced truncation, one can still achieve the objective by a more manual approach involving iterative reduction and error checking:
1.Error Estimation:
Use error estimation techniques to iteratively determine the order of reduction that meets your relative error criteria. This can involve:
  • Performing a preliminary reduction with a conservative guess on the order.
  • Estimating the error between the original and reduced models.
  • Adjusting the order based on the estimated error and repeating until the desired error threshold is met.
2. Custom Reduction Loop:
Implement a custom loop that reduces model order step by step, checking relative error at each step. This process continues until the error exceeds the threshold. Here is a conceptual example:
originalOrder = order(sys); % Get the original order of the system
targetError = 0.3; % 30% target error
for reducedOrder = originalOrder:-1:1 % Start from the original order and decrement
[sysR, info] = balred(sys, reducedOrder); % Perform balanced reduction
errorEstimate = norm(sys - sysR, inf) / norm(sys, inf); % Calculate relative error
if errorEstimate <= targetError
break; % Stop if the target error is met or exceeded
end
end
3.Use balred Directly:
The balred function can be used directly for balanced truncation, as shown in the loop above. While reducespec provides a more automated and potentially sophisticated approach, balred offers a straightforward mechanism for reduction that, when combined with manual error checking, can achieve the goal.
The fundamental reason for absence of straightforward Goal option for relative error bounds in sparse model reduction could be related to the computational complexity and stability of calculating such metrics for sparse systems. Sparse systems often involve large-scale data where efficiency and accuracy in error estimation are more challenging to balance.
Hope it helps!
Best Regards,
Simar

Categories

Find more on Genomics and Next Generation Sequencing in Help Center and File Exchange

Products


Release

R2024a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!