CLASS TCMATRIX, DIAGONALISATION DE TOUTES MATRICES COMPLEXES.

f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 - 22 mai 2006 à 06:35
cs_Efrain Messages postés 2 Date d'inscription jeudi 11 octobre 2007 Statut Membre Dernière intervention 2 décembre 2010 - 2 déc. 2010 à 00:41
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/37701-class-tcmatrix-diagonalisation-de-toutes-matrices-complexes

cs_Efrain Messages postés 2 Date d'inscription jeudi 11 octobre 2007 Statut Membre Dernière intervention 2 décembre 2010
2 déc. 2010 à 00:41
Por favor un ejemplo de utilizacion de la unidad CMatrix.pas ,
gracias
cs_Efrain Messages postés 2 Date d'inscription jeudi 11 octobre 2007 Statut Membre Dernière intervention 2 décembre 2010
8 oct. 2008 à 02:20
Por favor un ejemplo del manejo de la unit CMatrix, por favor.
En el Caso de las funciones (inv, det, etc) de matrices, parece que estoy cometiendo errores en la declaracion de mis variable de tipo para las matrices, hasta ahora no logré utilizar muchas funciones de la unit CMatrix.

Gracias, disculpas por el idioma
beatrizcpereira Messages postés 1 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 16 juillet 2007
16 juil. 2007 à 21:17
I need example from use the cmatrix.pas and cplax.pas
Thanks
Beatriz
tchai2 Messages postés 1 Date d'inscription lundi 4 décembre 2006 Statut Membre Dernière intervention 3 janvier 2007
3 janv. 2007 à 01:20
Bonjour,
pour la function NormC
il faut :
for i := 1 to M.rowCount
et non M.colCount

sinon je trouve qu'une procédure comme :

procedure MatToStringGrid(M:TMatrix;var grille:Tstringgrid);
var i,j,r,c:integer ;
begin
//Renvoit le contenu de M sous forme d'une Stringgrid
R:=M.rowcount;
C:=M.ColCount ;
grille.Rowcount:=R;
grille.Colcount:=C;
for i:=1 to R do begin
for j:=1 to C do begin
grille.Cells[j-1,i-1]:= floattostr(M.Cells[i,j])
end;
end;
end;

est bien pratique pour la visualisation des matrices.
JnBiz Messages postés 18 Date d'inscription mardi 18 avril 2006 Statut Membre Dernière intervention 30 mai 2006
29 mai 2006 à 20:33
Salut foxi,
j'ai essayé de tenir compte des différentes remarques que tu m'as faites sur cette source et sur l'autre source.
En particulier j'ai simplifié les boucles, remplacer les destroy par des free, pour le setlength(array,m,n) c'est corrigé, par contre le array2:=array1 ne semble pas marcher avec les tableaux dynamiques.

Voila, j'en suis encore à une phase de "recherche", donc le code n'est pas garanti 100% stable.
Une fois que j'aurais fini le côté mathématique, j'essayerais de faire un code un peu plus "propre", notamment pour la gestion des class dans laquelle je débute en m'inspirant du tutorial de grandvizir.
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
22 mai 2006 à 06:35
un petit rappel :

quand tu as :

TArray = array of array of type;

var
Array1, Array2 : TArray;

tu peux faire :

setlength(Array1, 100, 50); {100x50}

et egalement :

Array2 := Array1 { copie directe du tableau dans l'autre tableau, setlength n'est pas necessaire }

exemple :

type
TDynIntArray = array of array of integer;

var
DFA1, DFA2 : TDynIntArray;

procedure inittable;
var X,Y : integer;
begin
SetLength(DFA1, 100, 100);
for X := low(DFA1) to High(DFA1) do
for Y := Low(DFA1[X]) to High(DFA1[X]) do
DFA1[X,Y] := random(50000);

DFA2 := DFA1;
end;

ce qui vas beaucoup plus vite que de copie chaque elements de la source vers la destination.
Rejoignez-nous