Linear Algebra and the C Language/a0d8
Code study: eigs_V_mR();
- You must use the algoritm of free variables .
- GJ_PP_FreeV_mR(); displays a null row, introduces the free variable, solves the system, and returns a free vector.
- The for loop allows you to calculate all vectors.
/* ------------------------------------ */
/* ------------------------------------ */
double **eigs_V_mR(
double **A,
double **V
)
{
int i;
int r = rsize_R(A);
double **EigsValue = i_mR(r,C1);
double **Ab = i_Abr_Ac_bc_mR(r,r,C1);
double **b = i_mR(r,C1);
double **b_free = i_mR(r,r);
double **Ide = eye_mR(i_mR(r,r));
double **sIde = i_mR(r,r);
double **AmnssIde = i_mR(r,r);
eigs_mR(A,EigsValue); // Compute the eignvalues
for(i = R1; i <= rsize_R(EigsValue); i++)
{
smul_mR(EigsValue[i][C1],Ide,sIde); // A - λ Id
sub_mR(A,sIde,AmnssIde);
// Ab
c_A_b_Ab_mR(AmnssIde,b,Ab); // A - λ Id|0
GJ_PP_FreeV_mR(Ab,b_free); // b_free = an eignvector
c_c_mR(b_free,C2,V,i); // copy an eignvector into V
}
Normalize_mR(V);
f_mR(EigsValue);
f_mR(Ab);
f_mR(b);
f_mR(b_free);
f_mR(Ide);
f_mR(sIde);
f_mR(AmnssIde);
return(V);
}
/* ------------------------------------ */
/* ------------------------------------ */