Mathc matrices/c16e
Installer et compiler ces fichiers dans votre répertoire de travail.
gj_r_a2.c |
---|
/* ------------------------------------ */
/* Save as : gj_r_a2.c */
/* ------------------------------------ */
#include "v_a.h"
/* ------------------------------------ */
/* ------------------------------------ */
#define RA R4
#define CA C6
#define Cb C1
/* ------------------------------------ */
/* ------------------------------------ */
int main(void)
{
double ab[RA*(CA+Cb)]={
+1, -3, +4, -2, +5, +4, 0,
+2, -6, +9, -1, +8, +2, 0,
+2, -6, +9, -1, +9, +7, 0,
-1, 3, -4, 2, -5, -4, 0,
};
double **Ab = ca_A_mR(ab,i_Abr_Ac_bc_mR(RA,CA,Cb));
double **A = c_Ab_A_mR(Ab,i_mR(RA,CA));
double **b = c_Ab_b_mR(Ab,i_mR(RA,Cb));
clrscrn();
printf(" A :");
p_mR(A,S8,P0,C7);
printf(" b :");
p_mR(b,S8,P0,C7);
printf(" Ab :");
p_mR(Ab,S8,P0,C7);
getchar();
clrscrn();
printf(" Copy/Past into the octave window.\n\n");
p_Octave_mR(Ab,"Ab",P0);
printf("\n rref(Ab,.00000000001)\n\n");
printf(" gj_PP_mR(Ab,YES) :");
gj_PP_mR(Ab,YES);
p_mR(Ab,S10,P4,C7);
stop();
f_mR(Ab);
f_mR(b);
f_mR(A);
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Si A est une matrice singulière le Total pivoting ne fonctionne pas. C'est pourquoi j'ai introduit un nouvel algorithme.
Par exemple, le Total pivoting ne permettrait pas d'obtenir le résultat ci-dessous.
Exemple de sortie écran :
A :
+1 -3 +4 -2 +5 +4
+2 -6 +9 -1 +8 +2
+2 -6 +9 -1 +9 +7
-1 +3 -4 +2 -5 -4
b :
+0
+0
+0
+0
Ab :
+1 -3 +4 -2 +5 +4 +0
+2 -6 +9 -1 +8 +2 +0
+2 -6 +9 -1 +9 +7 +0
-1 +3 -4 +2 -5 -4 +0
Copy/Past into the octave window.
Ab=[
+1,-3,+4,-2,+5,+4,+0;
+2,-6,+9,-1,+8,+2,+0;
+2,-6,+9,-1,+9,+7,+0;
-1,+3,-4,+2,-5,-4,+0]
rref(Ab,.00000000001)
gj_PP_mR(Ab,YES) :
+1.0000 -3.0000 +4.5000 -0.5000 +4.0000 +1.0000 +0.0000
-0.0000 -0.0000 +1.0000 +3.0000 -2.0000 -6.0000 -0.0000
+0.0000 +0.0000 +0.0000 +0.0000 +1.0000 +5.0000 +0.0000
+0.0000 +0.0000 +0.0000 +0.0000 +0.0000 +0.0000 +0.0000
Press return to continue.