Title: ENH: add `linform` to compute linear system L-infinity norm by roryyorke · Pull Request #729 · python-control/python-control · GitHub
Open Graph Title: ENH: add `linform` to compute linear system L-infinity norm by roryyorke · Pull Request #729 · python-control/python-control
X Title: ENH: add `linform` to compute linear system L-infinity norm by roryyorke · Pull Request #729 · python-control/python-control
Description: linfnorm requires Slycot routine ab13dd, which does the actual work. Added tests for SISO and MIMO continuous- and discrete-time. MIMO reference values are generated by linfnorm itself, but results have been reviewed graphically for correctness. The MIMO tests rely, unfortunately, on circular logic: the very function being tested has been used to generate test data. I could scour the various textbooks I have for independent examples, but I'm more-or-less assuming that SLICOT's AB13DD is correct, and the tests are to make sure no gross errors have occurred in wrapping. I've tried to cover the various possible cases of gpeak finite (but non-zero) and infinite, and fpeak 0, finite and non-zero, and infinite. I just realized I haven't checked for gpeak = 0; I'll add that (system would have to be non-minimal, or be a static gain of 0; I'll try the former first). Below are the MIMO test cases for review; everything looks OK to me. The left-hand figures are continuous-time, the right-hand discrete time. While doing this rather hacky test-generation, I found that StateSpace's repr is not eval-able; this is due, in turn, to numpy.ndarray's repr not being eval-able. I don't know why that is, but I monkey-patched StateSpace.__repr__ to address this. This new repr is eval-able, and I think looks a little better too (look in linfnorm_mimo_testcases.py for examples).
Open Graph Description: linfnorm requires Slycot routine ab13dd, which does the actual work. Added tests for SISO and MIMO continuous- and discrete-time. MIMO reference values are generated by linfnorm itself, but result...
X Description: linfnorm requires Slycot routine ab13dd, which does the actual work. Added tests for SISO and MIMO continuous- and discrete-time. MIMO reference values are generated by linfnorm itself, but result...
Opengraph URL: https://github.com/python-control/python-control/pull/729
X: @github
Domain: github.com
| route-pattern | /:user_id/:repository/pull/:id/checks(.:format) |
| route-controller | pull_requests |
| route-action | checks |
| fetch-nonce | v2:73bd41c9-9a3c-34a1-0343-78878d60526e |
| current-catalog-service-hash | 87dc3bc62d9b466312751bfd5f889726f4f1337bdff4e8be7da7c93d6c00a25a |
| request-id | A7DC:3B930D:203A22F:2D9CE36:697A589A |
| html-safe-nonce | 132b51ac8f01b96ec67652b5ad2b527da4db76e78e35ed8bfaed396399be6d1c |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJBN0RDOjNCOTMwRDoyMDNBMjJGOjJEOUNFMzY6Njk3QTU4OUEiLCJ2aXNpdG9yX2lkIjoiNTEzNDU4ODczNjQ3Nzc0NzM1NCIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | 016fd6d2aa2510c24faccc2358c1f5e79e402bc37792ad5fd6aa610e9e675406 |
| hovercard-subject-tag | pull_request:917454914 |
| github-keyboard-shortcuts | repository,pull-request-list,pull-request-conversation,pull-request-files-changed,checks,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/python-control/python-control/pull/729/checks |
| twitter:image | https://avatars.githubusercontent.com/u/110974?s=400&v=4 |
| twitter:card | summary_large_image |
| og:image | https://avatars.githubusercontent.com/u/110974?s=400&v=4 |
| og:image:alt | linfnorm requires Slycot routine ab13dd, which does the actual work. Added tests for SISO and MIMO continuous- and discrete-time. MIMO reference values are generated by linfnorm itself, but result... |
| og:site_name | GitHub |
| og:type | object |
| hostname | github.com |
| expected-hostname | github.com |
| None | a2296221ffa83b7f45f8ba9b62e1aed869492cb43693309e51b8111607e38282 |
| turbo-cache-control | no-preview |
| go-import | github.com/python-control/python-control git https://github.com/python-control/python-control.git |
| octolytics-dimension-user_id | 2285872 |
| octolytics-dimension-user_login | python-control |
| octolytics-dimension-repository_id | 22791752 |
| octolytics-dimension-repository_nwo | python-control/python-control |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 22791752 |
| octolytics-dimension-repository_network_root_nwo | python-control/python-control |
| turbo-body-classes | logged-out env-production page-responsive full-width full-width-p-0 |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 46d8a07df71eb59259545c68ce36abf1075d2fca |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width