Exemple de sortie écran :
 ------------------------------------ 
 A :
 -899 +108i -301 -283i -453 +300i 
 +102 +734i +426 -935i +294 -659i 
 -531 +672i +898 -575i -473 -71i 
 +182 -441i +256 +122i -397 +710i 
 +168 -423i +590 -49i +680 +658i 
 b :
 -353 -579i 
 +484 +372i 
 +862 -937i 
 -671 +682i 
 +390 +98i 
 Press return to continue. 
 ------------------------------------ 
 Copy/Past into the octave window.
 Ab=[
-899+108*i,-301-283*i,-453+300*i,-353-579*i;
+102+734*i,+426-935*i,+294-659*i,+484+372*i;
-531+672*i,+898-575*i,-473-71*i,+862-937*i;
+182-441*i,+256+122*i,-397+710*i,-671+682*i;
+168-423*i,+590-49*i,+680+658*i,+390+98*i]
 rref(Ab.00000000001)
 gj_mZ(Ab) :
 Error : gj_mR();
 The number of colums
 must be superior or egal
 to the number of rows
 Press return to continue.
 Exemple de sortie Octave :
» Ab=[
-899+108*i,-301-283*i,-453+300*i,-353-579*i;
+102+734*i,+426-935*i,+294-659*i,+484+372*i;
-531+672*i,+898-575*i,-473-71*i,+862-937*i;
+182-441*i,+256+122*i,-397+710*i,-671+682*i;
+168-423*i,+590-49*i,+680+658*i,+390+98*i]
Ab =
 -899 + 108i -301 - 283i -453 + 300i -353 - 579i
 102 + 734i 426 - 935i 294 - 659i 484 + 372i
 -531 + 672i 898 - 575i -473 - 71i 862 - 937i
 182 - 441i 256 + 122i -397 + 710i -671 + 682i
 168 - 423i 590 - 49i 680 + 658i 390 + 98i
» rref(Ab.00000000001)
ans =
 1 0 0 0
 0 1 0 0
 0 0 1 0
 0 0 0 1
 0 0 0 0

Mathc matrices/h10aa
Bibliothèque
Installer ce fichier dans votre répertoire de travail.
/* Save as : v_r.h */
/* Rand */
/* ------------------------------------ */
 Déclaration des fichiers h.

Mathc matrices/h101k
Bibliothèque
Installer ce fichier dans votre répertoire de travail.
/* Save as : vrm_sing.h */
/* ------------------------------------ */
double **r_singular_Ab_mR(
double **Ab,
int n
 r_mR(Ab,n);
 /* R3 = Two rows + zero row ? */
 if(Ab[R_SIZE][C0]==R3) c_r1r2_mR(Ab,R1,R2);
 if(Ab[R_SIZE][C0]==R4) c_r1r2_mR(Ab,R1,R3);
 if(Ab[R_SIZE][C0]>R4){ c_r1r2_mR(Ab,rp_I(Ab[R_SIZE][C0]-1),
 rp_I(Ab[R_SIZE][C0]-1));
 c_r1r2_mR(Ab,rp_I(Ab[R_SIZE][C0]-1),
 rp_I(Ab[R_SIZE][C0]-1));

Mathc matrices/c101h
Application
Installer et compiler ces fichiers dans votre répertoire de travail.
/* Save as : c00e.c */
/* ------------------------------------ */
void fun(int r,int c)
double **A = r_mR(i_mR(r,c),99.);
 clrscrn(); 
 printf(" A :");
 p_mR(A,S5,P0,C10); 
 printf(" A : c_r1sr2_mR(A,R1,R2,10);");
 p_mR(c_r1sr2_mR(A,R1,R2,10),S5,P0,C10);
 f_mR(A);
/* ------------------------------------ */
int main(void)
time_t t;
 srand(time(&t));
int i;
do
 i = rp_I(R3)+R1;
 fun(i,i+C1);
} while(stop_w());
 return 0;
/* ------------------------------------ */
 Copier une colonne s*R1 dans la colonne R2 d'une matrice :
 Exemple de sortie écran :
 A :
 -18 +45 -6 -35 +34 
 +81 +50 +96 -43 -22 
 -83 +87 +35 +35 +41 
 +78 +66 +41 +83 -25 
 A : c_r1sr2_mR(A,R1,R2,10);
 -18 +45 -6 -35 +34 
 -180 +450 -60 -350 +340 
 -83 +87 +35 +35 +41 
 +78 +66 +41 +83 -25 
 Press return to continue
 Press X to stop

Mathc matrices/c101i
Application
Installer et compiler ces fichiers dans votre répertoire de travail.
/* Save as : c00f.c */
/* ------------------------------------ */
void fun(int r,int c)
double **A = r_mR(i_mR(r,c),99.);
double **B = i_mR(r,c);
 clrscrn(); 
 printf(" A :");
 p_mR(A,S5,P0,C10); 
 printf(" B : c_nr_mR(A,R3,B);");
 p_mR(c_nr_mR(A,C3,B),S5,P0,C10);
 f_mR(A);
 f_mR(B); 
/* ------------------------------------ */
int main(void)
time_t t;
 srand(time(&t));
int i;
do
 i = rp_I(R3)+R1;
 fun(i+C3,i+C3);
} while(stop_w());
 return 0;
/* ------------------------------------ */
 Copier n lignes d'une matrice A dans une matrice B :
 Exemple de sortie écran :
 A :
 -82 +56 -17 -64 -76 +26 
 -90 -19 -48 -90 +16 -93 
 +58 -53 +38 +53 -78 -39 
 -19 +67 -35 -99 +84 -21 
 +55 +18 -86 -22 -78 -86 
 +65 +34 -46 -33 +70 -56 
 B : c_nr_mR(A,R3,B);
 -82 +56 -17 -64 -76 +26 
 -90 -19 -48 -90 +16 -93 
 +58 -53 +38 +53 -78 -39 
 +0 +0 +0 +0 +0 +0 
 +0 +0 +0 +0 +0 +0 
 +0 +0 +0 +0 +0 +0 
 Press return to continue
 Press X to stop

Mathc matrices/c101j
Application
/* Save as : c00a.c */
/* ------------------------------------ */
void fun(int r,int c)
double **A = r_mR(i_mR(r,c),99.);
double **B = i_mR(r,c);
 clrscrn(); 
 printf(" A :\n");
 pall_mR(swapC_withR0_mR(A,C1,C2),S5,P0,C10); 
 printf(" B : c_withR0_mR(A,B);\n");
 pall_mR(c_withR0_mR(A,B),S5,P0,C10);
 f_mR(A);
 f_mR(B); 
/* ------------------------------------ */
int main(void)
time_t t;
 srand(time(&t));
int i;
do
 i = rp_I(R3)+R1;
 fun(i,i+C1);
} while(stop_w());
 return 0;
/* ------------------------------------ */
 Si l'index des colonnes de la matrice A à été modifier, et si on copie A dans B, cette fonction permet de conserver la position des indices de A dans B.
 Exemple de sortie écran :
 A :
+4 +2 +1 +3 +4 
+5 +7 +98 +55 -13 
+0 +4 -15 -93 +24 
+0 -64 +34 +27 -74 
 B : c_withR0_mR(A,B);
+4 +2 +1 +3 +4 
+5 +7 +98 +55 -13 
+0 +4 -15 -93 +24 
+0 -64 +34 +27 -74 
 Press return to continue
 Press X to stop

Mathc complexes/h10aa
Bibliothèque
Installer ce fichier dans votre répertoire de travail.
/* Save as : wgpivot3.h */
/* ------------------------------------
 pivotbest = |a+bI|^2 = = a^2+b^2
double pivotbest_gj3Ab_mZ(
double **Ab,
int pivot_r,
int pivot_c
double pivotbest=Ab[pivot_r][pivot_c] *Ab[pivot_r][pivot_c]
 Ab[pivot_r][pivot_c+C1]*Ab[pivot_r][pivot_c+C1];
double pivot;
int best_r = pivot_r;
int r;
 for( r=pivot_r; r<Ab[R_SIZE][C0]; r++)
 pivot = Ab[r][pivot_c]*Ab[r][pivot_c] + 
 Ab[r][pivot_c+C1]*Ab[r][pivot_c+C1];
 if(pivot>pivotbest)
 pivotbest=pivot;
 best_r = r;
 if(best_r!=pivot_r) swapR_mZ(Ab,pivot_r,best_r);
 return(pivotbest);
/* ------------------------------------ */
 Déclaration des fichiers h.

Mathc complexes/h10m
Bibliothèque
Installer ce fichier dans votre répertoire de travail.
/* Save as : wrm_sing.h */
double **r_singular_Ab_mZ(
double **A,
int n
 r_mZ(A,n);
 if(A[R_SIZE][C0]==3) c_r1Ar2_mZ(A,1,2);
 if(A[R_SIZE][C0]==4){c_r1Ar2_mZ(A,rp_I(A[R_SIZE][C0]-1),
 rp_I(A[R_SIZE][C0]-1));
 c_r1Ar2_mZ(A,rp_I(A[R_SIZE][C0]-1),
 rp_I(A[R_SIZE][C0]-1));
 if(A[R_SIZE][C0]>4){ c_r1Ar2_mZ(A,rp_I(A[R_SIZE][C0]-1),
 rp_I(A[R_SIZE][C0]-1));
 c_r1Ar2_mZ(A,rp_I(A[R_SIZE][C0]-1),
 rp_I(A[R_SIZE][C0]-1));
 c_r1Ar2_mZ(A,rp_I(A[R_SIZE][C0]-1),
 rp_I(A[R_SIZE][C0]-1));
 c_r1Ar2_mZ(A,rp_I(A[R_SIZE][C0]-1),
 rp_I(A[R_SIZE][C0]-1));

return(A);
/* ------------------------------------ */
 Création de matrices singulières.

Mathc complexes/c101h
Application
Installer et compiler ces fichiers dans votre répertoire de travail.
/* Save as : c00a.c */
void fun(int r)
double **Ab = r_singular_Ab_mZ(i_Abr_Ac_bc_mZ(r,r,C1),999);
double **A = c_Ab_A_mZ(Ab,i_mZ(r,r));
double **b = r_mZ(i_mZ(r,C1),999);
 c_A_b_Ab_mZ(A,b,Ab); 
 clrscrn();
 printf(" A :");
 p_mZ(A, S5,P0, S4,P0, C6);
 printf(" b :");
 p_mZ(b, S5,P0, S4,P0, C6);
 stop();
 clrscrn();
 printf(" Copy/Past into the octave window.\n\n");
 p_Octave_mZ(Ab,"Ab",P0, P0);
 printf(" rref(Ab.00000000001)\n\n");
 printf(" gj4_mZ(Ab) :");
 gj4_mZ(Ab);
 p_mZ(Ab, S8,P4, S8,P4, C4);
 f_mZ(Ab);
 f_mZ(b);
 f_mZ(A);
/* ------------------------------------ */
int main(void)
time_t t;
 srand(time(&t));
do
 fun(rp_I(R4)+R1);
} while(stop_w());
 return 0;
/* ------------------------------------ */
 La matrice A a deux lignes identique mais avec un b différent. Système incompatible.