5. Dinamikus rendszerek: a SciPy használata

Fejezet tartalma

  • A SciPy modul bemutatása
  • Fejlett adatfeldolgozás a SciPy-vel
  • Fejlett adatok generálása a Matplotlib segítségével
  • Írja meg egy függvény dokumentációját

A Python tudományos moduljain belül olyan funkciók lenyűgöző gyűjteménye található, amelyek különféle műveleteket hajtanak végre a NumPy digitális tömbjein. Mindenekelőtt ezeket kell használni, nem pedig a kerék újrafeltalálásával egy máshol már létező funkció újrakódolásával (valószínűleg kevésbé jól). !

Ban ben NumPy, már láttuk, hogy sok olyan művelet van, amely lehetővé teszi például

  • meghatározott tömbök generálása: np.arange, np.ones, np.linspace, .
  • végezzen műveleteket a tömb értékeiből: np.sum, np.sin, np.histogram stb.
  • expressz (logikai) feltételek egy tömb elemein vagy egy tömb részének kibontása: np.logical_not, np.in1d
  • változtassa meg egy tömb értékeinek elrendezését, formáját, vagy akár hozzon létre egy új tömböt több közül: np.reshape, np.concatenate .
  • stb. .

A modul SciPy itt Eszköztár numerikus a NumPy tömbökhöz. Megtaláljuk SciPy klasszikus digitális adatkezelési/feldolgozási műveletek, de specifikusak egy alkalmazás típusára (lineáris algebra, statisztika stb.). Ezek tehát „magasabb szintű” funkciók, mint a NumPy.

A SciPy stabil, jól tesztelt és viszonylag jól dokumentált modul.

A SciPy modul a numpy numerikus tömbjein (ndarray) hajtja végre a különféle műveleteket. Ezért közvetlenül felhasználhatjuk ezeket a tömböket a különböző függvények argumentumaként

A SciPy használatának bemutatására a differenciálegyenletek integrálására fogunk összpontosítani, figyelembe véve a mechanikus ingákon alapuló dinamikus rendszereket.

5.1. Egyszerű inga¶

dinamikus

A dinamika alapvető kapcsolatának (a lendület megőrzése) megírásával megkapjuk az egyszerű ingaegyenletet

hol van az inga szöge a függőlegeshez képest, és egy ponttal jelöljük az idő származtatását.

Kis rezgések esetén elvégezhetjük a közelítést. Ha a közelítés nem érvényes, ezt a differenciálegyenletet numerikusan kell integrálni, hogy az inga helyzetének és szögsebességének alakulása idővel alakuljon ki.

Szükségünk van tehát a differenciálegyenletek integrátorára, amelyet elvárhat a SciPy-ben. De mi a megfelelő funkció? Próbálja ki a Google keresését a „scipy integrate differenciálegyenlet” kifejezésre, vagy nézze meg a Súgó tartalmát: http://docs.scipy.org/doc/scipy/reference/index.html. Van egy integrált almodul, amely maga is tartalmaz egy odeint függvényt

Először fel kell tennünk a 2. rendű differenciálegyenletet elsőrendű egyenletrendszer formájában

Most már integrálhatunk egy pályát egy kezdeti feltételből

Az odeint függvényhez hasonlóan számos olyan funkció létezik, amely magas szintű tudományos számítási műveleteket tesz lehetővé.

Például ellenőrizhetjük a mechanikai energia időbeli megmaradását

A fenti ábra előállításához számos parancsot használtunk a matplotlib modulból .