Mathc matrices/c22q
Installer et compiler ces fichiers dans votre répertoire de travail.
c00j.c |
---|
/* ------------------------------------ */
/* Save as : c00j.c */
/* ------------------------------------ */
#include "v_a.h"
#include "dot_au.h"
/* ------------------------------------ */
void fun(int r,int rn)
{
double **A = r_mR(i_mR(r+rn,r+rn),9.);
double **U = r_mR(i_mR(r+rn,r),9.);
double **Q = i_mR(r+rn,r);
double **R = i_mR(r,r);
double **QR = i_mR(r+rn,r);
clrscrn();
printf(" A :");
p_mR(A,S3,P0,C6);
printf(" U : r > c ");
p_mR(U,S3,P0,C6);
stop();
clrscrn();
QR_Au_mR(A,U,Q,R);
printf(" Q :");
p_mR(Q,S10,P4,C6);
printf(" R :");
p_mR(R,S10,P4,C6);
stop();
clrscrn();
printf(" U :");
p_mR(U,S7,P2,C6);
printf(" U = Q * R :");
mul_mR(Q,R, QR);
p_mR(QR,S7,P2,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(R2)+R2,rp_I(R2));
} while(stop_w());
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Nous calculons la QR décomposion du vecteur u. Avec u un vecteur qui a plus de lignes que de colonnes
.
Exemple de sortie écran :
------------------------------------
A :
-5.000 -9.000 -7.000 -3.000 -1.000
+4.000 -9.000 -7.000 +8.000 +8.000
+4.000 -7.000 -1.000 -9.000 +6.000
+6.000 -9.000 -9.000 -1.000 +2.000
-5.000 +2.000 +6.000 -5.000 -3.000
U : r > c
-1.000 +6.000 -9.000 -5.000
+6.000 -9.000 -9.000 -5.000
+6.000 +2.000 -5.000 +8.000
+8.000 -1.000 +4.000 +4.000
+2.000 +2.000 -3.000 -1.000
Press return to continue.
Q :
-0.00496 +0.04939 -0.06866 -0.02938
+0.02978 -0.04189 -0.03607 -0.15335
+0.02978 +0.06178 -0.01176 +0.18196
+0.03970 +0.04781 +0.05988 +0.04454
+0.00993 +0.03316 -0.01365 -0.00134
R :
+221.50930 -152.99045 -121.55270 +56.89564
+0.00000 +106.11278 +4.95322 -36.17388
-0.00000 +0.00000 +143.43084 +21.99662
-0.00000 +0.00000 +0.00000 +48.35789
Press return to continue.
U :
-1.000 +6.000 -9.000 -5.000
+6.000 -9.000 -9.000 -5.000
+6.000 +2.000 -5.000 +8.000
+8.000 -1.000 +4.000 +4.000
+2.000 +2.000 -3.000 -1.000
U = Q * R :
-1.000 +6.000 -9.000 -5.000
+6.000 -9.000 -9.000 -5.000
+6.000 +2.000 -5.000 +8.000
+8.000 -1.000 +4.000 +4.000
+2.000 +2.000 -3.000 -1.000
Press return to continue
Press X to stop