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

Reference material by Wikibooks contributors. This retains its source identity and is not 411 news reporting.

__NOTOC__ Install this file in your working directory. /* ------------------------------------ */ /* Save as : vrm_sym.h */ /* ------------------------------------ */ double **rsymmetric_mR( double **A, int n) { int r; int c; double x; isquare_mR(A,"rsymmetric_mR();","(A)"); for ( r=R1; r<A[R_SIZE][C0]; r++) for ( c=C1; c<A[C_SIZE][C0]; c++) { x = r_I (n); A[r][c] = x; A[c][r] = x; } return(A); } /* ------------------------------------ */ /* ------------------------------------ */ double **mul_sDA_mR( double s, double **A, double **sA ) { int r; c_mR(A,sA); for(r=R1; r<A[R_SIZE][C0]; r++) // if( r <= csize_R(A) ) sA[r][r] = abs(s * A[r][r]); return(sA); } /* ------------------------------------ */ double **rPsymmetric_mR( double **A, int n) { int r; int c; double x; double **B = i_mR(rsize_R(A),csize_R(A)); isquare_mR(A,"rsymmetric_mR();","(A)"); for ( r=R1; r<A[R_SIZE][C0]; r++) for ( c=C1; c<A[C_SIZE][C0]; c++) { x = r_I (n); B[r][c] = x; B[c][r] = x; } mul_sDA_mR(111.,B,A); f_mR(B); return(A); } /* ------------------------------------ */ double **rEsymmetric_mR( double **A, int n, double E /* 1E-1 1E-0 1E+1 */ ) { int r = rsize_R(A); int c = csize_R(A); double **B = rE_mR( i_mR(r,c),n,E); double **B_T = transpose_mR(B,i_mR(c,r)); mul_mR(B,B_T, A); f_mR(B); f_mR(B_T); return(A); } /* ------------------------------------ */ /* ------------------------------------ */ double **rskewsymmetric_mR( double **A, int n) { int r; int c; double x; isquare_mR(A,"rskewsymmetric_mR();","(A)"); for ( r=R1; r<A[R_SIZE][C0]; r++) for ( c=C1; c<A[C_SIZE][C0]; c++) { if(r==c) A[r][c] = 0.; else{ x = r_I (n); A[r][c] = -x; A[c][r] = x; } } return(A); } /* ------------------------------------ */ /* ------------------------------------ */ double **rcentrosymmetric_mR( double **A, int k) { int r; int c; int n = rsize_R(A); double x; isquare_mR(A,"rcentrosymmetric_mR();","(A)"); for ( r=R1; r<A[R_SIZE][C0]; r++) for ( c=C1; c<A[C_SIZE][C0]; c++) { x = r_I(k); A[n-r+1][n-c+1] = x; A[r][c] = x; } return(A); } /* ------------------------------------ */ /* ------------------------------------ */ double **rdefinite_positive_mR( double **A, int n ) { int r = rsize_R(A); double **T = r_mR( i_mR(r,r),n); double **TT = transpose_mR(T, i_mR(r,r)); mul_mR(T,TT,A); f_mR(T); f_mR(TT); return(A); } /* ------------------------------------ */ /* ------------------------------------ */ double **rdefinite_negative_mR( double **A, int n ) { int r = rsize_R(A); double **Q = r_Q_mR( i_mR(r,r),n); double **QT = transpose_mR(Q, i_mR(r,r)); double **D = rpdiag_mR( i_mR(r,r),n); double **sD = smul_mR(-1,D, i_mR(r,r)); double **QsD = mul_mR(Q,sD, i_mR(r,r)); mul_mR(QsD,QT,A); f_mR(Q); f_mR(QT); f_mR(D); f_mR(sD); f_mR(QsD); return(A); } /* ------------------------------------ */ /* ------------------------------------ */ double **rdefpos_diag_mR( double **D, double **A, int n ) { int r = rsize_R(A); double **Q = r_Q_mR( i_mR(r,r),n); double **QT = invgj_mR(Q, i_mR(r,r)); double **QD = mul_mR(Q,D, i_mR(r,r)); mul_mR(QD,QT,A); f_mR(Q); f_mR(QT); f_mR(QD); return(A); } /* ------------------------------------ */ /* ------------------------------------ */