Skip to content

add numerator degree m to control.pade #73

Description

@jason-s

Pade approximants to e^-sT with equal degrees for the numerator and denominator have some undesirable properties, in particular the behavior right at time t=0. Miklós Vajta has a nice paper exploring the effects of using a slightly lower degree for the numerator and it would be helpful to add an optional argument control.pade(T, n=1, m=None) where if m is None, it is set equal to n, otherwise it provides an independent degree for the numerator. (restricted to 0 ≤ m ≤ n).

I am not exactly familiar with the right numerical way to construct polynomials of this type; I have done some exploration by calculating the polynomial coefficients of the Taylor series of degree m+n for e^-sT and then using scipy.misc.pade to compute an nth-degree rational approximant. This seems to work fairly well for small degrees but I suspect it has deficiencies of numerical errors.

Here's some example plots showing the issue for (m,n) = (7,11) and (m,n) = (11,11):

image

image

The equal-degree rational approximation produces lower error after the step begins, but has a lot of oscillation during the delay time; lower degrees in the numerator produce a "quieter" delay, at the cost of a worse approxiation after the step begins.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions