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

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: c00e.c */ /* ------------------------------------ */ #include "v_a.h" /* ------------------------------------ */ /* ------------------------------------ */ # define RAb C4 # define CA C6 # define Cb C1 /* ------------------------------------ */ # define FREEV C3 /* ------------------------------------ */ /* ------------------------------------ */ void X_p_freeV( double **b, /* b + the free variables */ int e, /* Control the space between the numbers. */ int d) /* Control the number of digits after the point. */ { int m; /* Index of x */ int r; /* Index for the rows */ int c; /* Index for the columns */ char v; /* Name of the free variables: s, t, u... */ m = 0; for(r=R1; r<b[R_SIZE][C0]; r++) { v = 'y' - (b[R_SIZE][C0]-C1); printf("\n"); m++; printf(" x%d = ",m); for(c=C1; c<b[C_SIZE][C0]; c++) { if(c==C1) printf(" %+*.*f",e,d,b[r][c]); /* Print b */ else { if(fabs(b[r][c])>ERROR_E) printf(" %+*.*f*%c",e,d,b[r][c],v); else printf(" %+*.*f*%c",e,d, 0.,v); v++; } /* If the coefficient is not zero, display it */ } /* If the coefficient is zero, display 0 */ } printf("\n"); } /* ------------------------------------ */ /* ------------------------------------ */ int main(void) { double ab[R4*C7]={ +1.0, -3.0, +4.5, -0.5, +4.0, +1.0, +0.0, -0.0, -0.0, +1.0, +3.0, -2.0, -6.0, -0.0, +0.0, +0.0, +0.0, +0.0, +1.0, +5.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0, +0.0 }; double **Ab = ca_A_mR(ab, i_Abr_Ac_bc_mR(RAb, CA, Cb)); double **Ab_free = i_Abr_Ac_bc_mR(CA, CA, Cb + FREEV); double **b_free = i_mR(CA, Cb + FREEV); clrscrn(); printf(" Ab: b"); p_mR(Ab, S6,P1,C10); printf(" Ab: gj_PP_mR(Ab,NO); b"); gj_PP_mR(Ab,NO); p_mR(Ab, S6,P1,C10); stop(); clrscrn(); put_zeroR_mR(Ab,Ab_free); printf(" Ab_free: put_zeroR_mR();" " b FREEV"); p_mR(Ab_free, S7,P2,C10); put_freeV_mR(Ab_free); printf(" Ab_free: put_freeV_mR(Ab_free);" " b FREEV"); p_mR(Ab_free, S7,P2,C10); stop(); clrscrn(); printf(" See above for the function code: p_freeV();\n\n\n\n"); stop(); clrscrn(); gj_PP_mR(Ab_free,YES); printf(" Ab_free: gj_PP_mR(Ab_free,YES); b FREEV"); p_mR(Ab_free, S6,P1,C10); c_Ab_b_mR(Ab_free,b_free); printf(" b FREEV"); p_mR(b_free, S6,P1,C10); printf(" b_free: b FREEV p_freeV();"); X_p_freeV(b_free, S6,P1); stop(); f_mR(Ab); f_mR(Ab_free); f_mR(b_free); return 0; } /* ------------------------------------ */ /* ------------------------------------ */ Screen output example: Ab: b +1.0 -3.0 +4.5 -0.5 +4.0 +1.0 +0.0 -0.0 -0.0 +1.0 +3.0 -2.0 -6.0 -0.0 +0.0 +0.0 +0.0 +0.0 +1.0 +5.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 Ab: gj_PP_mR(Ab,NO); b +1.0 -3.0 +4.5 -0.5 +4.0 +1.0 +0.0 +0.0 -0.0 +1.0 +3.0 -2.0 -6.0 +0.0 +0.0 +0.0 +0.0 +0.0 +1.0 +5.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 Press return to continue. Ab_free: put_zeroR_mR(); b FREEV +1.00 -3.00 +4.50 -0.50 +4.00 +1.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 -0.00 +1.00 +3.00 -2.00 -6.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +1.00 +5.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 Ab_free: put_freeV_mR(Ab_free); b FREEV +1.00 -3.00 +4.50 -0.50 +4.00 +1.00 +0.00 +0.00 +0.00 +0.00 +0.00 +1.00 +0.00 +0.00 +0.00 +0.00 +0.00 +1.00 +0.00 +0.00 +0.00 -0.00 +1.00 +3.00 -2.00 -6.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +1.00 +0.00 +0.00 +0.00 +0.00 +1.00 +0.00 +0.00 +0.00 +0.00 +0.00 +1.00 +5.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +1.00 +0.00 +0.00 +0.00 +1.00 Press return to continue. See above for the function code: p_freeV(); Press return to continue. Ab_free: gj_PP_mR(Ab_free,YES); b FREEV +1.0 +0.0 +0.0 +0.0 +0.0 +0.0 +0.0 +3.0 +14.0 +37.0 +0.0 +1.0 +0.0 +0.0 +0.0 +0.0 +0.0 +1.0 +0.0 +0.0 +0.0 +0.0 +1.0 +0.0 +0.0 +0.0 +0.0 +0.0 -3.0 -4.0 +0.0 +0.0 +0.0 +1.0 +0.0 +0.0 +0.0 +0.0 +1.0 +0.0 +0.0 +0.0 +0.0 +0.0 +1.0 +0.0 +0.0 +0.0 +0.0 -5.0 +0.0 +0.0 +0.0 +0.0 +0.0 +1.0 +0.0 +0.0 +0.0 +1.0 b FREEV +0.0 +3.0 +14.0 +37.0 +0.0 +1.0 +0.0 +0.0 +0.0 +0.0 -3.0 -4.0 +0.0 +0.0 +1.0 +0.0 +0.0 +0.0 +0.0 -5.0 +0.0 +0.0 +0.0 +1.0 b_free: b FREEV p_freeV(); x1 = +0.0 +3.0*s +14.0*t +37.0*u x2 = +0.0 +1.0*s +0.0*t +0.0*u x3 = +0.0 +0.0*s -3.0*t -4.0*u x4 = +0.0 +0.0*s +1.0*t +0.0*u x5 = +0.0 +0.0*s +0.0*t -5.0*u x6 = +0.0 +0.0*s +0.0*t +1.0*u Press return to continue.