Mathc matrices/c26f
Installer et compiler ces fichiers dans votre répertoire de travail.
cq5.c |
---|
/* ------------------------------------ */
/* Save as : cq5.c */
/* ------------------------------------ */
#include "v_a.h"
/* ------------------------------------ */
#define RA R3
#define CA C3
#define CB C3
/* ------------------------------------ */
void fun(void)
{
double ta[RA*CA]={
-0.719184408316, +0.554628943479, +0.418521829646,
+0.693499250876, +0.535876212097, +0.481555266136,
+0.042808595733, +0.636571614482, -0.770028573344
};
double tb[RA*CB]={
+90.0000, -88.0000, +26.0000,
-79.0000, +60.0000, -67.0000,
+77.0000, -34.0000, +33.0000
};
double **A = ca_A_mR(ta,i_mR(RA,CA));
double **B = ca_A_mR(tb,i_mR(RA,CB));
double **Ab = i_Abr_Ac_bc_mR(RA,CA,CB);
double **b[CB];
double **a[CA];
int c;
clrscrn();
printf(" A : Orthonormal");
p_mR(A,S9,P4,C6);
printf(" b[C0] b[C1] b[C2] :");
p_mR(B,S9,P4,C6);
printf(" Ab :");
c_A_b_Ab_mR(A,B,Ab);
p_mR(Ab,S9,P4,C6);
printf(" gj_TP_mR(Ab) : x[C0] x[C1] x[C2]");
gj_TP_mR(Ab);
p_mR(Ab,S9,P4,C6);
stop();
/* ------------------------------------ */
/* ------------------------------------ */
for(c=C0; c<CB; c++)
{
b[c] = i_mR(RA,C1);
c_c_mR(B,(c+C1),b[c],C1); }
for(c=C0; c<CA; c++)
{
a[c] = i_mR(RA,C1);
c_c_mR(A,(c+C1),a[c],C1); }
/* ------------------------------------ */
/* ------------------------------------ */
clrscrn();
for(c=C0; c<CA; c++)
{
printf(" a[%d] :",c);
pE_mR(a[c],S12,P4,C6); }
stop();
clrscrn();
for(c=C0; c<CB; c++)
{
printf(" b[%d] :",c);
p_mR(b[c],S12,P4,C6); }
stop();
clrscrn();
printf(" x[C0] :\n");
for(c=C0; c<RA; c++)
printf("%+15.7f <b[C0],a[%d]>\n",dot_R(b[C0],a[c]), c);
printf("\n x[C1] :\n");
for(c=C0; c<RA; c++)
printf("%+15.7f <b[C1],a[%d]>\n",dot_R(b[C1],a[c]), c);
printf("\n x[C2] :\n");
for(c=C0; c<RA; c++)
printf("%+15.7f <b[C2],a[%d]>\n",dot_R(b[C2],a[c]), c);
printf("\n gj_TP_mR(Ab) :\t\t\t x[C0] x[C1] x[C2]");
p_mR(Ab,S12,P7,C6);
stop();
/* ------------------------------------ */
/* ------------------------------------ */
for(c=C0; c<CA; c++)
f_mR(a[c]);
for(c=C0; c<CB; c++)
f_mR(b[c]);
/* ------------------------------------ */
/* ------------------------------------ */
f_mR(Ab);
f_mR(B);
f_mR(A);
}
/* ------------------------------------ */
int main(void)
{
fun();
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Résoudre un système d'équation quand A est une matrice orthonormale : Ici B est composé de trois vecteurs.
Exemple de sortie écran :
--------------------------------
A : Orthonormal
-0.7192 +0.5546 +0.4185
+0.6935 +0.5359 +0.4816
+0.0428 +0.6366 -0.7700
b[C0] b[C1] b[C2] :
+90.0000 -88.0000 +26.0000
-79.0000 +60.0000 -67.0000
+77.0000 -34.0000 +33.0000
Ab :
-0.7192 +0.5546 +0.4185 +90.0000 -88.0000 +26.0000
+0.6935 +0.5359 +0.4816 -79.0000 +60.0000 -67.0000
+0.0428 +0.6366 -0.7700 +77.0000 -34.0000 +33.0000
gj_TP_mR(Ab) : x[C0] x[C1] x[C2]
+1.0000 -0.0000 -0.0000 -116.2168 +103.4427 -63.7506
+0.0000 +1.0000 +0.0000 +56.5984 -38.2982 -0.4765
+0.0000 +0.0000 +1.0000 -59.6681 +18.2444 -46.7936
Press return to continue.
--------------------------------
a[0] :
-7.1918e-01
+6.9350e-01
+4.2809e-02
a[1] :
+5.5463e-01
+5.3588e-01
+6.3657e-01
a[2] :
+4.1852e-01
+4.8156e-01
-7.7003e-01
Press return to continue.
--------------------------------
b[0] :
+90.0000
-79.0000
+77.0000
b[1] :
-88.0000
+60.0000
-34.0000
b[2] :
+26.0000
-67.0000
+33.0000
Press return to continue.
--------------------------------
x[C0] :
-116.2167757 <b[C0],a[0]>
+56.5983985 <b[C0],a[1]>
-59.6681015 <b[C0],a[2]>
x[C1] :
+103.4426907 <b[C1],a[0]>
-38.2982092 <b[C1],a[1]>
+18.2443665 <b[C1],a[2]>
x[C2] :
-63.7505608 <b[C2],a[0]>
-0.4764904 <b[C2],a[1]>
-46.7935782 <b[C2],a[2]>
gj_TP_mR(Ab) : x[C0] x[C1] x[C2]
+1.0000000 -0.0000000 -0.0000000 -116.2167757 +103.4426907 -63.7505608
+0.0000000 +1.0000000 +0.0000000 +56.5983985 -38.2982092 -0.4764904
+0.0000000 +0.0000000 +1.0000000 -59.6681015 +18.2443665 -46.7935782
Press return to continue.