Mathc complexes/05y
Apparence
Installer et compiler ces fichiers dans votre répertoire de travail.

c00c.c |
|---|
/* ------------------------------------ */
/* Save as : c00c.c */
/* ------------------------------------ */
#include "w_a.h"
/* ------------------------------------ */
/* ------------------------------------ */
#define RA R5
#define CA C4
#define Cb C1
/* ------------------------------------ */
/* ------------------------------------ */
int main(void)
{
double ta[RA*(CA+Cb)]={
// x2 x4 x6 x7
-1, +0, +0, +0,
+1, +1, +0, +0,
+0, +0, +1, -1,
+0, +0, +0, +1,
+0, -1, -1, +0,
};
double tb[RA*(CA+Cb)]={
(+20-50),
(+60),
(-60),
(+90-20),
(+50-90)
};
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,+0+0*i,+0+0*i,+0+0*i;
+1+0*i,+1+0*i,+0+0*i,+0+0*i;
+0+0*i,+0+0*i,+1+0*i,-1+0*i;
+0+0*i,+0+0*i,+0+0*i,+1+0*i;
+0+0*i,-1+0*i,-1+0*i,+0+0*i]
[Q, R] = qr (a,0)
Q :
-0.7071 +0.4082 -0.2887 -0.2236
+0.7071 +0.4082 -0.2887 -0.2236
+0.0000 +0.0000 +0.8660 -0.2236
+0.0000 +0.0000 +0.0000 +0.8944
+0.0000 -0.8165 -0.2887 -0.2236
R :
+1.4142 +0.7071 +0.0000 +0.0000
+0.0000 +1.2247 +0.8165 +0.0000
+0.0000 +0.0000 +1.1547 -0.8660
+0.0000 +0.0000 -0.0000 +1.1180
Press return to continue.
Q_T :
-7.07107e-01 +7.07107e-01 +0.00000e+00
+4.08248e-01 +4.08248e-01 +0.00000e+00
-2.88675e-01 -2.88675e-01 +8.66025e-01
-2.23607e-01 -2.23607e-01 -2.23607e-01
+0.00000e+00 +0.00000e+00
+0.00000e+00 -8.16497e-01
+0.00000e+00 -2.88675e-01
+8.94427e-01 -2.23607e-01
invR :
+7.07107e-01 -4.08248e-01 +2.88675e-01 +2.23607e-01
-0.00000e+00 +8.16497e-01 -5.77350e-01 -4.47214e-01
+0.00000e+00 -0.00000e+00 +8.66025e-01 +6.70820e-01
-0.00000e+00 +0.00000e+00 -0.00000e+00 +8.94427e-01
Press return to continue.
Solving this system yields a unique
least squares solution, namely
x = invR * Q_T * b :
+30.00000
+30.00000
+10.00000
+70.00000
Press return to continue.