Samouczek Python Scipy

Samouczek Python Scipy
W tej lekcji zobaczymy, jaki jest zastosowanie biblioteki Scipy w Python i jak pomaga nam pracować z równaniami matematycznymi i algorytmami w interaktywny sposób. Dobrą rzeczą w pakiecie Scipy Python jest to, że jeśli chcemy klas lub konstruujemy strony internetowe, Scipy jest w pełni kompatybilny z systemem jako całości i może zapewnić bezproblemową integrację.

Jak Scipy jest open source, Ma bardzo aktywną i tętniącą życiem społeczność programistów, dzięki którym istnieje ogromna liczba modułów dla ogromnej ilości zastosowań naukowych i obliczeń dostępnych z Scipy. Niektóre z złożonych operacji matematycznych, które można wykonać za pomocą SCIPY, to:

  • Interpolacja
  • Integracja
  • Optymalizacja
  • Przetwarzanie obrazu
  • Statystyka
  • Obliczenia funkcji specjalnych itp.

SCIPY można porównać do większości bibliotek poleceń i standardowych, takich jak biblioteka GSL dla C ++ i Matlab. Ponieważ Scipy jest zbudowany na pakiecie Numpy, te dwa pakiety można również całkowicie zintegrować. Jeśli potrafisz wymyślić operację matematyczną, którą należy wykonać, upewnij się, że sprawdziłeś bibliotekę scipy przed wdrożeniem tego modułu samodzielnie, ponieważ w większości przypadków SCIPY ma już wszystkie operacje w pełni zaimplementowane.

Zainstaluj bibliotekę Scipy

Zainstalujmy bibliotekę Scipy, zanim przejdziemy do faktycznych przykładów i koncepcji. Istnieją dwa sposoby zainstalowania tego pakietu. Pierwszy obejmuje korzystanie z Python Pakiet Manager, PIP:

instaluj scipy

Drugi sposób dotyczy Anacondy, możemy zainstalować pakiet jako:

CDED instaluj -C Anaconda Scipy

Po zainstalowaniu biblioteki możemy ją zaimportować jako:

Import Scipy

Wreszcie, ponieważ będziemy również korzystać z Numpy (zaleca się, aby dla wszystkich operacji Numpy używamy Numpy bezpośrednio zamiast przeglądania pakietu Scipy):

Importuj Numpy

Możliwe, że w niektórych przypadkach chcielibyśmy również wykreślić nasze wyniki, dla których użyjemy biblioteki Matplotlib. Wykonaj następujący import dla tej biblioteki:

importować matplotlib

Będę korzystać z menedżera Anaconda do wszystkich przykładów w tej lekcji. Uruchomię notatnik Jupyter dla tego samego:

Teraz, gdy jesteśmy gotowi ze wszystkimi instrukcjami importu, aby napisać kod, zacznijmy nurkować w pakiecie Scipy z niektórymi praktycznymi przykładami.

Praca z równaniami wielomianowymi

Zaczniemy od spojrzenia na proste równania wielomianowe. Istnieją dwa sposoby, z którymi możemy zintegrować funkcje wielomianowe z naszym programem. Możemy korzystać z Poly1d klasa, która wykorzystuje współczynniki lub korzenie wielomianu do inicjalizacji wielomianu. Spójrzmy na przykład:

z Numpy Import Poly1d
First_polynomial = poli1d ([3, 4, 7])
Drukuj (First_polynomial)

Po uruchomieniu tego przykładu zobaczymy następujące dane wyjściowe:

Oczywiście wielomianowa reprezentacja równania jest drukowana jako wyjście, aby wynik był dość łatwy do zrozumienia. Możemy również wykonywać różne operacje tego wielomianu, takie jak kwadratowe, znaleźć jego pochodną, ​​a nawet rozwiązać wartość x. Spróbujmy zrobić to wszystko w następnym przykładzie:

Drukuj („kwadrat wielomian: \ n”)
print (First_polynomial * First_polynomial)
Drukuj („pochodna wielomianu: \ n”)
Drukuj (First_polynomial.pochodne ())
Drukuj („Rozwiązanie wielomianu: \ n”)
print (First_polynomial (3))

Po uruchomieniu tego przykładu zobaczymy następujące dane wyjściowe:

Właśnie wtedy, gdy myślałem, że to wszystko, co moglibyśmy zrobić z Scipy, przypomniałem sobie, że możemy również zintegrować wielomian. Uruchom ostateczny przykład z wielomianami:

Drukuj („Integracja wielomianu: \ n”)
Drukuj (First_polynomial.Integ (1))

Liczba, którą przekazujemy, mówi pakietowi, ile razy zintegrować wielomian:

Możemy po prostu przekazać kolejną liczbę całkowitą, która mówi pakietowi, ile razy zintegrować ten wielomian.

Rozwiązywanie równań liniowych

Możliwe jest nawet rozwiązanie równań liniowych z Scipy i znalezienie ich korzeni, jeśli istnieją. Aby rozwiązać równania liniowe, reprezentujemy zestaw równań jako tablicy Numpy i ich rozwiązanie jako osobne tablice Numpy. Wizualizujmy to z przykładem, w którym robimy to samo i używamy Linalg Pakiet do znalezienia korzeni równań, oto równania, które będziemy rozwiązać:

1x + 5y = 6
3x + 7y = 9

Rozwiążmy powyższe równania:

z scipy import Linalg
Równanie = NP.tablica ([[1, 5], [3, 7]])
Rozwiązanie = NP.tablica ([[6], [9]])
korzenie = Linalg.Rozwiąż (równanie, rozwiązanie)
druk („Znaleziono korzenie:”)
Drukuj (korzenie)
Drukuj („produkt DOT powinien wynosić zero, jeśli rozwiązania są prawidłowe:”)
Drukuj (równanie.kropka (korzenie) - rozwiązanie)

Po uruchomieniu powyższego programu zobaczymy, że równanie produktu DOT daje zero wyniku, co oznacza, że ​​korzenie, które znaleziono program, były prawidłowe:

Transformacje Fouriera z Scipy

Transformacje Fouriera pomagają nam wyrażać funkcję jako oddzielne komponenty, które składają się na tę funkcję i kieruje nas o sposób, w jaki możemy rekombinacja tych komponentów, aby odzyskać oryginalną funkcję.

Spójrzmy na prosty przykład transformacji Fouriera, w którym wykreślamy sumę dwóch cosinków za pomocą biblioteki Matplotlib:

od Scipy.FFTPACK Import FFT
# Liczba punktów przykładowych
N = 500
# Odstępy próbki
T = 1.0/800.0
x = np.Linspace (0.0, n*t, n)
y = np.CO (50.0 * 2.0* np.pi * x) + 0.5 * np.CO (80.0 * 2.0 * np.pi * x)
yf = fft (y)
xf = np.Linspace (0.0, 1.0/(2.0 * t), n // 2)
# matplotlib do planowania
importować matplotlib.Pyplot as Plt
plt.Wykres (XF, 2.0/n * np.ABS (yf [0: n // 2]))
plt.Tytuł („Informacje”)
plt.YLabel („Oś y”)
plt.xlabel („osi x”)
plt.siatka()
plt.pokazywać()

Tutaj zaczęliśmy od zbudowania przestrzeni próbki i równania cosinus, które następnie przekształciliśmy i wykreślaliśmy. Oto dane wyjściowe powyższego programu:

Jest to jeden z dobrych przykładów, w którym widzimy, jak Scipy jest używany w złożonym równaniu matematycznym do łatwej wizualizacji rzeczy.

Wektory i matryca z scipy

Teraz, gdy znamy wiele rzeczy, do których jest zdolny, możemy być pewni, że Scipy może również współpracować z wektorami i matrycą. Matryce są ważną częścią algebry liniowej, ponieważ matryce są czymś, czego używamy do reprezentowania mapowań wektorowych.

Tak jak spojrzeliśmy na rozwiązywanie równań liniowych z Scipy, możemy reprezentować wektory z NP.szyk() Funkcje. Zacznijmy od zbudowania matrycy:

my_matrix = np.Matrix (NP.losowy.losowy ((3, 3)))
Drukuj (my_matrix)

Oto dane wyjściowe powyższego fragmentu:

Ilekroć mówimy o macierzach, zawsze rozmawiamy o wartościach własnych i wektorach własnych. Mówiąc prostymi słowami, wektory własne są wektorami, które po pomnożeniu matrycy nie zmieniają ich kierunku, w przeciwieństwie do większości wektorów. Oznacza to, że nawet gdy pomnożysz wektory własne z matrycą, istnieje wartość (lub wartość własna), która jest jednym z współczynników mnożenia. To znaczy:

Ax = λx.

W powyższym równaniu A jest macierzą, λ jest wartością własną, a X jest wektorem. Napiszmy prosty fragment kodu, aby znaleźć wartości własne dla danego wektora:

LA, wektor = Linalg.eig (my_matrix)
Drukuj (wektor [:, 0])
Drukuj (wektor [:, 1])
Drukuj (Linalg.eigvals (my_matrix))

Po uruchomieniu tego przykładu zobaczymy następujące dane wyjściowe:

Obliczanie wyznacznika macierzy

Następną operacją, którą przeprowadzimy z Scipy, jest obliczenie wyznacznika matrycy 2-wymiarowej. Ponownie wykorzystamy matrycę, której użyliśmy w ostatnim fragmencie kodu tutaj:

Linalg.Det (my_matrix)

Po uruchomieniu tego przykładu zobaczymy następujące dane wyjściowe:

Wniosek

W tej lekcji przyjrzeliśmy się wielu dobrym przykładom, w których Scipy może nam pomóc, przeprowadzając dla nas złożone obliczenia matematyczne z łatwym w użyciu interfejsów API i pakietów.