Aller au contenu

Mathc complexes/079

Un livre de Wikilivres.


Application

Installer et compiler ces fichiers dans votre répertoire de travail.

c00d.c
/* ------------------------------------ */
/*  Save as :   c00d.c                  */
/* ------------------------------------ */
#include "w_a.h"
/* ------------------------------------ */
#define   RA R5
#define   CA C5
#define   Cb C1  
/* ------------------------------------ */
int main(void)
{
double xy[6] ={
   10,     10,
   -5,      1,
    7,    -10    };
   
double ta[RA*CA]={
/* x**2     y**2     x        y        e     */
  +1,      +0,      +0,      +0,      +0,     
  +0,      +1,      +0,      +0,      +0,      
+100,    +100,     +10,     +10,      +1,        
 +25,      +1,      -5,      +1,      +1,        
 +49,    +100,      +7,     -10,      +1,       
};

double tb[RA*C1]={
/*     b   */
      +1,   
      +1,   
      +0,   
      +0,   
      +0,  
};

double **XY   = ca_A_mRZ(xy,i_mZ(R3,C2));
double **A    = ca_A_mRZ(ta,i_mZ(RA,CA));
double **b    = ca_A_mRZ(tb,i_mZ(RA,C1));
double **Inv  =             i_mZ(CA,RA);           
double **Invb =             i_mZ(CA,C1);         

  clrscrn();
  printf("\n");
  printf(" Find the coefficients a, b, c, d,  of a circle  \n\n");
  printf("     ax**2 + ay**2 + bx + cy + d  = 0            \n\n");
  printf(" that passes through these three XY.             \n\n");
  printf("    x     y");
  p_mRZ(XY,S5,P0,C6);
  stop();
  
  clrscrn(); 
  printf(" Using the given XY, we obtain this matrix.\n");
  printf("  (a = 1. This is my choice)\n\n");
  printf(" A :");
  p_mRZ(A,S10,P2,C7);
  printf(" b :");
  p_mRZ(b,S10,P2,C7);
   
  printf(" Inv :");
  invgj_mZ(A,Inv); 
  pE_mRZ(Inv,S12,P4,C10); 
  stop();
  
  clrscrn(); 
  printf(" Inv :"); 
  p_mRZ(Inv,S10,P4,C10);  
  
  printf(" x = Inv * b ");   
  mul_mZ(Inv,b,Invb); 
  p_mRZ(Invb,S10,P4,C10);
  printf(" The coefficients a, b, c, d, e, of the curve are : \n\n"
         "  %+.2fx**2 %+.2fy**2 %+.2fx %+.2fy %+.2f = 0\n\n"
            ,Invb[R1][C1],Invb[R2][C1],Invb[R3][C1],
             Invb[R4][C1],Invb[R5][C1]);       
  stop(); 
   
  f_mZ(XY);    
  f_mZ(A);
  f_mZ(b); 
  f_mZ(Inv);
  f_mZ(Invb); 

  return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Exemple de sortie écran :
 Find the coefficients a, b, c, d,  of a circle  

     ax**2 + ay**2 + bx + cy + d  = 0            

 that passes through these three XY.             

    x     y
  +10   +10 
   -5    +1 
   +7   -10 

 Press return to continue. 


 Using the given XY, we obtain this matrix.
  (a = 1. This is my choice)

 A :
     +1.00      +0.00      +0.00      +0.00      +0.00 
     +0.00      +1.00      +0.00      +0.00      +0.00 
   +100.00    +100.00     +10.00     +10.00      +1.00 
    +25.00      +1.00      -5.00      +1.00      +1.00 
    +49.00    +100.00      +7.00     -10.00      +1.00 

 b :
     +1.00 
     +1.00 
     +0.00 
     +0.00 
     +0.00 

 Inv :
 +1.0000e+00  +0.0000e+00  -0.0000e+00  +0.0000e+00  -0.0000e+00 
 +0.0000e+00  +1.0000e+00  +0.0000e+00  -0.0000e+00  +0.0000e+00 
 -3.8132e+00  -7.2527e+00  +4.0293e-02  -7.3260e-02  +3.2967e-02 
 -1.9780e+00  +1.0879e+00  +4.3956e-02  +1.0989e-02  -5.4945e-02 
 -4.2088e+01  -3.8352e+01  +1.5751e-01  +6.2271e-01  +2.1978e-01 

 Press return to continue. 


 Inv :
   +1.0000    +0.0000    -0.0000    +0.0000    -0.0000 
   +0.0000    +1.0000    +0.0000    -0.0000    +0.0000 
   -3.8132    -7.2527    +0.0403    -0.0733    +0.0330 
   -1.9780    +1.0879    +0.0440    +0.0110    -0.0549 
  -42.0879   -38.3516    +0.1575    +0.6227    +0.2198 

 x = Inv * b 
   +1.0000 
   +1.0000 
  -11.0659 
   -0.8901 
  -80.4396 

 The coefficients a, b, c, d, e, of the curve are : 

  +1.00x**2 +1.00y**2 -11.07x -0.89y -80.44 = 0

 Press return to continue.