GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | ||||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | ||||||||||||||||
GeezerVison is showing github.com — stability_margins: 'poly' (and default 'best') returns spurious gain crossovers for discrete-time systems of moderate order; the root tolerance eps**(1/n) grows with degree · Issue #1266 · python-control/python-control Open DescriptionFor discrete-time systems,
(control 0.10.2, numpy 2.5.4. "True" is from a dense grid with the one gain crossing refined by bisection.) import warnings import numpy as np import control as ct warnings.simplefilter("ignore") for N in (8, 17, 144): num = np.r_[0.0, np.full(N, 1.0 / N)] # T over z^N L = ct.tf(num, np.polysub(np.r_[1.0, np.zeros(N)], num), dt=1) for method in ("poly", "best", "frd"): gm, pm, sm, wpc, wgc, wms = ct.stability_margins(L, method=method) print(N, method, round(pm, 3), "|L| at wgc:", round(abs(complex(L(np.exp(1j * wgc)))), 4)) At N = 144, Cause. Suggested fix. Accept a candidate only if Workaround. Pass an FRD on a grid that covers the crossover. Plain Related but different: #523, fixed for a low-order example. Activity
MetadataMetadataAssigneesLabelsNo labels TypeProjectsMilestoneRelationshipsDevelopmentIssue actions | ||||||||||||||||
| You are visitor 01402503 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |