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

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 : c00d.c */ /* ------------------------------------ */ #include "v_a.h" /* ------------------------------------ */ #define RA R3 #define CA C3 #define CB C1 /* ------------------------------------ */ void fun(void) { double **A = r_Q_mR( i_mR(RA,CA),99); double **B = r_mR( i_mR(RA,CB),99); double **Ab = i_Abr_Ac_bc_mR(RA,CA,CB); double **A_T = transpose_mR(A, i_mR(RA,CA)); double **A_TB = mul_mR(A_T,B, i_mR(RA,CB)); clrscrn(); printf(" A: Orthonormal"); p_mR(A, S9,P4, C3); printf(" b:"); p_mR(B, S9,P4, C3); printf(" Ab:"); c_A_b_Ab_mR(A,B,Ab); p_mR(Ab, S9,P4, C4); stop(); clrscrn(); printf(" gj_mR(Ab);"); p_mR(gj_TP_mR(Ab), S9,P4, C4); printf(" A_T B: "); p_mR(A_TB, S9,P4, C3); f_mR(A); f_mR(B); f_mR(Ab); f_mR(A_T); f_mR(A_TB); } /* ------------------------------------ */ int main(void) { time_t t; srand(time(&t)); do { fun(); } while(stop_w()); return 0; } /* ------------------------------------ */ /* ------------------------------------ */ To solve an orthonormal system you can multiply the transpose of A by b. In fact, you are simply calculating the dot product of the rows of the transpose of A by the column b, instead of solving a linear system. Screen output example: A : Orthonormal -0.5635 -0.3324 -0.7563 +0.7017 -0.6757 -0.2259 -0.4359 -0.6580 +0.6140 b : +92.0000 -3.0000 -11.0000 Ab : -0.5635 -0.3324 -0.7563 +92.0000 +0.7017 -0.6757 -0.2259 -3.0000 -0.4359 -0.6580 +0.6140 -11.0000 Press return to continue. gj_mR(Ab) : +1.0000 +0.0000 +0.0000 -49.1530 +0.0000 +1.0000 -0.0000 -21.3172 +0.0000 +0.0000 +1.0000 -75.6542 A_T B -49.1530 -21.3172 -75.6542 Press return to continue Press X return to stop