Algebra linare in Python con numpy

Pubblicato il - lettura in 2 min
Ludus Russo

Ludus Russo

Un maker, un robotico, un Roker!

Scrivo questo post come introduzione all’utilizzo di Python per per l’algebra lineare. Nella robotica, ed in particolare nella robotica industriale, l’algebra lineare è uno strumento basilare per descrivere e controllare il movimento del robot.

Scopo di questo tutorial è sia fornire una base teorica sull’algebra lineare, sia mostrare come è possibile utilizzare python per svolgere calcoli matematici.

La libreria numpy

Numpy è una libreria molto potente implementata in python per la gestione dei numeri.

Per utilizzare la libreria, dobbiamo installarla utilizzando pip, eseguendo il comando

(alg)$ pip install numpy

Vettori

Non voglio tediarvi descrivendovi il concetto matematico di Vettore (che mi obbliga a introdurre cose astrattissime come gli spazi vettoriali e simili). Sappiate solo che un vettore, in uno spazio ad N dimensioni, è definito come una lista di numeri posti in una colonna:

dove $v_1$, $v_2$ fino a $v_n$ sono $N$ numeri.

Per definire un vettore in nunpy, usiamo il seguente comando:

import numpy as np

v = np.array( ( 0.5,2.2,0.0 ) )

Questo codice genera un vettore

###Operazioni tra vettori ####Moltiplicare uno scalare per un vettore

Un vettore può essere moltiplicato per un numero (scalare):

Questa operazione si traduce in Python semplicemente con

a = 10
r = a*v
print r
# result: [  5.  22.   0.]

####Somma e differenza tra vettori

Due vettori della stessa dimensione possono essere sommati e sottrati. Somma e differenza sono definite come segue:

Le due operazioni sono banali in Python

w = np.array( (5.0, 2.0, 4.3) )
print v+w
print v-w
# result: [ 5.5  4.2  4.3]
#         [-4.5  0.2 -4.3]

####Prodotto scalare Il prodotto scalare tra due vettore è un’operazione che restituisce uno scalare. Questo è definito nel seguente modo:

In python, questo è implementato dalla funzione np.dot

print np.dot(v,w)
# result: 6.9
Ludus Russo

Ludus Russo

Un maker, un robotico, un Roker!

comments powered by Disqus
rss facebook twitter github youtube mail spotify lastfm instagram linkedin google google-plus pinterest medium vimeo stackoverflow reddit quora quora