scipy.optimize — Znajdowanie miejsc zerowych i minimalizacja

Podmoduł scipy.optimize udostępnia proste procedury znajdowania miejsc zerowych i minimów zdefiniowanych przez użytkownika funkcji skalarnych. Ponieważ każda iteracja musi wywoływać dostarczony przez użytkownika obiekt wywoływalny Pythona, zysk szybkości względem implementacji w czystym Pythonie jest umiarkowany (zwykle około 2x).

Funkcje

scipy.optimize.bisect(f: Callable[[float], float], a: float, b: float, *, xtol: float = xtolerance, maxiter: int = 100) float

Znajduje miejsce zerowe f w przedziale [a, b] metodą bisekcji. f musi zmieniać znak na tym przedziale.

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

  • a – lewy koniec przedziału.

  • b – prawy koniec przedziału.

  • xtol – tolerancja bezwzględna położenia miejsca zerowego (domyślnie xtolerance).

  • maxiter – maksymalna liczba bisekcji (domyślnie 100).

Zwraca:

położenie miejsca zerowego jako float.

Wyrzuca:

ValueError – jeśli f(a) * f(b) > 0.

scipy.optimize.curve_fit(f: Callable[..., float], xdata: ndarray | list | tuple, ydata: ndarray | list | tuple, p0: ndarray | list | tuple, *, xatol: float = xtolerance, fatol: float = xtolerance, maxiter: int | None = None) None

Zaślepka dla nieliniowego dopasowania krzywej metodą najmniejszych kwadratów (Levenberg-Marquardt). Obecna w tablicy modułu dla zgodności API, lecz obecnie jest to tylko placeholder: przyjmuje i waliduje swoje argumenty, ale zawsze zwraca None. Do czasu zaimplementowania tej procedury preferuj fmin() lub biblioteki zewnętrzne.

Parametry:
  • f – obiekt wywoływalny modelu f(x, *params) -> float.

  • xdata – 1-wymiarowa struktura przypominająca tablicę z wartościami niezależnymi.

  • ydata – 1-wymiarowa struktura przypominająca tablicę z wartościami zależnymi, o tej samej długości co xdata.

  • p0 – 1-wymiarowa struktura przypominająca tablicę z początkowymi oszacowaniami parametrów.

scipy.optimize.fmin(f: Callable[[float], float], x0: float, *, xatol: float = xtolerance, fatol: float = xtolerance, maxiter: int = 200) float

Znajduje położenie lokalnego minimum funkcji skalarnej f metodą sympleksu opadającego (Neldera-Meada).

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

  • x0 – wstępne przybliżenie.

  • xatol – tolerancja bezwzględna położenia (domyślnie xtolerance).

  • fatol – tolerancja bezwzględna wartości funkcji (domyślnie xtolerance).

  • maxiter – maksymalna liczba iteracji (domyślnie 200).

Zwraca:

położenie minimum jako float.

scipy.optimize.newton(f: Callable[[float], float], x0: float, *, tol: float = xtolerance, rtol: float = rtolerance, maxiter: int = 50) float

Znajduje miejsce zerowe rzeczywistej funkcji skalarnej f metodą Newtona-Raphsona (siecznych).

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

  • x0 – wstępne przybliżenie.

  • tol – tolerancja bezwzględna miejsca zerowego (domyślnie xtolerance).

  • rtol – tolerancja względna miejsca zerowego (domyślnie rtolerance).

  • maxiter – maksymalna liczba iteracji (domyślnie 50).

Zwraca:

położenie miejsca zerowego jako float.