Mathc matrices/c05c
Installer et compiler ces fichiers dans votre répertoire de travail.
c05c.c |
---|
/* ------------------------------------ */
/* Save as : c05c.c */
/* ------------------------------------ */
#include "v_a.h"
/* ------------------------------------ */
void fun(int r,int rn)
{
double **A = r_mR(i_mR(r+rn,r),9.);
double **A_T = i_mR(r,r+rn);
double **A_TA = i_mR(r,r);
double **SvdValue_2 = i_mR(r,C1);
double **SvdValue = i_mR(r,C1);
clrscrn();
printf(" A :");
p_mR(A,S5,P0,C6);
printf(" Copy/Past into the octave windows \n\n\n");
p_Octave_mR(A,"a",P0);
printf(" SvdValue = svd (a,10)\n\n\n");
stop();
clrscrn();
printf(" A :");
p_mR(A,S5,P0,C6);
transpose_mR(A,A_T);
mul_mR(A_T,A, A_TA);
eigs_mR(A_TA,SvdValue_2);
printf(" SvdValue^2 :");
p_mR(SvdValue_2,S13,P4,C1);
printf(" SvdValue :");
sqrt_svd_mR(SvdValue_2,SvdValue);
p_mR(SvdValue,S13,P4,C1);
f_mR(A);
f_mR(A_T);
f_mR(A_TA);
f_mR(SvdValue_2);
f_mR(SvdValue);
}
/* ------------------------------------ */
int main(void)
{
time_t t;
srand(time(&t));
do
{
fun(rp_I(R4),rp0_I(R4));
} while(stop_w());
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Vérifier avec octave les calculs. Dans cet exemple le nombre de lignes doit être supérieur ou égal au nombre de colonnes. L'exemple suivant corrigera ce problème. Exemple de sortie écran :
A :
-3 +2 +8
+2 +6 -3
+8 -1 +2
-1 -5 +2
-7 +2 -1
-9 +6 -1
Copy/Past into the octave windows
a=[
-3,+2,+8;
+2,+6,-3;
+8,-1,+2;
-1,-5,+2;
-7,+2,-1;
-9,+6,-1]
SvdValue = svd (a,10)
Press return to continue.
Exemple de sortie écran :
A :
-3 +2 +8
+2 +6 -3
+8 -1 +2
-1 -5 +2
-7 +2 -1
-9 +6 -1
SvdValue^2 :
+240.21769
+98.54204
+58.24027
SvdValue :
+15.49896
+9.92683
+7.63153
Press return to continue
Press X to stop