A voir également:
- Programmation
- Application de programmation - Guide
- Programmation envoi sms - Guide
- Programmation vb - Télécharger - Langages
- Programmation binaire - Guide
- Programmation télécommande porte de garage brico depot - Forum Matériel & Système
7 réponses
00000000001010101011111110100000000011111111100000000010100000000000101
01010100000001010101010000000101010000000010100000000101000000000001000
00000000001010101011111110100000000011111111100000000010100000000000101
01010100000001010101010000000101010000000010100000000101000000000001000
00000000001010101011111110100000000011111111100000000010100000000000101
01010100000001010101010000000101010000000010100000000101000000000001000
00000000001010101011111110100000000011111111100000000010100000000000101
01010100000001010101010000000101010000000010100000000101000000000001000
00000000001010101011111110100000000011111111100000000010100000000000101
01010100000001010101010000000101010000000010100000000101000000000001000
00000000001010101011111110100000000011111111100000000010100000000000101
01010100000001010101010000000101010000000010100000000101000000000001000
00000000001010101011111110100000000011111111100000000010100000000000101
01010100000001010101010000000101010000000010100000000101000000000001000
je ne sais pas, désolé mais c'était trop tentant ^^'
01010100000001010101010000000101010000000010100000000101000000000001000
00000000001010101011111110100000000011111111100000000010100000000000101
01010100000001010101010000000101010000000010100000000101000000000001000
00000000001010101011111110100000000011111111100000000010100000000000101
01010100000001010101010000000101010000000010100000000101000000000001000
00000000001010101011111110100000000011111111100000000010100000000000101
01010100000001010101010000000101010000000010100000000101000000000001000
00000000001010101011111110100000000011111111100000000010100000000000101
01010100000001010101010000000101010000000010100000000101000000000001000
00000000001010101011111110100000000011111111100000000010100000000000101
01010100000001010101010000000101010000000010100000000101000000000001000
00000000001010101011111110100000000011111111100000000010100000000000101
01010100000001010101010000000101010000000010100000000101000000000001000
je ne sais pas, désolé mais c'était trop tentant ^^'
Salut,
Ce n'est pas trop dure et en cherchant bien sur google tu trouveras certainement un prog fait ou l'algorithme !
Mais le forum n'est pas là pour tout te donner mais pour t'aider à te faire avancer. As tu déjà fais quelque chose sur ce programme ?
Ce n'est pas trop dure et en cherchant bien sur google tu trouveras certainement un prog fait ou l'algorithme !
Mais le forum n'est pas là pour tout te donner mais pour t'aider à te faire avancer. As tu déjà fais quelque chose sur ce programme ?
il faut que tu prenne le cas général.
Déjà il te faut savoir la taille de ta matrice, puis tu fait faire à ton programme les équation:
X = a*x + b*y + c*z
Y = d*x + e*y + f*z
Z = g*x + h*y + i*z
et tu fait exprimer x,y et z en fonction X,Y et Z (a,b,c,d,e,f,g,h,i étant le constante de ta matrice de taille trois)
ainsi tu auras ta matrice inverse.
Si la taille est plus grande que troi, tu rajoute deux inconnu:pour taille 4
X = a*x + b*y + c*z + j*w
Y = d*x + e*y + f*z + k*w
Z = g*x + h*y + i*z + l*w
W = m*x + n*y+ o*z + p*w
et tu exprimes x,y,z,w en fonction de X,Y,Z,W
Déjà il te faut savoir la taille de ta matrice, puis tu fait faire à ton programme les équation:
X = a*x + b*y + c*z
Y = d*x + e*y + f*z
Z = g*x + h*y + i*z
et tu fait exprimer x,y et z en fonction X,Y et Z (a,b,c,d,e,f,g,h,i étant le constante de ta matrice de taille trois)
ainsi tu auras ta matrice inverse.
Si la taille est plus grande que troi, tu rajoute deux inconnu:pour taille 4
X = a*x + b*y + c*z + j*w
Y = d*x + e*y + f*z + k*w
Z = g*x + h*y + i*z + l*w
W = m*x + n*y+ o*z + p*w
et tu exprimes x,y,z,w en fonction de X,Y,Z,W
Cher ami zozopa, je te repond comme l'ami qui m'a précédé que le forum est là pour t'aider cad vous pouvez commencer par faire quelque chose et situer ta difficulté là on peut t'aider. Tresor
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour
Inversion de matrice par la méthode de Pan et Reiff.
Le programme en Turbo Pascal
SOURCE : http://www.chez.com/algor/pan.htm
Cliquez ici pour charger une archive contenant les implémentations de l'algo en Turbo Pascal et en Delphi.
Merci
Inversion de matrice par la méthode de Pan et Reiff.
Le programme en Turbo Pascal
SOURCE : http://www.chez.com/algor/pan.htm
Cliquez ici pour charger une archive contenant les implémentations de l'algo en Turbo Pascal et en Delphi.
PROGRAM Pan_Reiff; USES Crt; TYPE Matrice=ARRAY[1..10,1..10] OF REAL; VAR MatA,MatB,MatC:Matrice; N:BYTE; OK:BOOLEAN; PROCEDURE Intro(VAR N:BYTE;VAR Mat:Matrice); VAR i,j:BYTE; BEGIN CLRSCR; TEXTCOLOR(YELLOW); WRITE('Nombre de lignes:');READLN(N); FOR i:=1 TO N DO FOR j:=1 TO N DO BEGIN {GOTOXY(3,4);CLREOL; WRITE('Introduisez A(',i,',',j,'): '); READLN(Mat[i,j]);} Mat[i,j]:=RANDOM(100);{Pour tester} END; END; PROCEDURE Attente; VAR St:STRING; BEGIN TEXTCOLOR(LIGHTRED); St:='Une touche pour continuer.'; GOTOXY(40-LENGTH(St) DIV 2,25);WRITE(St);READKEY; END; PROCEDURE Affiche(S:STRING;N:BYTE;Mat:Matrice); VAR i,j:BYTE; BEGIN CLRSCR; TEXTCOLOR(LIGHTGREEN); WRITELN(S); FOR i:=1 TO N DO BEGIN FOR j:=1 TO N DO WRITE(Mat[i,j]:9:4); WRITELN; END; END; PROCEDURE Somme(N:BYTE;MatA,MatB:Matrice;VAR MatC:Matrice); VAR i,j:BYTE; BEGIN FOR i:=1 TO N DO FOR j:=1 TO N DO MatC[i,j]:=MatA[i,j]+MatB[i,j]; END; PROCEDURE Difference(N:BYTE;MatA,MatB:Matrice;VAR MatC:Matrice); VAR i,j:BYTE; BEGIN FOR i:=1 TO N DO FOR j:=1 TO N DO MatC[i,j]:=MatA[i,j]-MatB[i,j]; END; PROCEDURE Produit(N:BYTE;MatA,MatB:Matrice;VAR MatC:Matrice); VAR i,j,k:BYTE; BEGIN FOR i:=1 TO N DO FOR j:=1 TO N DO BEGIN MatC[i,j]:=0; FOR k:=1 TO N DO MatC[i,j]:=MatC[i,j]+MatA[i,k]*MatB[k,j]; END; END; PROCEDURE Inverse(N:BYTE;A:Matrice;VAR X:Matrice;VAR OK:BOOLEAN); VAR Id,E,B:Matrice; Old,New:REAL; Cpt:BYTE; FUNCTION Norme_Ligne(N:BYTE;B:Matrice):REAL; VAR Tmp,Tmp2:REAL; i,j:BYTE; BEGIN Tmp:=0; FOR i:=1 TO N DO BEGIN Tmp2:=0; FOR j:=1 TO N DO Tmp2:=Tmp2+ABS(B[i,j]); IF Tmp2>Tmp THEN Tmp:=Tmp2; END; Norme_Ligne:=Tmp END; FUNCTION Norme_Colonne(N:BYTE;B:Matrice):REAL; VAR Tmp,Tmp2:REAL; i,j:BYTE; BEGIN Tmp:=0; FOR i:=1 TO N DO BEGIN Tmp2:=0; FOR j:=1 TO N DO Tmp2:=Tmp2+ABS(B[j,i]); IF Tmp2>Tmp THEN Tmp:=Tmp2; END; Norme_Colonne:=Tmp END; PROCEDURE Init(N:BYTE;A:Matrice;VAR B:Matrice;VAR OK:BOOLEAN); VAR i,j:BYTE; T:REAL; BEGIN FILLCHAR(Id,SizeOf(Id),0); T:=Norme_Ligne(N,A)*Norme_Colonne(N,A); IF ABS(T)>1E-10 THEN BEGIN OK:=TRUE; FOR i:=1 TO N DO BEGIN Id[i,i]:=1; B[i,i]:=A[i,i]/T; FOR j:=i+1 TO N DO BEGIN B[i,j]:=A[j,i]/T; B[j,i]:=A[i,j]/T; END; END; END ELSE OK:=FALSE; END; PROCEDURE Calcule_E; VAR C:Matrice; BEGIN Produit(N,B,A,C); Difference(N,Id,C,E); END; PROCEDURE Calcule_B; VAR C,D:Matrice; BEGIN Somme(N,Id,E,D); Produit(N,D,B,C); B:=C END; BEGIN Init(N,A,B,OK); IF NOT OK THEN WRITELN('Matrice nulle!') ELSE BEGIN Calcule_E; Old:=Norme_Ligne(N,E); New:=Old; Cpt:=0; WHILE NOT ((New<1E-6) OR ((New>Old) AND (Cpt>5))) DO BEGIN Old:=New; Calcule_B; Calcule_E; New:=Norme_Ligne(N,E); INC(Cpt); END; OK:=TRUE; IF New<1E-6 THEN X:=B ELSE OK:=FALSE END; END; BEGIN Intro(N,MatA); Affiche('A=',N,MatA); Attente; Inverse(N,MatA,MatB,OK); IF OK THEN BEGIN Affiche('Inverse de A=',N,MatB); Attente; Produit(N,MatA,MatB,MatC); Affiche('Produit des matrices inverses=',N,MatC); Attente; END ELSE BEGIN CLRSCR; WRITELN('Pas d''inverse!'); END; END.
Merci