Aller au contenu

Mathc complexes/05r

Un livre de Wikilivres.


Application

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

c00a.c
/* ------------------------------------ */
/*  Save as :   c00a.c                  */
/* ------------------------------------ */
#include "w_a.h"
/* ------------------------------------ */
/* ------------------------------------ */
#define RA   R4
#define CA   C3 
#define Cb   C1 
/* ------------------------------------ */       
/* ------------------------------------ */
int main(void)
{
double ta[RA*(CA+Cb)]={
// I1    I2    I3    
   +1,   +1,   -1,   
  -60,  +30,   +0,    
   +0,  +30,  +20,   
  +60,   +0,  +20,  
};

double tb[RA*(CA+Cb)]={
// I1    I2    I3    
   +0,
   +0,  
 +120,
 +120
};
                       
double **A      =  ca_A_mRZ(ta,i_mZ(RA,CA));
double **b      =  ca_A_mRZ(tb,i_mZ(RA,Cb));

double **Q      =              i_mZ(RA,CA);
double **Q_T    =              i_mZ(CA,RA);

double **R      =              i_mZ(CA,CA);
double **invR   =              i_mZ(CA,CA);

double **invR_Q_T = i_mZ(CA,RA);
double **x        = i_mZ(CA,C1); 

  clrscrn();
  printf(" Copy/Paste into the octave windows \n\n");
  p_Octave_mZ(A,"a",P0,P0);  
  printf(" [Q, R] = qr (a,0) \n\n");
  
  QR_mZ(A,Q,R);    
  printf(" Q :");
  p_mRZ(Q, S10,P4, C10);  
  printf(" R :");
  p_mRZ(R, S10,P4, C10); 
  stop(); 
  
  clrscrn();
  ctranspose_mZ(Q,Q_T);   
  printf(" Q_T :");
  pE_mRZ(Q_T,S9,P5, C3);
  inv_mZ(R,invR); 
  printf(" invR :");
  pE_mRZ(invR,S9,P5, C6);
  stop();

  clrscrn();
  printf(" Solving this system yields a unique\n"
         " least squares solution, namely   \n\n");
  mul_mZ(invR,Q_T,invR_Q_T);
  mul_mZ(invR_Q_T,b,x);
  printf(" x = invR * Q_T * b :");
  p_mRZ(x,S9,P5 ,C6);
  stop();
         
  f_mZ(A);
  f_mZ(b);
  f_mZ(Q);
  f_mZ(Q_T);
  f_mZ(R);
  f_mZ(invR);
  f_mZ(x);
      
  return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Exemple de sortie écran :
 Copy/Paste into the octave windows 

 a=[
+1+0*i,+1+0*i,-1+0*i;
-60+0*i,+30+0*i,+0+0*i;
+0+0*i,+30+0*i,+20+0*i;
+60+0*i,+0+0*i,+20+0*i]

 [Q, R] = qr (a,0) 

 Q :
   +0.0118    +0.0340    -0.9994 
   -0.7071    +0.4083    +0.0056 
   +0.0000    +0.8160    +0.0278 
   +0.7071    +0.4077    +0.0222 

 R :
  +84.8587   -21.1999   +14.1294 
   +0.0000   +36.7636   +24.4411 
   -0.0000    +0.0000    +1.9987 

 Press return to continue. 


 Q_T :
+1.17843e-02 -7.07058e-01 +0.00000e+00 
+3.39963e-02 +4.08296e-01 +8.16025e-01 
-9.99352e-01 +5.55196e-03 +2.77598e-02 

+7.07058e-01 
+4.07729e-01 
+2.22078e-02 

 invR :
+1.17843e-02 +6.79548e-03 -1.66405e-01 
+0.00000e+00 +2.72008e-02 -3.32624e-01 
+0.00000e+00 -0.00000e+00 +5.00324e-01 

 Press return to continue. 


 Solving this system yields a unique
 least squares solution, namely   

 x = invR * Q_T * b :
 +1.00000 
 +2.00000 
 +3.00000 

 Press return to continue.