2017-04-19 39 views

回答

5

存在steprelax參數以允許用戶僅運行集成算法的部分而不是完全集成。它們對於測試算法的內部結構非常有用,但對普通用戶並不特別有用。

這兩個參數都被視爲布爾標誌來選擇不同類型的部分集成。如果step爲真(非零),則integrate()運行集成器的step()方法,其文檔字符串表示"""Make one integration step and return (y1,t1)."""基本上,它在正常集成過程中僅運行一個步驟。

如果relax真(非零),然後integrate()運行積分的run_relax()方法,它的文檔字符串表示"""Integrate from t=t0 to t>=t1 and return (y1,t)."""基本上,它直到它通過所需的值運行一體化,但不會做多餘的背步驟指定的值。

這一切都可以在IntegratorBase source code中看到。


編輯:我開了SciPy的pull請求澄清這些文檔:https://github.com/scipy/scipy/pull/7320/

+0

這是否意味着'步= FALSE'拋出默認情況下,所有的中間步驟是什麼?另外,你是什麼意思的後退 - 是簡單的插值?如果你像在[例子](https://docs.scipy.org/doc/scipy-0.18.1/reference/generated/scipy)中所做的那樣在循環中運行'integration'方法,這兩者看起來都是奇怪的行爲。 integrate.ode.html)。在第一種情況下,你正在失去大量有用的信息,並可能不必要地重做大量工作。在第二種情況下,你正在積累內插誤差。我誤解任何東西嗎? – dkv

+0

是的,''step = False''拋出算法中的中間結果,是的,後退是插值。如果你真的對算法的細節感興趣,我建議閱讀[VODE源代碼](http://www.netlib.org/ode/vode.f)。 「step = True」相當於設置「ITASK = 2」,「relax = True」相當於設置「ITASK = 3」。 – jakevdp

+0

我主要對完全理解API而非實現細節感興趣。此外,還有其他集成商可以用來代替vode,如lsoda或dopri5。 – dkv

相關問題