This issue concerns the method _identify_uncertainty_upper_bound as it appears in the module src/dkpy/uncertainty_bound.py in the branch feature/22-add-equivalent-of-matlabs-ucover as of the time of this post.
The problem tackled by the method is the one of finding a transfer function whose gain response bounds from above the greatest maximum singular value (m.s.v.) response of residuals. The solution offered is one carried out by a call to scipy.optimize.minimize. The initial guess hard-coded into the method as of posting this issue is $$w_E(s) = \frac{a}{s^n + 1},$$ where $a$ is the peak of the greatest m.s.v. response array and $n$ is the chosen order.
This choice works as intended for the example provided in src/tests/test_uncertainty_bound.py, but is not the best choice.
The suggestion is to look into coding a method that fits a transfer function, $\tilde{w}_E(s)$, to a gain response (with no phase information), and use $$\tilde{w}_E(s) + \beta$$ as the initial guess. Here, $\beta$ is the smallest difference between the greatest m.s.v. response and $|\tilde{w}_E(j \omega)|$ over the whole frequency range, and would be included to make the initial guess feasible with respect to the optimization constraints.
The book chapter "Rational Fitting Techniques for the Modeling of Electric Power Components and Systems Using MATLAB Environment" by Bañuelos-Cabral et al. (available here) demonstrates how to do this.
This issue concerns the method
_identify_uncertainty_upper_boundas it appears in the modulesrc/dkpy/uncertainty_bound.pyin the branchfeature/22-add-equivalent-of-matlabs-ucoveras of the time of this post.The problem tackled by the method is the one of finding a transfer function whose gain response bounds from above the greatest maximum singular value (m.s.v.) response of residuals. The solution offered is one carried out by a call to$$w_E(s) = \frac{a}{s^n + 1},$$ where $a$ is the peak of the greatest m.s.v. response array and $n$ is the chosen
scipy.optimize.minimize. The initial guess hard-coded into the method as of posting this issue isorder.This choice works as intended for the example provided in
src/tests/test_uncertainty_bound.py, but is not the best choice.The suggestion is to look into coding a method that fits a transfer function,$\tilde{w}_E(s)$ , to a gain response (with no phase information), and use $$\tilde{w}_E(s) + \beta$$ as the initial guess. Here, $\beta$ is the smallest difference between the greatest m.s.v. response and $|\tilde{w}_E(j \omega)|$ over the whole frequency range, and would be included to make the initial guess feasible with respect to the optimization constraints.
The book chapter "Rational Fitting Techniques for the Modeling of Electric Power Components and Systems Using MATLAB Environment" by Bañuelos-Cabral et al. (available here) demonstrates how to do this.