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

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 : c00c.c */ /* ------------------------------------ */ #include "v_a.h" /* ------------------------------------ */ /* ------------------------------------ */ void fun(int r,int c) { double **B = r_mR( i_mR(c,r),9.); double **B_T = transpose_mR(B, i_mR(r,c)); double **U = svd_U_Rn_mR(B_T, i_mR(c,r)); double **U_T = transpose_mR(U, i_mR(r,c)); double **U_TB = i_mR(r,r); /* rc cr */ double **V = svd_V_Rn_mR(B_T, i_mR(r,r)); double **VS = i_mR(r,r); /* rr rr */ double **S = i_mR(r,r); double **invS = i_mR(r,r); /* Pinv = V invS U_T */ double **Pinv = i_mR(r,c); /* rr rr rc */ double **PinvB = i_mR(r,r); /* rr rr rc cr */ /* S = U_T B V */ mul_mR(U_T,B,U_TB); mul_mR(U_TB,V,S); /* invS */ inv_svd_mR(S,invS); /* Pinv = V invS U_T */ mul_mR(V,invS,VS); mul_mR(VS,U_T,Pinv); /* Ide = Pinv B */ mul_mR(Pinv,B,PinvB); clrscrn(); printf(" Copy/Paste into the octave windows \n\n\n"); p_Octave_mR(B,"B",P2); printf("pinv(B)\n\n\n"); stop(); clrscrn(); printf(" Pinv = V invS U_T "); p_mR(Pinv,S10,P6,C10); printf(" Ide = Pinv B "); p_mR(PinvB,S10,P6,C10); f_mR(B); f_mR(B_T); f_mR(U); f_mR(U_T); f_mR(U_TB); f_mR(V); f_mR(VS); f_mR(S); f_mR(invS); f_mR(Pinv); f_mR(PinvB); } /* ------------------------------------ */ int main(void) { time_t t; srand(time(&t)); int i; do { i = rp_I(R3)+R1; fun(i,i+R2); } while(stop_w()); return 0; } /* ------------------------------------ */ /* ------------------------------------ */ Screen output example: Copy/Paste into the octave windows B=[ +7.00,+2.00,-6.00; +9.00,+7.00,-5.00; +1.00,-8.00,-6.00; -9.00,-1.00,+3.00; -8.00,+5.00,-1.00] pinv(B) Press return to continue. Pinv = V invS U_T +0.002456 +0.015315 -0.022833 -0.037373 -0.066431 +0.010749 +0.043518 -0.053964 +0.002403 +0.048913 -0.052801 -0.027851 -0.083505 -0.010925 -0.075681 Ide = Pinv B +1.000000 +0.000000 +0.000000 -0.000000 +1.000000 -0.000000 +0.000000 +0.000000 +1.000000 Press return to continue Press X return to stop