Mathc matrices/a25
Sommaire
Mathc matrices/25a
Application
Copier la bibliothèque dans votre répertoire de travail avec les fichiers des parties précédentes :
Ne pas conserver le fichier d.h avec la librairie après avoir testé les exemples. 
 Présentation :
 Un système linéaire homogène avec autant d'équation
 que d'inconnus a une solution non trivial si et 
 seulement le déterminant de cette matrice est nul.
 Calculons l'équation de la ligne passant par les points P et Q:
 c1 x + c2 y + c3 = 0
 Cette même équation avec les points P(x1,y1) Q(x2,y2) :
 c1 x1 + c2 y1 + c3 = 0
 c1 x2 + c2 y2 + c3 = 0
 Le système de trois équations :
 c1 x + c2 y + c3 = 0
 c1 x1 + c2 y1 + c3 = 0
 c1 x2 + c2 y2 + c3 = 0
 Le déterminant du système :
 |x y 1| 
 |x1 y1 1| = 0
 |x2 y2 1| 
 Le déterminant du système en language C : 
 |1 1 1| 
 |x1 y1 1| = 0
 |x2 y2 1| 
 Pour calculer les coéficients de l'équation de la 
 droite on utilise le développement sur la première 
 ligne en calculant les cofacteurs.
 cofactor_R(A,R1,C1) x + cofactor_R(A,R1,C2) y + cofactor_R(A,R1,C3) = 0
 Cette équation nous donnes l'équation de la droite 
 qui passe par les deux points P et Q.
Deux exemples :

Mathc matrices/h25a
Application
Installer ce fichier dans votre répertoire de travail.
/* Save as : d.h */
double ** m_line_A_mR(
double **At,
double **A
int ra;
int r;
int c;
 for(c=C1; c<A[C_SIZE][C0]; c++) A[R1][c]=1.; /* First line */
 for(r=R2, ra=R1; r<A[R_SIZE][C0]; r++,ra++)
 c=C1; A[r][c]= At[ra][C1]; /* x^1 */
 c++; A[r][c]= At[ra][C2]; /* y^1 */
 c++; A[r][c]= 1.; /* x^0*y^0 */

return(A);
/* ------------------------------------ */ 
void p_Det_mR(
double **A,
int e,
int d
 int r;
 int c;
 for(r=R2;r<A[R_SIZE][C0];r++)
 printf("\n");
 for (c=C1;c<A[C_SIZE][C0];c++) 
 printf("%+*.*f",e,d,A[r][c]);

printf("\n\n");
/* --------------------------------- */
void verify_eq_line_mR(
double **A,
double x,
double y
double p = cofactor_R(A,R1,C1)*(x) +
 cofactor_R(A,R1,C2)*(y) +
 cofactor_R(A,R1,C3);
 printf(" With x=%+5.1f y=%+5.1f eq=%+5.5f\n",x,y,p); 
/* ------------------------------------ */
 Déclaration des fichiers h.

Mathc matrices/c25a1
Application
Installer et compiler ces fichiers dans votre répertoire de travail.
/* ------------------------------------ */
/* Save as : c01.c */
int main(void)
double p[R2*C2] ={ 1, -1, 
 2, 2};
double **Ap = ca_A_mR(p, i_mR(R2,C2));
double **A = m_line_A_mR(Ap, i_mR(R3,C3));
int r;
 clrscrn();
 printf(" Theorem.\n\n");
 printf(" A homogeneous linear system with as many equations\n");
 printf(" as unknowns has a nontrivial solution if and only\n");
 printf(" if the determinant of the coefficient matrix is\n");
 printf(" zero.\n\n");
 printf(" Equation of a line: \n\n");
 printf(" c1 x + c2 y + c3 = 0\n\n"); 
 printf(" The same equation with the values of the two points:\n\n");
 printf(" c1 x1 + c2 y1 + c3 = 0\n");
 printf(" c1 x2 + c2 y2 + c3 = 0\n\n");
 printf(" The three equation:\n\n");
 printf(" c1 x + c2 y + c3 = 0\n");
 printf(" c1 x1 + c2 y1 + c3 = 0\n");
 printf(" c1 x2 + c2 y2 + c3 = 0\n\n");
 stop();
 clrscrn();
 printf(" The two points:\n\n");
 printf(" P1(%+.0f,%+.0f) ", Ap[R1][C1],Ap[R1][C2]);
 printf(" P2(%+.0f,%+.0f)\n\n",Ap[R2][C1],Ap[R2][C2]);
 printf(" The determinant :\n\n (cofactor expansion along the first row)\n\n");
 printf(" x y 1");
 p_Det_mR(A,6,0);
 printf(" The equation of the line : \n\n");
 printf(" eq = %+.0f x %+.0f y %+.0f = 0\n\n",
 cofactor_R(A,R1,C1),
 cofactor_R(A,R1,C2),
 cofactor_R(A,R1,C3));
 printf(" Verify the result : \n\n"); 
 for(r=R1;r<Ap[R_SIZE][C0];r++)
 verify_eq_line_mR(A, Ap[r][C1],
 Ap[r][C2]);
 stop();
 f_mR(A);
 f_mR(Ap);
 return 0;
/* ------------------------------------ */

Exemple de sortie écran :
 Theorem.
 A homogeneous linear system with as many equations
 as unknowns has a nontrivial solution if and only
 if the determinant of the coefficient matrix is
 zero.
 Equation of a line: 
 c1 x + c2 y + c3 = 0
 The same equation with the values of the two points:
 c1 x1 + c2 y1 + c3 = 0
 c1 x2 + c2 y2 + c3 = 0
 The three equation:
 c1 x + c2 y + c3 = 0
 c1 x1 + c2 y1 + c3 = 0
 c1 x2 + c2 y2 + c3 = 0
 Press return to continue. 
 The two points:
 P1(+1,-1) P2(+2,+2)
 The determinant :
 (cofactor expansion along the first row)
 x y 1
 +1 -1 +1
 +2 +2 +1
 The equation of the line : 
 eq = -3 x +1 y +4 = 0
 Verify the result : 
 With x= +1.0 y= -1.0 eq=+0.00000
 With x= +2.0 y= +2.0 eq=+0.00000
 Press return to continue.

Mathc matrices/c25a2
Application
Installer et compiler ces fichiers dans votre répertoire de travail.
/* ------------------------------------ */
/* Save as : c02.c */
int main(void)
double p[R2*C2] ={ 0, 1, 
 1, -1};
double **Ap = ca_A_mR(p, i_mR(R2,C2));
double **A = m_line_A_mR(Ap, i_mR(R3,C3));
int r;
 clrscrn();
 printf(" Theorem.\n\n");
 printf(" A homogeneous linear system with as many equations\n");
 printf(" as unknowns has a nontrivial solution if and only\n");
 printf(" if the determinant of the coefficient matrix is\n");
 printf(" zero.\n\n");
 printf(" Equation of a line: \n\n");
 printf(" c1 x + c2 y + c3 = 0\n\n"); 
 printf(" The same equation with the values of the two points:\n\n");
 printf(" c1 x1 + c2 y1 + c3 = 0\n");
 printf(" c1 x2 + c2 y2 + c3 = 0\n\n");
 printf(" The three equation:\n\n");
 printf(" c1 x + c2 y + c3 = 0\n");
 printf(" c1 x1 + c2 y1 + c3 = 0\n");
 printf(" c1 x2 + c2 y2 + c3 = 0\n\n");
 stop();
 clrscrn();
 printf(" The two points:\n\n");
 printf(" P1(%+.0f,%+.0f) ", Ap[R1][C1],Ap[R1][C2]);
 printf(" P2(%+.0f,%+.0f)\n\n",Ap[R2][C1],Ap[R2][C2]);
 printf(" The determinant :\n\n (cofactor expansion along the first row)\n\n");
 printf(" x y 1");
 p_Det_mR(A,6,0);
 printf(" The equation of the line : \n\n");
 printf(" eq = %+.0f x %+.0f y %+.0f = 0\n\n",
 cofactor_R(A,R1,C1),
 cofactor_R(A,R1,C2),
 cofactor_R(A,R1,C3));
 printf(" Verify the result : \n\n"); 
 for(r=R1;r<Ap[R_SIZE][C0];r++)
 verify_eq_line_mR(A, Ap[r][C1],
 Ap[r][C2]);
 stop();
 f_mR(A);
 f_mR(Ap);
 return 0;
/* ------------------------------------ */

Exemple de sortie écran :
 Theorem.
 A homogeneous linear system with as many equations
 as unknowns has a nontrivial solution if and only
 if the determinant of the coefficient matrix is
 zero.
 Equation of a line: 
 c1 x + c2 y + c3 = 0
 The same equation with the values of the two points:
 c1 x1 + c2 y1 + c3 = 0
 c1 x2 + c2 y2 + c3 = 0
 The three equation:
 c1 x + c2 y + c3 = 0
 c1 x1 + c2 y1 + c3 = 0
 c1 x2 + c2 y2 + c3 = 0
 Press return to continue. 
 The two points:
 P1(+0,+1) P2(+1,-1)
 The determinant :
 (cofactor expansion along the first row)
 x y 1
 +0 +1 +1
 +1 -1 +1
 The equation of the line : 
 eq = +2 x +1 y -1 = 0
 Verify the result : 
 With x= +0.0 y= +1.0 eq=+0.00000
 With x= +1.0 y= -1.0 eq=+0.00000
 Press return to continue.

Mathc matrices/25b
Application
Copier la bibliothèque dans votre répertoire de travail avec les fichiers des parties précédentes :
Ne pas conserver le fichier d.h avec la librairie après avoir testé les exemples. 
 Présentation :
 Un système linéaire homogène avec autant d'équation
 que d'inconnus a une solution non trivial si et 
 seulement le déterminant de cette matrice est nul.
 Calculons l'équation du plan passant par les points P Q et R: 
 c1 x + c2 y + c3 z + c4 = 0
 Cette même équation avec les points P(x1,y1,z1) Q(x2,y2,z2) et R(x3,y3,z3):
 c1 x1 + c2 y1 + c3 z1 + c4 = 0 
 c1 x2 + c2 y2 + c3 z2 + c4 = 0 
 c1 x3 + c2 y3 + c3 z3 + c4 = 0 
 Le système de quatre équations :
 c1 x + c2 y + c3 z + c4 = 0
 c1 x1 + c2 y1 + c3 z1 + c4 = 0
 c1 x2 + c2 y2 + c3 z2 + c4 = 0
 c1 x3 + c2 y3 + c3 z3 + c4 = 0
 Le déterminant du système :
 |x y z 1|
 |x1 y1 z1 1| = 0
 |x2 y2 z2 1| 
 |x3 y3 z3 1|