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/a0dw

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 : c00a.c */ /* ------------------------------------ */ #include "v_a.h" /* ------------------------------------ */ /* ------------------------------------ */ void fun(int r,int c) { double **A = r_mR( i_mR(r,c),9.); double **A_T = transpose_mR(A, i_mR(c,r)); double **U = svd_U_Cn_mR(A, i_mR(r,r)); double **U_T = transpose_mR(U, i_mR(r,r)); /* U_T A */ double **U_TA = i_mR(r,c); /* rr rc */ double **V = svd_V_Cn_mR(A, i_mR(c,c)); double **S = svds_mR(A_T, i_mR(r,C1)); /* S2 = U_T A V */ double **S_2 = i_mR(r,c); /* rr rc cc */ /* S = U_T * A * V */ mul_mR(U_T,A,U_TA); mul_mR(U_TA,V,S_2); clrscrn(); printf(" Copy/Paste into the octave windows \n\n\n"); p_Octave_mR(A,"A",P2); printf(" [U, S, V] =svd (A,10)\n\n\n"); stop(); clrscrn(); printf(" U :"); p_mR(U,S5,P5,C10); printf(" S :"); p_mR(S,S5,P5,C10); printf(" V:"); p_mR(V,S5,P5,C10); stop(); clrscrn(); printf(" S :"); p_mR(S,S5,P5,C10); printf(" S = U_T A V :"); p_mR(S_2,S10,P5,C10); f_mR(A); f_mR(A_T); f_mR(U); f_mR(U_T); f_mR(U_TA); f_mR(V); f_mR(S); f_mR(S_2); } /* ------------------------------------ */ int main(void) { time_t t; srand(time(&t)); int i; do { i = rp_I(R3)+R1; fun(i,i+C3); } while(stop_w()); return 0; } /* ------------------------------------ */ /* ------------------------------------ */ Screen output example: Copy/Paste into the octave windows A=[ -8.00,-5.00,+9.00,+9.00,-6.00,-4.00; -1.00,-6.00,-8.00,-9.00,-7.00,+7.00; -5.00,-8.00,+6.00,+9.00,-2.00,-2.00] [U, S, V] =svd (A,10) Press return to continue. U : +0.70298 +0.30396 -0.64299 -0.41665 +0.90870 -0.02595 +0.57639 +0.28614 +0.76544 S : +23.57003 +14.90917 +4.37841 V: -0.34320 +0.32001 +0.30665 +0.00000 +0.00000 +0.76556 -0.23870 +0.62117 -0.62874 -0.28055 +0.36338 +0.02767 +0.55657 +0.18895 -0.22535 +0.66531 -0.00000 -0.00000 +0.64761 +0.19232 +0.30504 -0.62879 +0.47175 +0.32693 -0.10412 +0.58735 +0.57297 +0.28857 -0.12431 -0.55342 -0.29195 -0.30671 +0.19629 +0.00000 +0.79369 +0.00000 Press return to continue. S : +23.57003 +14.90917 +4.37841 S = U_T A V : +23.57003 -0.00000 +0.00000 -0.00000 -0.00000 +0.00000 +0.00000 -14.90917 -0.00000 +0.00000 -0.00000 +0.00000 +0.00000 -0.00000 +4.37841 +0.00000 +0.00000 +0.00000 Press return to continue Press X return to stop