Mathc complexes/032
Installer et compiler ces fichiers dans votre répertoire de travail.
c00a.c |
---|
/* ------------------------------------ */
/* Save as : c00a.c */
/* ------------------------------------ */
#include "w_a.h"
/* ------------------------------------ */
#define RCA RC4
/* ------------------------------------ */
void fun(void)
{
double a[RCA*(RCA*C2)] ={
+36.313679157,+0.000000000, +19.585408427,-0.742196710, -15.875721237,+0.689662875, +8.211253265,+22.976851849,
+19.585408427,+0.742196710, +63.726719706,+0.000000000, +10.890345307,+2.396948766, -1.434784341,+15.056472852,
-15.875721237,-0.689662875, +10.890345307,-2.396948766, +16.126426155,-0.000000000, -3.467769379,-0.518070163,
+8.211253265,-22.976851849, -1.434784341,-15.056472852, -3.467769379,+0.518070163, +55.833174982,+0.000000000
};
double v[RCA*(RCA*C2)] ={
+0.112347739,+0.473151, +0.275127445,+0.194004, -0.301211051,-0.467615, -0.133705254,-0.568247,
+0.027862928,+0.639967, -0.193879507,-0.664478, +0.124167152,-0.150010, +0.033426314,+0.267411,
-0.022126148,-0.013101, -0.269834693,-0.287164, +0.282181526,+0.453629, -0.133705254,-0.735379,
+0.593726724,-0.000000, +0.502268472,+0.000000, +0.606037951,-0.000000, +0.167131568,-0.000000
};
double **A = ca_A_mZ(a, i_mZ(RCA,RCA));
double **V = ca_A_mZ(v, i_mZ(RCA,RCA));
double **invV = invgj_mZ(V, i_mZ(RCA,RCA));
double **T = i_mZ(RCA,RCA);
double **EigsValue = i_mZ(RCA,RCA);
clrscrn();
printf(" A :");
p_mZ(A, S10,P4, S8,P4, C4);
printf(" V :");
p_mZ(V, S10,P4, S8,P4, C4);
printf(" invV :");
p_mZ(invV, S10,P4, S8,P4, C4);
stop();
clrscrn();
printf(" EigsValue : invV * A * V");
mul_mZ(invV,A,T);
mul_mZ(T,V,EigsValue);
p_mZ(clean_eyes_mZ(EigsValue), S10,P4, S8,P4, C4);
printf(" A :");
p_mZ(A, S10,P4, S8,P4, C4);
printf(" A = V * EigsValue * invV");
mul_mZ(V,EigsValue,T);
mul_mZ(T,invV,A);
p_mZ(A, S10,P4, S8,P4, C4);
stop();
f_mZ(A);
f_mZ(V);
f_mZ(invV);
f_mZ(T);
f_mZ(EigsValue);
}
/* ------------------------------------ */
int main(void)
{
fun();
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Vérifions les calculs précédents.
Exemple de sortie écran :
A :
+36.3137 +0.0000i +19.5854 -0.7422i -15.8757 +0.6897i +8.2113+22.9769i
+19.5854 +0.7422i +63.7267 +0.0000i +10.8903 +2.3969i -1.4348+15.0565i
-15.8757 -0.6897i +10.8903 -2.3969i +16.1264 -0.0000i -3.4678 -0.5181i
+8.2113-22.9769i -1.4348-15.0565i -3.4678 +0.5181i +55.8332 +0.0000i
V :
+0.1123 +0.4732i +0.2751 +0.1940i -0.3012 -0.4676i -0.1337 -0.5682i
+0.0279 +0.6400i -0.1939 -0.6645i +0.1242 -0.1500i +0.0334 +0.2674i
-0.0221 -0.0131i -0.2698 -0.2872i +0.2822 +0.4536i -0.1337 -0.7354i
+0.5937 -0.0000i +0.5023 +0.0000i +0.6060 -0.0000i +0.1671 -0.0000i
invV :
+0.1123 -0.4732i +0.0279 -0.6400i -0.0221 +0.0131i +0.5937 -0.0000i
+0.2751 -0.1940i -0.1939 +0.6645i -0.2698 +0.2872i +0.5023 -0.0000i
-0.3012 +0.4676i +0.1242 +0.1500i +0.2822 -0.4536i +0.6060 +0.0000i
-0.1337 +0.5682i +0.0334 -0.2674i -0.1337 +0.7354i +0.1671 -0.0000i
Press return to continue.
EigsValue : invV * A * V
+92.0000 +0.0000i +0.0000 +0.0000i +0.0000 +0.0000i +0.0000 +0.0000i
+0.0000 +0.0000i +52.0000 +0.0000i +0.0000 +0.0000i +0.0000 +0.0000i
+0.0000 +0.0000i +0.0000 +0.0000i +28.0000 -0.0000i +0.0000 +0.0000i
+0.0000 +0.0000i +0.0000 +0.0000i +0.0000 +0.0000i +0.0000 +0.0000i
A :
+36.3137 +0.0000i +19.5854 -0.7422i -15.8757 +0.6897i +8.2113+22.9769i
+19.5854 +0.7422i +63.7267 +0.0000i +10.8903 +2.3969i -1.4348+15.0565i
-15.8757 -0.6897i +10.8903 -2.3969i +16.1264 -0.0000i -3.4678 -0.5181i
+8.2113-22.9769i -1.4348-15.0565i -3.4678 +0.5181i +55.8332 +0.0000i
A = V * EigsValue * invV
+36.3137 +0.0000i +19.5854 -0.7422i -15.8757 +0.6897i +8.2113+22.9768i
+19.5854 +0.7422i +63.7267 -0.0000i +10.8904 +2.3970i -1.4348+15.0565i
-15.8757 -0.6897i +10.8904 -2.3969i +16.1264 +0.0000i -3.4678 -0.5181i
+8.2113-22.9769i -1.4348-15.0565i -3.4678 +0.5181i +55.8332 -0.0000i
Press return to continue.