Skip to main content

  | मौसम…

411 समाचार
Public archive edition · Attributed source reporting with original dates · AI drafts are excluded

411 REFERENCE · Wikibooks

Linear Algebra and the C Language/a0n2

Reference material by Wikibooks contributors. This retains its source identity and is not 411 news reporting.

__NOTOC__ Install and compile this file in your working directory. /* ------------------------------------ */ /* Save as: c00b.c */ /* ------------------------------------ */ #include "v_a.h" /* ------------------------------------ */ #define ARRAY A3 /* ------------------------------------ */ #define RC RC3 /* ------------------------------------ */ void fun(void) { double **A = rsymmetric_mR( i_mR(RC,RC),999); double **AEVect = eigs_V_mR(A, i_mR(RC,RC)); double **InvAEVect = transpose_mR(AEVect, i_mR(RC,RC)); double **T = i_mR(RC,RC); double **Ide = i_mR(RC,RC); double **b [ARRAY]; double **r [ARRAY]; double **br[ARRAY]; int i; for(i=A0; i<ARRAY; i++) { b[i] = c_c_mR( AEVect,i+C1, i_mR(RC,C1),C1); r[i] = c_r_mR(InvAEVect,i+R1, i_mR(R1,RC),R1); br[i] = mul_mR(b[i],r[i], i_mR(RC,RC)); } clrscrn(); printf(" A:"); p_mR(A, S10,P4,C6); printf(" AEVect: Eigenvectors of A"); p_mR(AEVect, S10,P4,C6); printf(" InvAEVect: Eigenvectors of InvA"); p_mR(InvAEVect, S10,P4,C6); stop(); clrscrn(); printf(" AEVect: Eigenvectors of A"); p_mR(AEVect, S10,P4,C6); for(i=A0; i<ARRAY; i++) { printf(" b%d:",i+C1); p_mR(b[i], S10,P4,C6); } stop(); clrscrn(); printf(" InvAEVect: Eigenvectors of InvA"); p_mR(InvAEVect, S10,P4,C6); for(i=A0; i<ARRAY; i++) { printf(" r%d:",i+R1); p_mR(r[i], S10,P4,C6); } stop(); clrscrn(); for(i=A0; i<ARRAY; i++) { printf(" b%dr%d:",i+C1,i+R1); p_mR(br[i], S10,P4,C6); } stop(); clrscrn(); add_mR(br[0], br[1], T); add_mR( T, br[2], Ide); printf(" b1r1 + b2r2 + b3r3 = Ide"); p_mR(Ide, S10,P4,C6); f_mR(A); f_mR(AEVect); f_mR(InvAEVect); f_mR(T); f_mR(Ide); for(i=A0; i<ARRAY; i++) { f_mR( b[i]); f_mR( r[i]); f_mR(br[i]); } } /* ------------------------------------ */ int main(void) { time_t t; srand(time(&t)); do { fun(); } while(stop_w()); return 0; } /* ------------------------------------ */ /* ------------------------------------ */ A property of spectral decomposition: b1 r1 + b2 r2 + b3 r3 = Ide b: The columns of the eigenvectors of A r: The rows of eigenvectors of the inverse of A b1r1 is obtained by multiplying the first column of the eigenvector of A by the first row of the eigenvector of the inverse of A Screen output example: A: +742.0000 +423.0000 +326.0000 +423.0000 -552.0000 +137.0000 +326.0000 +137.0000 +724.0000 AEVect: Eigenvectors of A +0.7384 -0.2791 -0.6139 +0.2337 +0.9598 -0.1552 +0.6326 -0.0289 +0.7740 InvAEVect: Eigenvectors of InvA +0.7384 +0.2337 +0.6326 -0.2791 +0.9598 -0.0289 -0.6139 -0.1552 +0.7740 Press return to continue. AEVect: Eigenvectors of A +0.7384 -0.2791 -0.6139 +0.2337 +0.9598 -0.1552 +0.6326 -0.0289 +0.7740 b1: +0.7384 +0.2337 +0.6326 b2: -0.2791 +0.9598 -0.0289 b3: -0.6139 -0.1552 +0.7740 Press return to continue. InvAEVect: Eigenvectors of InvA +0.7384 +0.2337 +0.6326 -0.2791 +0.9598 -0.0289 -0.6139 -0.1552 +0.7740 r1: +0.7384 +0.2337 +0.6326 r2: -0.2791 +0.9598 -0.0289 r3: -0.6139 -0.1552 +0.7740 Press return to continue. b1r1: +0.5452 +0.1726 +0.4671 +0.1726 +0.0546 +0.1478 +0.4671 +0.1478 +0.4001 b2r2: +0.0779 -0.2679 +0.0081 -0.2679 +0.9213 -0.0277 +0.0081 -0.0277 +0.0008 b3r3: +0.3769 +0.0953 -0.4751 +0.0953 +0.0241 -0.1201 -0.4751 -0.1201 +0.5990 Press return to continue. b1r1 + b2r2 + b3r3 = Ide +1.0000 -0.0000 +0.0000 -0.0000 +1.0000 +0.0000 +0.0000 +0.0000 +1.0000 Press return to continue Press X return to stop