Hello, It seems like I have similar TMatrix inversion problems as in: http://root.cern.ch/root/roottalk/roottalk03/2876.html That was fixed for 3x3 matrix in the version I use (3.05/05) but I have problems in 4x4 case . Here's the result of the macro matrix.C that runs at the Root prompt. First part is the 3x3 matrix used by Chris Jillings but I'm puzzled by the 4x4 case. Do I need a newer version than 3.05/05 ? Regards, Cozmin $ root the current keyboard layout is 437 ******************************************* * * * W E L C O M E to R O O T * * * * Version 3.05/05 8 May 2003 * * * * You are welcome to visit our Web site * * http://root.cern.ch * * * ******************************************* Compiled for win32. CINT/ROOT C/C++ Interpreter version 5.15.86, Apr 29 2003 Type ? for help. Commands must be C++ statements. Enclose multiple statements between { }. root [0] .x matrix.C Matrix 3x3 is as follows | 0 | 1 | 2 | ------------------------------------------------------------------ 0 |-8.761e-005 7.804e-005 -1.808e-005 1 | -0.0003604 0.0001103 2.77e-005 2 | 0.009239 -0.01581 -0.001075 Matrix 3x3 is as follows | 0 | 1 | 2 | ------------------------------------------------------------------ 0 | -2601 -3009 -33.82 1 | 1069 -2126 -72.79 2 |-3.809e+004 5405 -150.3 Matrix 3x3 is as follows | 0 | 1 | 2 | ------------------------------------------------------------------ 0 | 1 -1.388e-017 -8.674e-019 1 | 0 1 1.735e-018 2 | 7.105e-015 4.441e-015 1 Matrix 3x3 is as follows | 0 | 1 | 2 | ------------------------------------------------------------------ 0 | 1 0 1.388e-017 1 | 0 1 0 2 | 0 0 1 Matrix 4x4 is as follows | 0 | 1 | 2 | 3 | ------------------------------------------------------------------ 0 |-4.288e+008 4.288e+008 4.288e+008 -4.288e+008 1 | 2.115e+012 -2.115e+012 -2.115e+012 2.115e+012 2 |-5.269e+008 5.269e+008 5.269e+008 -5.269e+008 3 | 2.513e+012 -2.513e+012 -2.513e+012 2.513e+012 Matrix 4x4 is as follows | 0 | 1 | 2 | 3 | ------------------------------------------------------------------ 0 | 2.863e+007 5351 1.756e+005 419 1 | 2.56e+005 506 2.627e+007 5125 2 | 2.863e+007 5351 -2.627e+007 -5125 3 | 2.56e+005 506 -1.756e+005 -419 Matrix 4x4 is as follows | 0 | 1 | 2 | 3 | ------------------------------------------------------------------ 0 | -0.2031 -0.0001831 -0.0625 0.0001831 1 | -2944 1.25 -2624 0 2 | -0.7969 -0.0001221 1.344 0.0004883 3 | 1152 1 -2304 0.625 Matrix 4x4 is as follows | 0 | 1 | 2 | 3 | ------------------------------------------------------------------ 0 | 0 0 0 0 1 | 2 0 -2 0 2 | -2 0 2 0 3 | 0 0 0 1 here's the macro "matrix.C". { TMatrixD m(3,3); TMatrixD n(3,3); m[0][0] = -2600.61; m[0][1] = -3009.4; m[0][2] = -33.82; m[1][0] = 1068.99; m[1][1] = -2125.77; m[1][2] = -72.79; m[2][0] = -38087.3; m[2][1] = 5404.86; m[2][2] = -150.3; n = m; Double_t det; m.Invert(&det); m.Print(); n.Print(); (m*n).Print(); (n*m).Print(); // 4x4 matrix Double_t x1=5351; Double_t x2=506; Double_t y1=419; Double_t y2=5125; TMatrixD A (4,4); TMatrixD B (4,4); TMatrixD C (4,4); A[0][0]=x1*x1; A[0][1]=x1; A[0][2]=y1*y1; A[0][3]=y1; A[1][0]=x2*x2; A[1][1]=x2; A[1][2]=y2*y2; A[1][3]=y2; A[2][0]=x1*x1; A[2][1]=x1; A[2][2]=-y2*y2; A[2][3]=-y2; A[3][0]=x2*x2; A[3][1]=x2; A[3][2]=-y1*y1; A[3][3]=-y1; B = A; A.Invert(&det); A.Print(); B.Print(); (A*B).Print(); (B*A).Print(); }
This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:05 MET