Mathc complexes/a123
Installer et compiler ces fichiers dans votre répertoire de travail.
c00a.c |
---|
/* ------------------------------------ */
/* Save as : c00a.c */
/* ------------------------------------ */
#include "w_a.h"
/* ------------------------------------ */
#define FACTOR_E +1.E-2
#define RCA RC3
#define tA C3
/* ------------------------------------ */
void fun(void)
{
int i;
double **A [C4];
double **LogA_EValue[C4];
double **LogA [C4];
double **V = i_mZ(RCA,RCA);
double **V_T = i_mZ(RCA,RCA);
double **EValue = i_mZ(RCA,RCA);
double **T = i_mZ(RCA,RCA);
for(i = C0; i < C4; i++)
{
clrscrn();
if(i < C2)
A[i] = rEcsymmetric_mZ(i_mZ(RCA,RCA),999,+1.E-3);
else if(i == C2)
A[i] = mul_mZ(A[C0],A[C1],i_mZ(RCA,RCA));
else if(i == C3)
A[i] = mul_mZ(A[C1],A[C0],i_mZ(RCA,RCA));
if(i== C2) printf(" ERROR : A2 = A0 * A1 \n\n"
" My work is not correct if the matrix\n"
" is not csymmetric \n\n");
if(i== C3) printf(" ERROR : A3 = A1 * A0 \n\n"
" My work is not correct if the matrix\n"
" is not csymmetric \n\n");
printf(" Copy/Past into the octave window.\n\n");
pAi_Octave_mZ(A[i],"A",i, P6, P6);
printf(" logm (A%d)\n\n\n",i);
stop();
clrscrn();
LogA_EValue[i] = i_mZ(RCA,RCA);
LogA[i] = i_mZ(RCA,RCA);
printf(" A[%d] :",i);
p_mZ(A[i], S11,P4, S11,P4, C4);
eigs_V_mZ(A[i],V,FACTOR_E);
ctranspose_mZ(V,V_T);
/* EValue = V_T * A * V */
mul_mZ(V_T,A[i],T);
mul_mZ(T,V,EValue);
f_eigs_mZ(log,EValue, LogA_EValue[i]);
printf(" LogA_EValue[%d] :",i);
p_mZ( LogA_EValue[i], S11,P4, S11,P4, C4);
/* LogA[i] = V * LogA_EValue[i] * V_T*/
mul_mZ(V,LogA_EValue[i],T);
mul_mZ(T,V_T,LogA[i]);
printf(" LogA[%d]",i);
p_mZ(LogA[i], S11,P4, S11,P4, C4);
stop();
}
clrscrn();
printf(" Copy/Past into the octave window. \n\n"
" logm (A0) + logm (A1) \n"
" logm (A0*A1) \n"
" logm (A1*A0) \n\n");
printf(" logm(A0) + logm(A1) != logm(A0*A1) != logm(A1*A0)");
p_mZ( add_mZ(LogA[C0],LogA[C1],T), S11,P4, S11,P4, C4);
printf(" logm(A0*A1)");
p_mZ( LogA[C2], S11,P4, S11,P4, C4);
printf(" logm(A1*A0)");
p_mZ( LogA[C3], S11,P4, S11,P4, C4);
for(i = C0; i < C3; i++)
{
f_mZ(A[i]);
f_mZ(LogA_EValue[i]);
f_mZ(LogA[i]);
}
f_mZ(V);
f_mZ(V_T);
f_mZ(EValue);
f_mZ(T);
}
/* ------------------------------------ */
int main(void)
{
time_t t;
srand(time(&t));
do
{
fun();
} while(stop_w());
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Log(A0) + Log(A1) != Log( A0 * A1)
Exemple de sortie écran :
------------------------------------
Copy/Past into the octave window.
A0=[
+1.917170+0.000000*i,+0.388122-0.321751*i,-0.358450-0.214752*i;
+0.388122+0.321751*i,+2.123476+0.000000*i,+0.776139+0.796277*i;
-0.358450+0.214752*i,+0.776139-0.796277*i,+2.790623+0.000000*i]
logm (A0)
Press return to continue.
------------------------------------
A[0] :
+1.9172 +0.0000i +0.3881 -0.3218i -0.3584 -0.2148i
+0.3881 +0.3218i +2.1235 +0.0000i +0.7761 +0.7963i
-0.3584 +0.2148i +0.7761 -0.7963i +2.7906 +0.0000i
LogA_EValue[0] :
+1.2895 +0.0000i +0.0000 +0.0000i +0.0000 +0.0000i
+0.0000 +0.0000i +0.8358 +0.0000i +0.0000 +0.0000i
+0.0000 +0.0000i +0.0000 +0.0000i -0.1124 +0.0000i
LogA[0]
+0.5708 -0.0000i +0.2752 -0.1977i -0.2426 -0.1124i
+0.2752 +0.1977i +0.5610 -0.0000i +0.3696 +0.3944i
-0.2426 +0.1124i +0.3696 -0.3944i +0.8811 +0.0000i
Press return to continue.
------------------------------------
Copy/Past into the octave window.
A1=[
+3.333372+0.000000*i,+0.458059-0.885737*i,-0.438863-0.128403*i;
+0.458059+0.885737*i,+1.681938+0.000000*i,-1.047444-0.889965*i;
-0.438863+0.128403*i,-1.047444+0.889965*i,+2.026787+0.000000*i]
logm (A1)
Press return to continue.
------------------------------------
A[1] :
+3.3334 +0.0000i +0.4581 -0.8857i -0.4389 -0.1284i
+0.4581 +0.8857i +1.6819 +0.0000i -1.0474 -0.8900i
-0.4389 +0.1284i -1.0474 +0.8900i +2.0268 +0.0000i
LogA_EValue[1] :
+1.4543 +0.0000i +0.0000 +0.0000i +0.0000 +0.0000i
+0.0000 +0.0000i +0.8768 +0.0000i +0.0000 +0.0000i
+0.0000 +0.0000i +0.0000 +0.0000i -1.0286 +0.0000i
LogA[1]
+1.1116 +0.0000i +0.1712 -0.4667i -0.0257 -0.1492i
+0.1712 +0.4667i -0.1016 -0.0000i -0.8038 -0.6236i
-0.0257 +0.1492i -0.8038 +0.6236i +0.2925 -0.0000i
Press return to continue.
------------------------------------
ERROR : A2 = A0 * A1
My work is not correct if the matrix
is not csymmetric
Copy/Past into the octave window.
A2=[
+7.038296+0.244614*i,+2.097552-2.333341*i,-2.260760-0.689826*i;
+1.823569+2.703559*i,+2.512704-0.339712*i,-0.780172-0.466976*i;
-1.358739+1.396886*i,-1.591581+1.560130*i,+4.319263+0.095098*i]
logm (A2)
Press return to continue.
------------------------------------
A[2] :
+7.0383 +0.2446i +2.0976 -2.3333i -2.2608 -0.6898i
+1.8236 +2.7036i +2.5127 -0.3397i -0.7802 -0.4670i
-1.3587 +1.3969i -1.5916 +1.5601i +4.3193 +0.0951i
LogA_EValue[2] :
+2.2791 +0.0000i +0.0000 +0.0000i +0.0000 +0.0000i
+0.0000 +0.0000i +1.1724 +0.0000i +0.0000 +0.0000i
+0.0000 +0.0000i +0.0000 +0.0000i -0.1361 +0.0000i
LogA[2]
+1.5970 +0.0000i +0.5110 -0.6974i -0.3858 -0.4102i
+0.5110 +0.6974i +0.4335 +0.0000i -0.1056 -0.0152i
-0.3858 +0.4102i -0.1056 +0.0152i +1.2849 +0.0000i
Press return to continue.
------------------------------------
ERROR : A3 = A1 * A0
My work is not correct if the matrix
is not csymmetric
Copy/Past into the octave window.
A3=[
+7.038296-0.244614*i,+1.823569-2.703559*i,-1.358739-1.396886*i;
+2.097552+2.333341*i,+2.512704+0.339712*i,-1.591581-1.560130*i;
-2.260760+0.689826*i,-0.780172+0.466976*i,+4.319263-0.095098*i]
logm (A3)
Press return to continue.
------------------------------------
A[3] :
+7.0383 -0.2446i +1.8236 -2.7036i -1.3587 -1.3969i
+2.0976 +2.3333i +2.5127 +0.3397i -1.5916 -1.5601i
-2.2608 +0.6898i -0.7802 +0.4670i +4.3193 -0.0951i
LogA_EValue[3] :
+2.2791 +0.0000i +0.0000 +0.0000i +0.0000 +0.0000i
+0.0000 +0.0000i +1.1724 +0.0000i +0.0000 +0.0000i
+0.0000 +0.0000i +0.0000 +0.0000i -0.1361 +0.0000i
LogA[3]
+1.6738 +0.0000i +0.3671 -0.6417i -0.2778 -0.1151i
+0.3671 +0.6417i +0.5821 -0.0000i -0.5883 -0.3933i
-0.2778 +0.1151i -0.5883 +0.3933i +1.0595 +0.0000i
Press return to continue.
------------------------------------
Copy/Past into the octave window.
logm (A0) + logm (A1)
logm (A0*A1)
logm (A1*A0)
logm(A0) + logm(A1) != logm(A0*A1) != logm(A1*A0)
+1.6825 +0.0000i +0.4464 -0.6644i -0.2683 -0.2616i
+0.4464 +0.6644i +0.4594 -0.0000i -0.4342 -0.2292i
-0.2683 +0.2616i -0.4342 +0.2292i +1.1735 -0.0000i
logm(A0*A1)
+1.5970 +0.0000i +0.5110 -0.6974i -0.3858 -0.4102i
+0.5110 +0.6974i +0.4335 +0.0000i -0.1056 -0.0152i
-0.3858 +0.4102i -0.1056 +0.0152i +1.2849 +0.0000i
logm(A1*A0)
+1.6738 +0.0000i +0.3671 -0.6417i -0.2778 -0.1151i
+0.3671 +0.6417i +0.5821 -0.0000i -0.5883 -0.3933i
-0.2778 +0.1151i -0.5883 +0.3933i +1.0595 +0.0000i
Press return to continue
Press X to stop