You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I've been running some control systems deflating subspace methods and using ggbal for balancing. I've noticed that ggbal differs from gebal in that it scales by factors of 10 rather than factors of 2. This seems undesirable, first because 10 is not natural to the representation, and so balancing incurs some precision lost due to that scaling factor (non-reversable). This is one of the reasons gebal uses a factor of 2. The second reason is that 10 is excessively large. The extra two bits can help in solving some otherwise ill-conditioned problems. I'm not aware of any downside.
is already supported by the code. I've tested the change and this value does outperform the current value of 10, at least for my controls applications.
NOTE: I'm using the scipy wrappers, which don't currently package ggbal anyway. I've found that you can get "close" to the performance of ggbal by using the wrapped gebal on the following matrix
Age = [[0, |A|+|B|]
[1, 0]
where 1 is the identity.
The bottom and top halves of the scaling of this matrix are the right and (reciprocal) left scalings. From my experiments, even this outperforms ggbal with SCLFAC=10 since gebal uses SCLFAC=2. While this method works reasonably, it doesn't implement grading and is inefficient to double the matrix dimensions.
The text was updated successfully, but these errors were encountered:
I've been running some control systems deflating subspace methods and using ggbal for balancing. I've noticed that ggbal differs from gebal in that it scales by factors of 10 rather than factors of 2. This seems undesirable, first because 10 is not natural to the representation, and so balancing incurs some precision lost due to that scaling factor (non-reversable). This is one of the reasons gebal uses a factor of 2. The second reason is that 10 is excessively large. The extra two bits can help in solving some otherwise ill-conditioned problems. I'm not aware of any downside.
The change to line 200 in dggbal.f
is already supported by the code. I've tested the change and this value does outperform the current value of 10, at least for my controls applications.
NOTE: I'm using the scipy wrappers, which don't currently package ggbal anyway. I've found that you can get "close" to the performance of ggbal by using the wrapped gebal on the following matrix
Age = [[0, |A|+|B|]
[1, 0]
where 1 is the identity.
The bottom and top halves of the scaling of this matrix are the right and (reciprocal) left scalings. From my experiments, even this outperforms ggbal with SCLFAC=10 since gebal uses SCLFAC=2. While this method works reasonably, it doesn't implement grading and is inefficient to double the matrix dimensions.
The text was updated successfully, but these errors were encountered: