A függvények bonyolult kombinációját próbálom integrálni a scipy.integration.quadrature használatával, és pontossági figyelmeztetéseket ad, és a „Legújabb különbség” értékei a következők: (gulp) nan:
'C:\Program Files\Anaconda3\lib\site-packages\scipy\integrate\quadrature.py:199: Pontosság Figyelmeztetés: a maxiter (1000) túllépve. Legutóbbi különbség = nan'
A probléma hasonlónak tűnik ehhez a bejegyzéshez, de más integrációs módszerrel, és a paraméterek eltérőek.
SciPy Quad integráció: Pontossági figyelmeztetés
Az eredeti függvénykészlet közzététele helyett itt van egy példa egy egyszerűbb függvényre, amely figyelmeztetést is küld, bár a „legutóbbi különbség” értékek itt valójában definiált számok.
def func(phi):
return phi**3
def func2(phi):
return 1/(phi)
def int(phi):
return func(phi)/abs(2/func2(phi)**5)
res, err = integrate.quadrature(int, 0, 1, maxiter=10)
print("The numerical result is {:f} (+-{:g})"
.format(res, err))
Kérdés: miért fordul elő ez a viselkedés (figyelmeztetés és értékek)?
Megjegyzem, hogy a maxiter
érték itt történő növelése (pl. 10-es hatványokkal) drasztikusan megváltoztatja az eredményt, de a Legutóbbi különbségértékek nőnek - arra utal, hogy az integrál eltér az eredménytől.
Érdekes módon a scipy.integration.quad
használata ugyanazokkal a bemenetekkel figyelmeztetést ad: „Az integrál valószínűleg divergens, vagy lassan konvergens. warnings.warn(msg, IntegrationWarning)'. Tehát ez csak egy rossz funkcióválasztás esete az integrációhoz? Vegye figyelembe, hogy ez nem a tényleges funkció, hanem az, amely hasonló (de nem azonos) viselkedést biztosít.