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

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

__NOTOC__ Code study: orth_mR(); The Gram-Schmidt Algorithm U = {u1,u2,u3,u4} A basis of U given in the exercise. V = {v1,v2,v3,v3} The orthonormal basis, calculated by the Gram-Schmidt algorithm. <u.v> The projection of u onto v = -------- v |v||**2 a) v1 = u1 <u2.v1> b) v2 = u2 - --------- v1 ||v1||**2 <u3.v1> <u3.v2> c) v3 = u3 - --------- v1 - --------- v2 ||v1||**2 ||v2||**2 <u4.v1> <u4.v2> <u4.v3> c) v4 = u4 - --------- v1 - --------- v2 - --------- v3 ||v1||**2 ||v2||**2 ||v3||**2 It is then necessary to normalize the vectors v to obtain an orthonormal basis. /* ------------------------------------ */ /* ------------------------------------ */ double **orth_mR( double **U, double **Q, int Normal /* Normalize : YES = 1, NO = 0 */ ) { double **u = i_mR(rsize_R(U),C1); double **v = i_mR(rsize_R(U),C1); double **q = i_mR(rsize_R(U),C1); double **projuv = i_mR(rsize_R(U),C1); double **tq = i_mR(rsize_R(U),C1); int c_U; int c_Q; c_c_mR(U,C1, Q,C1); for( c_U = C2; c_U < U[C_SIZE][C0]; c_U++) { c_c_mR(U,c_U, u,C1); c_c_mR(U,c_U, q,C1); for( c_Q = C1; c_Q < c_U; c_Q++) { c_c_mR(Q,c_Q, v,C1); proj_mR(u,v, projuv); /* [<u,v> / ||v||^2] * v */ sub_mR(q, projuv, tq); c_mR( tq, q); } c_c_mR(q,C1, Q,c_Q); } if(Normal) Normalize_mR(Q); f_mR(u); f_mR(v); f_mR(q); f_mR(projuv); f_mR(tq); return(Q); } /* ------------------------------------ */ /* ------------------------------------ */