Numerika
Modul scipy V problémech (nejen) mechaniky se setkáváme s nutností řešit numericky například integrály, diferenciální rovnice či nejrůznější interpolace. Program Python nám nabízí modul scipy, který poskytuje mnoho funkcí "vyšší úrovně" pro vědecké výpočty. Najdeme zde zabudovaný modul na integrování, analýzu signálu či interpolace aj. Můžeme tedy zefektivnit naše výpočty použitím modulu scipy.
Podmodul scipy.integrate V modulu scipy je podmodul scipy.integrate, který zahrnuje integrování jednoduchého (quad), dvojného (dblquad ) i trojného (tplquad) integrálu. Další důležitou součástí je řešení obyčejných diferenciálních rovnic odeint. Při využívání modulu scipy se velice často pracuje také s moduly numpy a matplotlib (grafické řešení), kterým byla věnována pozornost v předchozí prezentaci o modulech.
Podmodul scipy.integrate – jednoduchý integrál
Můžeme také využít zápis pomocí funkce (def):
Podmodul scipy.integrate – vícenásobný integrál Příklad:
Podmodul scipy.integrate – obsah kruhu Příklad: odvoďte obsah kruhu o poloměru r = 6. Obsah je dvojný integrál z 1:
Podmodul scipy.integrate – ODR
Řešením je matice, kdy v každém čase t známe výchylku y. Příkladem diferenciální rovnice je také řešení průhybu nosníku analytickou metodou.
Podmodul scipy.interpolate Můžeme také velice jednoduše interpolovat zadaná data (lineární, kvadratickou, kubickou funkcí a jinými):
Podmodul scipy.optimize Scipy.optimize nám nabízí například nástroj na hledání kořenů, který využijeme především u implicitně zadané rovnice. Příklad: najděte kořen rovnice 6x = 2cos(x):
Podmodul scipy.optimize Rovnice ale mohou mít i více než jeden kořen, ale root (Newtonova metoda) nám najde vždy jeden. Záleží tedy na počáteční volbě.
Podmodul scipy.optimize
Kořeny jsou tedy 2, pro menší použijeme odhad 0 a pro větší 1:
Podmodul scipy.linalg Scipy.linalg obsahuje velké množství nástrojů pro lineární algebru. Najdeme zde například řešení soustav lineárních rovnic (solve), hledání vlastních čísel a vektorů a další funkce.
Podmodul scipy.linalg
Samozřejmě bychom mohli využít také inverzní matice, ale tato operace je náročnější na výpočetní čas, proto je vhodnější postupovat přes linalg Další možností je nalezení vlastních čísel a vektorů, k čemuž slouží eig.
Další podmoduly scipy Fourier Transforms (scipy.fftpack) - Fouvierova transformace Signal Processing (scipy.signal) - zpracování signálů Compressed Sparse Graph Routines (scipy.sparse.csgraph) Spatial data structures and algorithms (scipy.spatial) Statistics (scipy.stats) Multidimensional image processing (scipy.ndimage) File IO (scipy.io) Weave (scipy.weave) Podrobnější informace naleznete v helpu Scipy.
Děkuji za Vaši pozornost