begin process at 2012 05 24 01:15:03
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Math & Algorithmes

 > OPÉRATION MATRICIELLE

OPÉRATION MATRICIELLE


 Information sur la source

Note :
Aucune note
Catégorie :Math & Algorithmes Classé sous :matrice, inverse, comatrice, transposée, déterminant Niveau :Débutant Date de création :02/11/2008 Vu / téléchargé :11 698 / 139

Auteur : gastein

Ecrire un message privé
Commentaire sur cette source (1)
Ajouter un commentaire et/ou une note

 Description

C'est un ensemble de codes qui permettent d'éfectuer les opérations matricielles comme l'addition la multiplication, la transposée, la comatrice, l'inversion,...
Vous n'avez qu'à appeller une fonction et l'utiliser. J'espère que cela va vous être utile;

Source

  • # -*- coding: cp1252 -*-
  • # C'est un ensemble de codes sources permettant d'effectuer les opérations matricielles, à savoir
  • # l'addtion, la multiplication, le déterminant, la comatrice, la transposée d'une matrice, l'inverse d'une matrice
  • #Extraire une ligne i et une colonne j d'une matrice. Notez q'une matrice a pour syntaxe:
  • # A=[[a, b],[c,d]], la matrice est représentée ligne par ligne donc A est équivalent à:
  • # [a b]
  • # [ c d]
  • def Extrtlincol(m,n,M):
  • "retourne la matrice A sans la m ième ligne et la n ième colonne"
  • Mlin=len(M)
  • result=[]
  • Rep=[]
  • for i in range(Mlin):
  • if i!=m:
  • for j in range(Mlin):
  • if (j!=n):
  • result.append(M[i][j])
  • for k in range(0,len (result),Mlin-1):
  • Rep.append(result[k:k+Mlin-1])
  • return Rep
  • ##################################################
  • def Det(A):
  • " retourne le déterminat de la matrice A"
  • if len(A)==1:
  • return A[0][0]
  • if len(A)==2:
  • r=A[0][0]*A[1][1]-A[0][1]*A[1][0]
  • return r
  • else:
  • s=0
  • j=0
  • while j<len(A):
  • B=Extrtlincol(j,0,A)
  • if j%2==0:
  • s=s+A[j][0]*Det(B)
  • else:
  • s=s-A[j][0]*Det(B)
  • j=j+1
  • return s
  • ######################################################
  • def comat(A):
  • "Donne la comatrice d'une matrice A"
  • N=len (A)
  • k=0
  • com=[None]*N
  • while k<N:
  • com[k]=[0]*N
  • l=0
  • while l<N:
  • B=Extrtlincol(k,l,A)
  • if (k+l)%2==0:
  • com[k][l]=(Det(B))
  • else:
  • com[k][l]=((-1)*Det(B))
  • l=l+1
  • k=k+1
  • return com
  • ###################################################
  • def transpos(A):
  • "Donne la transposée d'une matrice A"
  • N=len(A)
  • M=[None]*N
  • for i in range(N):
  • M[i]=[0]*N
  • for j in range(N):
  • M[i][j]=A[j][i]
  • return M
  • #####################################################
  • def multcoef(A,r):
  • "Donne le produit d'une matrice A par le coefficient r"
  • N=len(A)
  • Mat=[None]*N
  • for i in range(N):
  • Mat[i]=[0]*N
  • for j in range(N):
  • Mat[i][j]=r*A[i][j]
  • return Mat
  • ######################################################
  • def invmat(A):
  • "Donne l'inverse d'une matrice carrée A"
  • d=Det(A)
  • if d==0:
  • return 'La Matrice n\'est pas inversible'
  • else:
  • B=multcoef(comat(A),1./d)
  • inv=transpos(B)
  • return inv
  • ###############################################################
  • def Multmat( Mat1,Mat2):
  • "Donne le produit de deux matrices"
  • Mat1lign,Mat1col= len (Mat1), len (Mat1[0])
  • Mat2lign,Mat2col= len (Mat2), len (Mat2[0])
  • A=[]
  • M=[None]*Mat1lign
  • if Mat1col!=Mat2lign:
  • print " Erreur! Votre première matrice à un nombre de colonne\ n inferieur à celle de la seconde matrice"
  • for i in range(Mat1lign):
  • M[i]=[0]*Mat2col
  • for j in range(Mat2col):
  • for k in range(Mat1col):
  • M[i][j]=M[i][j]+Mat1[i][k]*Mat2[k][j]
  • for m in range(Mat1lign):
  • print M[m]
  • ####################################################
  • def Addmat(M1,M2):
  • "Additionne deux matrices carrées"
  • N=len(M1)
  • M=[None]*N
  • for i in range (N):
  • M[i]=[0]*N
  • for j in range (N):
  • M[i][j]=M1[i][j]+M2[i][j]
  • return M
# -*- coding: cp1252 -*-

# C'est un ensemble de codes sources permettant d'effectuer les opérations matricielles, à savoir
# l'addtion, la multiplication, le déterminant, la comatrice, la transposée d'une matrice, l'inverse d'une matrice
#Extraire une ligne i et une colonne j d'une matrice. Notez q'une matrice a pour syntaxe:
# A=[[a, b],[c,d]], la matrice est représentée ligne par ligne donc A est équivalent à:   
# [a   b]
# [ c  d]


def Extrtlincol(m,n,M):
      "retourne la matrice A sans la m ième ligne et la n ième colonne"
      Mlin=len(M)
      result=[]
      Rep=[]
      for i in range(Mlin):
            if i!=m:
                  for j in range(Mlin):
                        if (j!=n):
                              result.append(M[i][j])
      for k in range(0,len (result),Mlin-1):
            Rep.append(result[k:k+Mlin-1])
      return Rep
##################################################
def Det(A):
      " retourne le déterminat de la matrice A"
      if len(A)==1:
            return A[0][0]
      if len(A)==2:
            r=A[0][0]*A[1][1]-A[0][1]*A[1][0]
            return r
      else:
            s=0
            j=0
            while j<len(A):
                  B=Extrtlincol(j,0,A)
                  if j%2==0:
                        s=s+A[j][0]*Det(B)
                  else:
                        s=s-A[j][0]*Det(B)
                  j=j+1
            return s
######################################################                  
def  comat(A):
      "Donne la comatrice d'une matrice A"
      N=len (A)
      k=0
      com=[None]*N
      while k<N:
            com[k]=[0]*N
            l=0
            while l<N:
                  B=Extrtlincol(k,l,A)
                  if (k+l)%2==0:
                        com[k][l]=(Det(B))
                  else:
                        com[k][l]=((-1)*Det(B))
                  l=l+1
            k=k+1
      return com
###################################################
def transpos(A):
      "Donne la transposée d'une matrice A"
      N=len(A)
      M=[None]*N
      for i in range(N):
            M[i]=[0]*N
            for j in range(N):
                  M[i][j]=A[j][i]
      return M
#####################################################
def multcoef(A,r):
      "Donne le produit d'une matrice A par le coefficient r"
      N=len(A)
      Mat=[None]*N
      for i in range(N):
            Mat[i]=[0]*N
            for j in range(N):
                  Mat[i][j]=r*A[i][j]
      return Mat
######################################################                  
      
def invmat(A):
      "Donne l'inverse d'une matrice carrée  A"
      d=Det(A)
      if d==0:
            return 'La Matrice n\'est pas inversible'
      else:
            B=multcoef(comat(A),1./d)
            inv=transpos(B)
      return inv
###############################################################      
def Multmat( Mat1,Mat2):
      "Donne le produit de deux matrices"
      Mat1lign,Mat1col= len (Mat1), len (Mat1[0])
      Mat2lign,Mat2col= len (Mat2), len (Mat2[0])
      A=[]
      M=[None]*Mat1lign
      if  Mat1col!=Mat2lign:
            print " Erreur!  Votre première matrice à un nombre de colonne\ n inferieur à celle de la seconde matrice"
      for  i in  range(Mat1lign):
            M[i]=[0]*Mat2col
            for j in range(Mat2col):
                  for k in range(Mat1col):
                        M[i][j]=M[i][j]+Mat1[i][k]*Mat2[k][j]
      for m in range(Mat1lign):
            print M[m]
####################################################
def Addmat(M1,M2):
      "Additionne deux matrices carrées"
      N=len(M1)
      M=[None]*N
      for i in range (N):
            M[i]=[0]*N
            for j in range (N):
                  M[i][j]=M1[i][j]+M2[i][j]
      return M
      


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip RESOLUTION D'UN SYSTÈME DE N ÉQUATIONS PAR LA MÉTHODE DE GAU...
Source avec Zip RACINE N-IÈME D'UN RÉEL A, PAR LA METHODE DE NEWTON-RAPHSON
Source avec Zip CONVERSION ET COMPARAISON D'ENTIER RELATIFS EN BINAIRE

 Sources de la même categorie

Source avec une capture MISE EN EVIDENCE DE L'ALGORITHME A STAR GRAPHIQUEMENT par Mints
Source avec Zip BASE64 ENCRYPT/DECRYPT PYTHON BY MAXOU56800 par Maxou56800
Source avec Zip Source avec une capture TRIANGULATION par mecrosoft
Source avec Zip Source avec une capture COURBE DE BEZIER par mecrosoft
Source avec Zip Source avec une capture CALCUL D'AIRE D'UN TRIANGLE [INTERFACE GRAPHIQUE] par SeventhSon

 Sources en rapport avec celle ci

THE GAME OF LIFE, AVEC IMPLÉMENTATION GRAPHIQUE par xeolin
PIVOT DE GAUSS par linkid

Commentaires et avis

Commentaire de wkenw le 10/11/2008 13:48:15

Salut

Le programmeur qui utilise ton code ne devrait pas avoir à comprendre le modèle que tu utilises pour tes matrices, ni à retenir le nom de toutes tes fonctions.
C'est pourquoi ce serait Beaucoup Mieux si tu définissais une classe matrice. Tu pourrais alors définir les opérateurs associés : +, -, * etc.
J'ai pas le temps de regarder le code de chaque fonction, mais je te fais confiance.

A+

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Resolution d'un pb matriciel [ par clemumm ] Bonjour,Je dois pour un cours programmer un calcul hydrodynamique et j'ai commencer a le faire en python =&gt; le problème c'est que je me trouve face matrice symétrique [ par delaval ] bonjour, je suis actuellement en train d'écrire une fonction symétrique qui renvoie True or False selon la matrice que je rentre. Voici mon code:class décomposition LDU d'une matrice [ par map33 ] Bonjour,nous sommes débutantes en python et un projet de fin de licence nous est demandé sur ce programme.Nous devons trouver le code de la décomposit Charger une matrice d'un fichier [ par Alambiqux ] Bonjour, J'ai des fichiers colonnes de floats et je souhaiterais les charger dans une liste. Et, également,de manière plus général lorsqu'il s'agit d Python, jeu de mémory [ par Mattmad ] Bonjour, je suis en train de plancher sur un jeu de memory via python mais je ne parviens pas à résoudre un "petit" problème, je vous pose la question créer une matrice [ par basmaber ] Bonjour, est ce que quelqu'un peut m'aider j'ai une liste de ce genre ['I1', '5.', '480.', '480.', '480.', '', 'I2', '0.5', '0.85', '0.85', '0.85', '' difficulté d'analyse [ par melwin8 ] Bonjour, Je suis un débutant en programmation et en reprise d'étude. J'ai beaucoup de mal à analyser et à convertir en algorithme. Donc j'aurais beso


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,340 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales