Mathc matrices/03x
Apparence
Installer et compiler ces fichiers dans votre répertoire de travail.
c00a.c |
|---|
/* ------------------------------------ */
/* Save as : c00a.c */
/* ------------------------------------ */
#include "v_a.h"
/* ------------------------------------ */
#define RCA RC5
/* ------------------------------------ */
void fun(void)
{
/* Choose your Eigenvalues */
double d[RCA*RCA] ={
+1, +0, +0, +0, +0,
+0, +2, +0, +0, +0,
+0, +0, +3, +0, +0,
+0, +0, +0, +4, +0,
+0, +0, +0, +0, +5
};
double **D = ca_A_mR(d, i_mR(RCA,RCA));
double **A = rdefpos_diag_mR(D, i_mR(RCA,RCA),9);
double **invA = invgj_mR(A, i_mR(RCA,RCA));
double **AinvA = mul_mR(A,invA, i_mR(RCA,RCA));
double **EigsValue = eigs_mR(A, i_mR(RCA,C1));
double cond = EigsValue[R1][C1] / EigsValue[RCA][C1];
/* maxi value mini value */
clrscrn();
printf(" Copy/Paste into the octave windows \n\n");
p_Octave_mR(A,"a",P12);
printf(" EigenValues = eigs (a,%d) \n\n",RCA);
printf(" EigenValues: cond = EvalueMax / EvalueMin = %.e",cond);
p_mR(EigsValue, S13,P8,C1);
stop();
clrscrn();
printf(" invA:");
p_mR(invA, S13,P4,C5);
printf(" cond = EvalueMax / EvalueMin = %.e\n\n"
" Id == A invA:",cond);
p_mR(AinvA, S13,P9,C5);
f_mR(A);
f_mR(D);
f_mR(invA);
f_mR(AinvA);
f_mR(EigsValue);
}
/* ------------------------------------ */
int main(void)
{
time_t t;
srand(time(&t));
do
fun();
while(stop_w());
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Avec , jusqu'à 9 chiffres après la virgule il ne semble pas avoir d'erreur.
Exemple de sortie écran :
Copy/Paste into the octave windows
a=[
+4.051099628878,-0.122230950769,-0.459733289764,-0.444765749693,+0.91156044032;,
-0.122230950769,+2.480595148028,+0.022569544826,-0.892483514917,+0.47253420844;,
-0.459733289764,+0.022569544826,+2.889454033608,-1.010436504557,-0.55158622590;,
-0.444765749693,-0.892483514917,-1.010436504557,+2.438620373951,-0.73387996551;,
+0.911560440321,+0.472534208441,-0.551586225903,-0.733879965517,+3.14023081553],
EigenValues = eigs (a,5)
EigenValues: cond = EvalueMax / EvalueMin = 5e+00
+5.00000000
+4.00000000
+3.00000000
+2.00000000
+1.00000000
Press return to continue.
invA:
+0.2769 +0.0518 +0.0586 +0.0756 -0.0602
+0.0518 +0.4853 +0.0725 +0.2092 -0.0264
+0.0586 +0.0725 +0.4708 +0.2676 +0.1173
+0.0756 +0.2092 +0.2676 +0.6555 +0.1468
-0.0602 -0.0264 +0.1173 +0.1468 +0.3948
cond = EvalueMax / EvalueMin = 5e+00
Id == A invA:
+1.000000000 -0.000000000 -0.000000000 -0.000000000 -0.000000000
-0.000000000 +1.000000000 -0.000000000 +0.000000000 -0.000000000
+0.000000000 +0.000000000 +1.000000000 +0.000000000 +0.000000000
+0.000000000 +0.000000000 +0.000000000 +1.000000000 +0.000000000
+0.000000000 +0.000000000 -0.000000000 +0.000000000 +1.000000000
Press return to continue
Press X return to stop