scipy.integrate — Całkowanie numeryczne

Podmoduł scipy.integrate udostępnia procedury całkowania numerycznego dla rzeczywistych funkcji jednej zmiennej. Algorytmy nie są przeniesione z scipy.integrate z CPythona, lecz wywodzą się z implementacji referencyjnej dostępnej pod adresem https://www.genivia.com/qthsh.html.

Całkowanie numeryczne działa najlepiej przy włączonej arytmetyce float64. Przy arytmetyce float32 procedury nadal działają, ze zmniejszoną precyzją. Wymaganą tolerancję błędu można określić za pomocą argumentu nazwanego eps; wartością domyślną jest ustalana podczas kompilacji wartość etolerance (1e-14 dla fp64, 1e-8 dla fp32). Liczby zespolone nie są obsługiwane.

Funkcje

scipy.integrate.quad(f: Callable[[float], float], a: float, b: float, *, order: int = 5, eps: float = etolerance) tuple[float, float]

Całkuje f od a do b przy użyciu adaptacyjnej kwadratury Gaussa-Kronroda (G10, K21). To zalecany całkownik ogólnego przeznaczenia.

Parametry:
  • f – obiekt wywoływalny przyjmujący pojedynczy float i zwracający float.

  • a – dolna granica całkowania.

  • b – górna granica całkowania.

  • order – rząd całkowania (domyślnie 5).

  • eps – tolerancja błędu (domyślnie etolerance).

Zwraca:

2-krotkę (result, error) liczb float podającą wartość całki oraz oszacowanie błędu.

scipy.integrate.romberg(f: Callable[[float], float], a: float, b: float, *, steps: int = 100, eps: float = etolerance) float

Całkuje f od a do b metodą Romberga, wzorem Newtona-Cotesa, który oblicza wartości całkowanej funkcji w równoodległych punktach. Najlepiej nadaje się do funkcji o ciągłych pochodnych. Należy pamiętać, że scipy.integrate.romberg jest przestarzałe w CPythonie od wersji SciPy 1.12.0; w nowym kodzie preferuj quad().

Parametry:
  • f – obiekt wywoływalny przyjmujący pojedynczy float i zwracający float.

  • a – dolna granica całkowania.

  • b – górna granica całkowania.

  • steps – liczba kroków (domyślnie 100).

  • eps – tolerancja błędu (domyślnie etolerance).

Zwraca:

wartość całki jako float.

scipy.integrate.simpson(f: Callable[[float], float], a: float, b: float, *, steps: int = 100, eps: float = etolerance) float

Całkuje f od a do b przy użyciu adaptacyjnej reguły Simpsona. W przeciwieństwie do scipy.integrate.simpson z CPythona ta funkcja przyjmuje obiekt wywoływalny i sama wybiera odstęp między próbkami, zamiast przyjmować tablicę wstępnie obliczonych wartości funkcji.

Parametry:
  • f – obiekt wywoływalny przyjmujący pojedynczy float i zwracający float.

  • a – dolna granica całkowania.

  • b – górna granica całkowania.

  • steps – liczba kroków (domyślnie 100).

  • eps – tolerancja błędu (domyślnie etolerance).

Zwraca:

wartość całki jako float.

scipy.integrate.tanhsinh(f: Callable[[float], float], a: float, b: float, *, levels: int = 6, eps: float = etolerance) tuple[float, float]

Całkuje f od a do b przy użyciu rodziny kwadratur Tanh-Sinh, Sinh-Sinh i Exp-Sinh (podwójnie wykładniczych). To procedura, której należy używać, gdy funkcja całkowana ma osobliwości lub nieskończone pochodne na krańcach przedziału, i jest jedyną procedurą w tym podmodule akceptującą nieskończone granice całkowania (np. -np.inf, np.inf).

Parametry:
  • f – obiekt wywoływalny przyjmujący pojedynczy float i zwracający float.

  • a – dolna granica całkowania; może być -np.inf.

  • b – górna granica całkowania; może być np.inf.

  • levels – liczba poziomów zagęszczania (domyślnie 6).

  • eps – tolerancja błędu (domyślnie etolerance).

Zwraca:

2-krotkę (result, error) liczb float podającą wartość całki oraz oszacowanie błędu.