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

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 X_r_commute4_mR( double **A, double **B, double **C, double **E, int n ) { double **P; double **Pinv; double **D; double **T; double **Dt; int r=rsize_R(A); P = i_mR(r,r); Pinv = i_mR(r,r); D = i_mR(r,r); T = i_mR(r,r); Dt = i_mR(r,r); while(!det_R(r_mR(P,n))); rdiag_mR(D,n); inv_mR(P,Pinv); mul_mR(P,Diag_sin_mR(D,Dt),T); mul_mR(T,Pinv,A); mul_mR(P,Diag_cos_mR(D,Dt),T); mul_mR(T,Pinv,B); mul_mR(P,Diag_sinh_mR(D,Dt),T); mul_mR(T,Pinv,C); mul_mR(P,Diag_cosh_mR(D,Dt),T); mul_mR(T,Pinv,E); f_mR(P); f_mR(Pinv); f_mR(D); f_mR(T); f_mR(Dt); } /* ------------------------------------ */ /* ------------------------------------ */ void AplsB(int r) { double **A = i_mR(r,r); double **B = i_mR(r,r); double **C = i_mR(r,r); double **D = i_mR(r,r); double **T = i_mR(r,r); r_commute4_mR(A,B,C,D,9); clrscrn(); printf(" A:"); p_mR(A, S5,P3,C6); printf(" B:"); p_mR(B, S5,P3,C6); printf(" C:"); p_mR(C, S5,P3,C6); printf(" D:"); p_mR(D, S5,P3,C6); stop(); clrscrn(); printf(" AB:"); p_mR(mul_mR(A,B,T), S5,P9,C6); printf(" BA:"); p_mR(mul_mR(B,A,T), S5,P9,C6); stop(); clrscrn(); printf(" AC:"); p_mR(mul_mR(A,C,T), S5,P9,C6); printf(" CA:"); p_mR(mul_mR(C,A,T), S5,P9,C6); stop(); clrscrn(); printf(" BC:"); p_mR(mul_mR(B,C,T), S5,P9,C6); printf(" CB:"); p_mR(mul_mR(C,B,T), S5,P9,C6); stop(); clrscrn(); printf(" AD:"); p_mR(mul_mR(A,D,T), S5,P9,C6); printf(" DA:"); p_mR(mul_mR(D,A,T), S5,P9,C6); stop(); clrscrn(); printf(" BD:"); p_mR(mul_mR(B,D,T), S5,P9,C6); printf(" DB:"); p_mR(mul_mR(D,B,T), S5,P9,C6); stop(); clrscrn(); printf(" CD:"); p_mR(mul_mR(C,D,T), S5,P9,C6); printf(" DC:"); p_mR(mul_mR(D,C,T), S5,P9,C6); f_mR(A); f_mR(B); f_mR(C); f_mR(D); f_mR(T); } /* ------------------------------------ */ int main(void) { time_t t; srand(time(&t)); do { AplsB(RC3); } while(stop_w()); return 0; } /* ------------------------------------ */ /* ------------------------------------ */ Screen output example: A: +0.430 +0.559 +0.479 +0.672 -0.217 +1.387 +0.213 -0.248 +0.696 B: -0.114 +0.000 -2.417 -0.806 +0.960 -1.813 -0.134 +0.000 +0.658 C: +2.202 -0.099 +5.040 +1.589 +0.039 +3.598 +0.247 +0.044 +0.517 D: +2.085 +0.000 +4.581 +1.527 +0.050 +3.436 +0.254 +0.000 +0.622 Press return to continue. AB: -0.563624018 +0.536572918 -1.737655344 -0.087723472 -0.208667246 -0.316616237 +0.082321231 -0.238476852 +0.393890016 BA: -0.563624018 +0.536572918 -1.737655344 -0.087723472 -0.208667246 -0.316616237 +0.082321231 -0.238476852 +0.393890016 Press return to continue. AC: +1.953735877 -0.000000000 +4.427072993 +1.475690998 -0.013852121 +3.320304745 +0.245948500 +0.000000000 +0.539532004 CA: +1.953735877 +0.000000000 +4.427072993 +1.475690998 -0.013852121 +3.320304745 +0.245948500 +0.000000000 +0.539532004 Press return to continue. ...