SciPy

SciPy

Avtor: Anja Misja

Uvod

Za reševanje problemov v matematiki obstaja precej dodatkov za programe in programske jezike. Takšen dodatek je tudi knjižnica SciPy, namenjen uporabi v programskem jeziku Python.

Osnovna podatkovna struktura v SciPy je večdimenzionalni seznam, ki ga ponuja knjižnica NumPy.

  • Knjižnica SciPy ni del Pythona, potrebno jo je namestiti posebej.
  • S SciPy postane Python podoben drugim programskim jezikom, kot so MATLAB, IDL, Octave, R-Lb in SciLab.
  • Mogoče jo je uporabljati tako na Linux kot na Windows operacijskih sistemih.
(logoSciPy.png)
SciPy logotip

Python, NumPy, Matplotlib

Python

Je programski jezik, ki je namenjen objektnemu programiranju.


Numpy

Je dodatna knjižnica za Python, ki vsebuje napisane matematične algoritme, ki so hkrati optimizirani za računanje (Fourier, naključni generatorji, Laplaceove transformacije ipd.)


Matplotlib

Je dodatna knjižnica za Python, namenjena risanju grafov, pretvorbo slik v različne formate.

Uporaba knjižnice

  • Knjižnica SciPy uporabniku nudi veliko večjo interakcijo s Phythonom, tako, da mu ponuja nove ukaze in nove razrede za risanje ter obdelavo podatkov.
  • Za delo s knjižnico SciPy moramo najprej pognati IDLE
  • Ker je to v osnovi orodje za programiranje, lahko seveda vse pišemo v urejevalnik in potem našo kodo poženemo kot vsak program
  • Preden začnemo uporabljati knjižnico SciPy, jo moramo uvoziti v program Python. To storimo z ukazom >>>import scipy as ap
  • Knjižnica SciPy vsebuje različne podpakete. Na primer želimo uporabljati podpaket za optimizacijo in za linearno algebro: >>>from scipy import optimize, linalg
(uvozKnjiznice.png)
Uvoz knjižnice v program in primer kako uporabljati podpaket

Podpaketi knjižnice SciPy

SciPy knjižnica vsebuje različne podpakete, ki jih lahko glede na naše potrebe uvozimo vsakega posebej.

Razdeljeni so v skupine:


  • Integracija - scipy.integrate
  • Specialne funkcije - scipy.special
  • Optimizacija - scipy.optimize
  • Interpolacija - scipy.interpolate
  • Fourierjeva transformacija - scipy.fftpack
  • Obdelava signalov - scipy.signal
  • Linearna algebra - scipy.linalg
  • Statistika - scipy.stats

Opis in razlaga ostalih podpaketov je na voljo na spletni strani podpaketi SciPy.

Linearna algebra - scipy.linalg

Vse metode za linearno algebro pričakujejo objekt, ki ga lahko spremenimo v dvodimenzionalni seznam (matriko). Izhodni podatek metod je prav tako dvomenzionalni seznam.


Razred matrix


Iskanje inverza


Reševanje linearnega sistema


Lastne vrednosti in lastni vektorji


Bolj podroben seznam funkcij si lahko pogledate na scipy.linalg .

1. Razred matrix

  • Razred matrix je razred znotraj knjižnice SciPy. Nad objekti tega razreda lahko uporabljamo metode podobne MATLAB-ovim. To pomeni, da za ločevanje med vrsticami in stolpci uporabimo presledke oziroma vejice
  • Ustvarimo s SciPy ukazom mat , ki je samo okrajšava za matrix
(ukazMat.png)
Uporaba ukaza mat

2. Iskanje inverza

  • Inverz matrike je matrika , tako da velja , kjer je identična matrika
  • Ponavadi matriko označimo z
  • Inverz matrike, ki je predstavljena z SciPy seznamom, dobimo z ukazom linalg.inv(A)
  • Če je matrika definirana v matričnem razredu, pa lahko uporabimo tudi A.I

Zgled

Omenjeni zgled v SciPy rešimo takole:

Med osnovne rutine linearne algebre spada tudi računanje determinante matrike z ukazom linalg.det() .

Zgled

Inverz matrike



je

.


Zapri

3. Reševanje linearnega sistema

  • V matrični obliki lahko sistem enačb zapišemo kratko kot
  • Linearni sistem rešimo z ukazom linalg.solve
  • Ukaz pričakuje za vhodna podatka matriko in vektor

Zgled

Omenjeni zgled v SciPy z uporabo ukaza linalg.solve rešimo takole:

Zgled

Rešimo sledeči sistem enačb:


Rešitev lahko najdemo z uporabo inverza matrike:


.


Zapri

4. Lastne vrednosti in lastni vektorji

  • Računanje lastnih vektorjev in lastnih vrednosti je ena izmed najbolj uporabnih operacij v linearni algebri.
  • Število je lastna vrednost kvadratne matrike , če obstaja neničeln vektor , da je .
  • Za matriko velikosti obstaja lastnih vrednosti, ki so ničle karakterističnega polinoma .
  • Ukaz linalg.eig nam za rezultat vrne in .
  • Ukaz linalg.eigvals nam vrne samo .

Zgled

Omenjeni zgled v SciPy rešimo takole:

Zgled

Poiščimo lastne vektorje in lastne vrednosti za matriko .


Pripadajoči karakteristični polinom je

.


Ničle tega polinoma so lastne vrednoti matrike :

,

.


Zapri

Obrazec

Prednosti in slabosti

Prednosti

  • Brezplačna odprtokodna programska oprema z razširjenim Python programskim jezikom
  • Bogate znanstvene računalniške knjižnice z visoko optimiziranimi algoritmi
  • Enostavno berljiv in dobro strukturiran (enostavno rokovanje z matricami, podobno Matlab-u ali Octave-u!)

Slabosti

  • Ni tako prijetno razvojno okolje
0%
0%