fun();
 return 0;
/* ------------------------------------ */
 Trouver la meilleur équation du second degré qui s'ajuste au mieux aux points donnés

Exemple de sortie écran :
 Fitting a Quadratic Curve to Data :
 A :
+1.00 +0.10 +0.01 
+1.00 +0.20 +0.04 
+1.00 +0.30 +0.09 
+1.00 +0.40 +0.16 
+1.00 +0.50 +0.25 
 b :
-0.19 
+0.32 
+1.04 
+2.47 
+3.74 
 Ab :
+1.00 +0.10 +0.01 -0.19 
+1.00 +0.20 +0.04 +0.32 
+1.00 +0.30 +0.09 +1.04 
+1.00 +0.40 +0.16 +2.47 
+1.00 +0.50 +0.25 +3.74 
 Press return to continue. 
 -----------------------------------
 A_T :
+1.00 +1.00 +1.00 +1.00 +1.00 
+0.10 +0.20 +0.30 +0.40 +0.50 
+0.01 +0.04 +0.09 +0.16 +0.25 
 A_TA :
+5.00 +1.50 +0.55 
+1.50 +0.55 +0.23 
+0.55 +0.23 +0.10 
 inv(A_TA) :
+4.6000 -33.0000 +50.0000 
-33.0000 +267.1429 -428.5714 
+50.0000 -428.5714 +714.2857 
 inv(A_TA)*A_T :
+1.8000 +0.0000 -0.8000 -0.6000 +0.6000 
-10.5714 +3.2857 +8.5714 +5.2857 -6.5714 
+14.2857 -7.1429 -14.2857 -7.1429 +14.2857 
 x = inv(A_TA)*A_T*b :
-0.4120 
+0.4529 
+15.9286 
 Press return to continue. 
 -----------------------------------
 x = inv(A_TA)*A_T*b :
-0.41 
+0.45 
+15.93 
 The Quadratic Curve to Data : 
 s = -0.41 +0.45*t +15.93*t**2
 Press return to continue.

Mathc matrices/c22x
Application ou QR décomposition
Installer et compiler ces fichiers dans votre répertoire de travail.
/* Save as : c00g.c */
/* ------------------------------------ */
/* ------------------------------------ */
void fun(void)
double ab[RA*(CA+Cb)]={
/* x**0 x**1 y */
 1, 5.1, 0.19,
 1, 5.3, 0.32,
 1, 5.5, 1.04,
 1, 5.7, 2.47,
 1, 6.0, 3.74,
double **Ab = ca_A_mR(ab,i_Abr_Ac_bc_mR(RA,CA,Cb));
double **A = c_Ab_A_mR(Ab,i_mR(RA,CA));
double **b = c_Ab_b_mR(Ab,i_mR(RA,Cb));
double **Q = i_mR(RA,CA);
double **R = i_mR(CA,CA);
double **invR = i_mR(CA,CA);
double **Q_T = i_mR(CA,RA);
double **invR_Q_T = i_mR(CA,RA);
double **x = i_mR(CA,Cb); // x invR * Q_T * b
 clrscrn();
 printf(" Fitting a linear Curve to Data :\n\n");
 printf(" A :");
 p_mR(A,S5,P2,C7);
 printf(" b :");
 p_mR(b,S5,P2,C7);
 printf(" Ab :");
 p_mR(Ab,S5,P2,C7);
 stop();
 clrscrn();
 QR_uv_mR(A,Q,R); 
 printf(" Q :");
 p_mR(Q,S3,P4,C6); 
 printf(" R :");
 p_mR(R,S10,P4,C6);
 stop();
 clrscrn();
 transpose_mR(Q,Q_T); 
 printf(" Q_T :");
 pE_mR(Q_T,S3,P4,C6); 
 inv_mR(R,invR); 
 printf(" invR :");
 pE_mR(invR,S10,P4,C6);
 stop();
 clrscrn();
 printf(" Solving this system yields a unique\n"
 " least squares solution, namely \n\n");
 mul_mR(invR,Q_T,invR_Q_T);
 mul_mR(invR_Q_T,b,x);
 printf(" x = invR * Q_T * b :");
 p_mR(x,S10,P2,C6);
 printf(" The linear Curve to Data : \n\n:"
 " s = %+.2f %+.2f*t \n\n"
 ,x[R1][C1],x[R2][C1]); 
 stop();
 f_mR(A);
 f_mR(b);
 f_mR(Ab);
 f_mR(Q);
 f_mR(Q_T);
 f_mR(R);
 f_mR(invR); 
 f_mR(invR_Q_T); 
 f_mR(x); 
/* ------------------------------------ */
int main(void)

fun();
 return 0;
/* ------------------------------------ */
 Trouver la meilleur équation linéaire qui s'ajuste au mieux aux points donnés
 On utilise la QR décomposition. Dans l'exemple suivant on utilise un autre algorithme sur le même exemple.

Exemple de sortie écran :
 Fitting a linear Curve to Data :
 A :
+1.00 +5.10 
+1.00 +5.30 
+1.00 +5.50 
+1.00 +5.70 
+1.00 +6.00 
 b :
+0.19 
+0.32 
+1.04 
+2.47 
+3.74 
 Ab :
+1.00 +5.10 +0.19 
+1.00 +5.30 +0.32 
+1.00 +5.50 +1.04 
+1.00 +5.70 +2.47 
+1.00 +6.00 +3.74 
 Press return to continue. 
 Q :
+0.4472 -0.6012 
+0.4472 -0.3149 
+0.4472 -0.0286 
+0.4472 +0.2577 
+0.4472 +0.6871 
 R :
 +2.2361 +12.3431 
 +0.0000 +0.6986 
 Press return to continue. 
 -----------------------------------
 Q_T :
+4.4721e-01 +4.4721e-01 +4.4721e-01 +4.4721e-01 +4.4721e-01 
-6.0123e-01 -3.1493e-01 -2.8630e-02 +2.5767e-01 +6.8712e-01 
 invR :
+4.4721e-01 -7.9019e+00 
-0.0000e+00 +1.4315e+00 
 Press return to continue. 
 Solving this system yields a unique
 least squares solution, namely 
 x = invR * Q_T * b :
 -21.85 
 +4.24 
 The linear Curve to Data : 
 s = -21.85 +4.24*t

Mathc matrices/c22y
Application ou Résoudre avec ...
Installer et compiler ces fichiers dans votre répertoire de travail.
/* Save as : c00h.c */
/* ------------------------------------ */
/* ------------------------------------ */
void fun(void)
double ab[RA*(CA+Cb)]={
/* x**0 x**1 y */
 1, 5.1, 0.19,
 1, 5.3, 0.32,
 1, 5.5, 1.04,
 1, 5.7, 2.47,
 1, 6.0, 3.74,
double **Ab = ca_A_mR(ab,i_Abr_Ac_bc_mR(RA,CA,Cb));
double **A = c_Ab_A_mR(Ab,i_mR(RA,CA));
double **b = c_Ab_b_mR(Ab,i_mR(RA,Cb));
double **A_T = i_mR(CA,RA);
double **A_TA = i_mR(CA,CA); // A_T*A
double **invA_TA = i_mR(CA,CA); // inv(A_T*A)
double **invA_TAA_T = i_mR(CA,RA); // inv(A_T*A)*A_T
double **x = i_mR(CA,Cb); // x = inv(A_T*A)*A_T*b
 clrscrn();
 printf(" Fitting a linear Curve to Data :\n\n");
 printf(" A :");
 p_mR(A,S5,P2,C7);
 printf(" b :");
 p_mR(b,S5,P2,C7);
 printf(" Ab :");
 p_mR(Ab,S5,P2,C7);
 stop();
 clrscrn();
 printf(" A_T :");
 p_mR(transpose_mR(A,A_T),S5,P2,C7);
 printf(" A_TA :");
 p_mR(mul_mR(A_T,A,A_TA),S5,P2,C7);
 printf(" inv(A_TA) :");
 p_mR(inv_mR(A_TA,invA_TA),S5,P4,C7); 
 printf(" inv(A_TA)*A_T :");
 p_mR(mul_mR(invA_TA,A_T,invA_TAA_T),S5,P4,C7);
 printf("\n x = inv(A_TA)*A_T*b :");
 p_mR(mul_mR(invA_TAA_T,b,x),S5,P4,C7);
 stop();
 clrscrn();
 printf("\n x = inv(A_TA)*A_T*b :");
 p_mR(x,S5,P2,C7); 
 printf(" The linear Curve to Data : \n\n:"
 " s = %+.2f %+.2f*t \n\n"
 ,x[R1][C1],x[R2][C1]); 
 stop(); 
 f_mR(A);
 f_mR(b);
 f_mR(Ab);
 f_mR(A_T);
 f_mR(A_TA); // A_T*A
 f_mR(invA_TA); // inv(A_T*A)
 f_mR(invA_TAA_T); // inv(A_T*A)*A_T
 f_mR(x); 
/* ------------------------------------ */
int main(void)

fun();
 return 0;
/* ------------------------------------ */
 Trouver la meilleur équation linéaire qui s'ajuste au mieux aux points donnés
 Exemple de sortie écran :
 Fitting a linear Curve to Data :
 A :
+1.00 +5.10 
+1.00 +5.30 
+1.00 +5.50 
+1.00 +5.70 
+1.00 +6.00 
 b :
+0.19 
+0.32 
+1.04 
+2.47 
+3.74 
 Ab :
+1.00 +5.10 +0.19 
+1.00 +5.30 +0.32 
+1.00 +5.50 +1.04 
+1.00 +5.70 +2.47 
+1.00 +6.00 +3.74 
 Press return to continue. 
 -----------------------------------
 A_T :
+1.00 +1.00 +1.00 +1.00 +1.00 
+5.10 +5.30 +5.50 +5.70 +6.00 
 A_TA :
+5.00 +27.60 
+27.60 +152.84 
 inv(A_TA) :
+62.6393 -11.3115 
-11.3115 +2.0492 
 inv(A_TA)*A_T :
+4.9508 +2.6885 +0.4262 -1.8361 -5.2295 
-0.8607 -0.4508 -0.0410 +0.3689 +0.9836 
 x = inv(A_TA)*A_T*b :
-21.8492 
+4.2393 
 Press return to continue. 
 x = inv(A_TA)*A_T*b :
-21.85 
+4.24 
 The linear Curve to Data : 
 s = -21.85 +4.24*t 
 Press return to continue.