12.07.2015 Views

slides_programmation.. - xavierdupre.fr

slides_programmation.. - xavierdupre.fr

slides_programmation.. - xavierdupre.fr

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Principes communs à tous les langagesExtensions, ModulesClasses, Programmation ObjectPython, R, VBA, SQL, ...Quelques exemplesPrésentationTypes de données standardStructures de langageLes élections : report des voixQuelques schémas classiquesOpérationsLe calcul précédent nécessite trois opérations : la multiplication, la transposée et l’inversiond’une matrice qui sera représentée par une liste de listes. L’inversion commence par un pivot.def mult (m1, m2) :"""multiplication de matrices"""res = [ [ 0.0 for l in m2 [0] ] for k in m1 ]for i in xrange (0, len (res)) :for j in xrange (0, len (res [i])) :s = 0.0for k in xrange (len (m2)) :s += m1 [i][k] * m2 [k][j]res [i][j] = sreturn resdef transposee (m) :"""transposee d’une matrice"""res = [ [ 0.0 for l in m ] for ll in m [0]]for i in xrange (0, len (m)) :for j in xrange (0, len (m [0])) :res [j][i] = m [i][j]return resdef _identite (n) :return [ [ 0.0 if i != j else 1.0 \for i in xrange (0, n)] \for j in xrange (0, n) ]def _pivot_gauss (mat) :passage = _identite (len (mat))for n in xrange (0, len (mat)) :fact = mat [n][n]if fact == 0 :pos = n+1while ((pos < len (mat)) and \(mat [pos][n] == 0)) : pos += 1if pos == len (mat) : continuefor k in xrange (n, len (mat)) :mat [n][k] += mat [pos][k]for k in xrange (0, len (mat)) :passage [n][k] += passage [pos][k]fact = mat [n][n]for l in xrange (n+1, len (mat)) :div = mat [l][n]if div == 0 : continuetemp = div / factfor k in xrange (n, len (mat)) :mat [l][k] -= mat [n][k] * tempfor k in xrange (0, len (mat)) :passage [l][k] -= passage [n][k] * tempreturn passageXavier Dupré Programmation et algorithme 42 / 132

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!