arrayfire / arrayfire/arrayfire-python

Bugs in af.approx1()

Offen
#135 2 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
Python
Sterne
422
Forks
63
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

Convergence checks performed on the ArrayFire routines for interpolation seem to indicate a few mistakes:

The following plot is generated using `af.INTERP.CUBIC`
![download 9](https://cloud.githubusercontent.com/assets/19583419/24001222/90a839b2-0a83-11e7-8d61-dac9f4fd45a3.png)

The order of convergence comes out to be ![image](https://cloud.githubusercontent.com/assets/19583419/24001620/abd1cd74-0a84-11e7-8690-c6f68882734f.png), while the expected convergence rate is ![image](https://cloud.githubusercontent.com/assets/19583419/24001712/dffcefd4-0a84-11e7-99d5-6475b2de7c79.png). I checked with `af.INTERP.CUBIC_SPLINE` as well. Even in that case the order of convergence comes out to be ![image](https://cloud.githubusercontent.com/assets/19583419/24001738/fa04291a-0a84-11e7-8fcb-946a8b3e8602.png)

![download 8](https://cloud.githubusercontent.com/assets/19583419/24001789/174c4f2a-0a85-11e7-8af0-582a153b6123.png)

Another issue is the fact that the error doesn't drop below 1e-7. The SciPy interpolation function `interp1d` using cubic interpolation gives this:

![download 19](https://cloud.githubusercontent.com/assets/19583419/24001909/4fb536f6-0a85-11e7-8339-16767b8bd4eb.png)

For your reference - this is the [code](https://gist.github.com/ShyamSS-95/ad0065e984b76d1ccaecc5e21b425734) I'd used to generate the plots.

Also regarding issue #130 - I've realised that the mistake was on my part. I should have added the off-set in the indexing to the normalized interpolant points.

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Rechercherichtung

Start by running the linked reproduction code and examining af.approx1 with af.INTERP.CUBIC and af.INTERP.CUBIC_SPLINE. Compare the observed convergence rates and error floor with SciPy's interp1d; done means identifying and correcting the interpolation behavior so the expected convergence and accuracy are restored.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
backend
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Muss geklärt werden
Anfängerfreundlichkeit
30/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.