Mathc complexes/a106
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 RC4
/* ------------------------------------ */
void fun(void)
{
double **A = rcsymmetric_mRZ(i_mZ(RCA,RCA),99.);
double **SqrtA = i_mZ(RCA,RCA);
double **EigsVector = i_mZ(RCA,RCA);
double **T_EigsVector = i_mZ(RCA,RCA);
double **EigsValue = i_mZ(RCA,RCA);
double **f_EigsValue = i_mZ(RCA,RCA);
double **T1 = i_mZ(RCA,RCA);
clrscrn();
printf(" A ");
p_mRZ(A, S8,P0, C6);
eigs_V_mZ(A,EigsVector,FACTOR_E);
transpose_mZ(EigsVector,T_EigsVector);
/* EigsValue : T_EigsVector * A * EigsVector */
mul_mZ(T_EigsVector,A,T1);
mul_mZ(T1,EigsVector,EigsValue);
f_eigs_mZ(sqrt,EigsValue,f_EigsValue);
//A == EigsVector * EigsValue * T_EigsVector
mul_mZ(EigsVector,f_EigsValue,T1);
mul_mZ(T1,T_EigsVector,SqrtA);
printf(" sqrt(A) = EigsVector * sqrt(EigsValue) * T_EigsVector");
p_mRZ(SqrtA, S9,P3, C6);
printf(" A = sqrt(A) * sqrt(A)");
mul_mZ(SqrtA,SqrtA,A);
p_mRZ(A, S8,P0, C6);
f_mZ(A);
f_mZ(SqrtA);
f_mZ(EigsVector);
f_mZ(T_EigsVector);
f_mZ(EigsValue);
f_mZ(f_EigsValue);
f_mZ(T1);
}
/* ------------------------------------ */
int main(void)
{
time_t t;
srand(time(&t));
do
{
fun();
} while(stop_w());
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Sqrt(A)== V * sqrt(EValue)* T_V
Exemple de sortie écran :
------------------------------------
A
+11764 -6124 -826 -4482
-6124 +11317 +2360 -4867
-826 +2360 +27818 -4778
-4482 -4867 -4778 +12015
sqrt(A) = EigsVector * sqrt(EigsValue) * T_EigsVector
+98.350 -35.729 -4.145 -28.241
-35.729 +95.563 +6.473 -29.432
-4.145 +6.473 +165.668 -17.696
-28.241 -29.432 -17.696 +100.190
A = sqrt(A) * sqrt(A)
+11764 -6124 -826 -4482
-6124 +11317 +2360 -4867
-826 +2360 +27818 -4778
-4482 -4867 -4778 +12015
Press return to continue
Press X to stop