Mathc matrices/c20p
Apparence
Installer et compiler ces fichiers dans votre répertoire de travail.
c00i.c |
---|
/* ------------------------------------ */
/* Save as : c00i.c */
/* ------------------------------------ */
#include "v_a.h"
#include "dot_diag.h"
/* ------------------------------------ */
void fun(int r)
{
double **A = rpdiag_mR(i_mR(r,r),9.);
double **U = r_mR(i_mR(r,r),9.);
double **Q = i_mR(r,r);
double **R = i_mR(r,r);
double **QR = i_mR(r,r);
clrscrn();
printf(" A :");
p_mR(A,S3,P3,C6);
printf(" U :");
p_mR(U,S3,P3,C6);
stop();
clrscrn();
QR_Diag_mR(A,U,Q,R);
printf(" Q :");
p_mR(Q,S3,P5,C6);
printf(" R :");
p_mR(R,S10,P5,C6);
stop();
clrscrn();
printf(" U :");
p_mR(U,S3,P3,C6);
printf(" U = Q * R :");
mul_mR(Q,R, QR);
p_mR(QR,S3,P3,C6);
f_mR(A);
f_mR(U);
f_mR(Q);
f_mR(R);
f_mR(QR);
}
/* ------------------------------------ */
int main(void)
{
time_t t;
srand(time(&t));
do
{
fun(rp_I(R3)+R2);
} while(stop_w());
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
On calcul la qr décomposition.
Exemple de sortie écran :
------------------------------------
A :
+4.000 +0.000 +0.000 +0.000 +0.000
+0.000 +5.000 +0.000 +0.000 +0.000
+0.000 +0.000 +9.000 +0.000 +0.000
+0.000 +0.000 +0.000 +6.000 +0.000
+0.000 +0.000 +0.000 +0.000 +7.000
U :
+3.000 +8.000 +3.000 +9.000 +6.000
+6.000 +2.000 -2.000 +6.000 -6.000
-5.000 +1.000 +6.000 -9.000 -6.000
+7.000 +7.000 +4.000 +6.000 -1.000
+4.000 -2.000 -7.000 +8.000 +5.000
Press return to continue.
------------------------------------
Q :
+0.10308 +0.31428 -0.37084 -0.01879 -0.05224
+0.20616 -0.02194 +0.08495 -0.32395 -0.21179
-0.17180 +0.14219 +0.06282 -0.19425 +0.14035
+0.24052 +0.19123 +0.20343 +0.09826 +0.14563
+0.13744 -0.16951 -0.13628 -0.10443 +0.25643
R :
+29.10326 +11.99178 -11.06405 +40.16732 +8.93371
+0.00000 +21.52202 +24.56451 -3.46983 -6.55752
-0.00000 -0.00000 +9.65256 -16.19801 -20.83125
-0.00000 -0.00000 +0.00000 +3.02846 +15.51242
+0.00000 +0.00000 -0.00000 +0.00000 +5.62242
Press return to continue.
------------------------------------
U :
+3.000 +8.000 +3.000 +9.000 +6.000
+6.000 +2.000 -2.000 +6.000 -6.000
-5.000 +1.000 +6.000 -9.000 -6.000
+7.000 +7.000 +4.000 +6.000 -1.000
+4.000 -2.000 -7.000 +8.000 +5.000
U = Q * R :
+3.000 +8.000 +3.000 +9.000 +6.000
+6.000 +2.000 -2.000 +6.000 -6.000
-5.000 +1.000 +6.000 -9.000 -6.000
+7.000 +7.000 +4.000 +6.000 -1.000
+4.000 -2.000 -7.000 +8.000 +5.000
Press return to continue
Press X to stop