Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/orxonox/trunk/src/util/newmat/tmtj.cpp @ 4565

Last change on this file since 4565 was 4565, checked in by patrick, 19 years ago

orxonox/trunk: added the newmat library to the project. needs some translation in directory, temp under util/newmat. is needed by the collision detection engine to perform lin alg operations such as eigenvector decomposition. perhaps we will make our own library to do that later.

File size: 4.6 KB
Line 
1
2//#define WANT_STREAM
3
4#include "include.h"
5
6#include "newmatap.h"
7//#include "newmatio.h"
8
9#include "tmt.h"
10
11#ifdef use_namespace
12using namespace NEWMAT;
13#endif
14
15
16void trymatj()
17{
18   Tracer et("Nineteenth test of Matrix package");
19   Tracer::PrintTrace();
20   // testing elementwise (SP) products
21
22   {
23      Tracer et1("Stage 1");
24      Matrix A(13,7), B(13,7), C(13,7);
25      int i,j;
26      for (i=1;i<=13;i++) for (j=1; j<=7; j++)
27      {
28          Real a = (i+j*j)/2, b = (i*j-i/4);
29          A(i,j)=a; B(i,j)=b; C(i,j)=a*b;
30      }
31      // Where complete matrix routine can be used
32      Matrix X = SP(A,B)-C; Print(X);
33      X = SP(A,B+1.0)-A-C; Print(X);
34      X = SP(A-1,B)+B-C; Print(X);
35      X = SP(A-1,B+1)+B-A-C+1; Print(X);
36      // Where row-wise routine will be used
37      A = A.Rows(7,13); B = B.Rows(7,13); C = C.Rows(7,13);
38      LowerTriangularMatrix LTA; LTA << A;
39      UpperTriangularMatrix UTB; UTB << B;
40      DiagonalMatrix DC; DC << C;
41      X = SP(LTA,UTB) - DC; Print(X);
42      X = SP(LTA*2,UTB) - DC*2; Print(X);
43      X = SP(LTA, UTB /2) - DC/2; Print(X);
44      X = SP(LTA/2, UTB*2) - DC; Print(X);
45      DiagonalMatrix DX;
46      DX << SP(A,B); DX << (DX-C); Print(DX);
47      DX << SP(A*4,B); DX << (DX-C*4); Print(DX);
48      DX << SP(A,B*2); DX << (DX-C*2); Print(DX);
49      DX << SP(A/4,B/4); DX << (DX-C/16); Print(DX);
50      LowerTriangularMatrix LX;
51      LX = SP(LTA,B); LX << (LX-C); Print(LX);
52      LX = SP(LTA*3,B); LX << (LX-C*3); Print(LX);
53      LX = SP(LTA,B*5); LX << (LX-C*5); Print(LX);
54      LX = SP(-LTA,-B); LX << (LX-C); Print(LX);
55   }
56   {
57      // Symmetric Matrices
58      Tracer et1("Stage 2");
59      SymmetricMatrix A(25), B(25), C(25);
60      int i,j;
61      for (i=1;i<=25;i++) for (j=i;j<=25;j++)
62      {
63         Real a = i*j +i - j + 3;
64         Real b = i * i + j;
65         A(i,j)=a; B(i,j)=b; C(i,j)=a*b;
66      }
67      UpperTriangularMatrix UT;
68      UT << SP(A,B); UT << (UT - C); Print(UT);
69      Matrix MA = A, X;
70      X = SP(MA,B)-C; Print(X);
71      X = SP(A,B)-C; Print(X);
72      SymmetricBandMatrix BA(25,5), BB(25,5), BC(25,5);
73      BA.Inject(A); BB.Inject(B); BC.Inject(C);
74      X = SP(BA,BB)-BC; Print(X);
75      X = SP(BA*7,BB)-BC*7; Print(X);
76      X = SP(BA,BB/8)-BC/8; Print(X);
77      X = SP(BA*16,BB/16)-BC; Print(X);
78      X = SP(BA,BB); X=X-BC; Print(X);
79      X = SP(BA*2, BB/2)-BC; Print(X);
80      X = SP(BA, BB/2)-BC/2; Print(X);
81      X = SP(BA*2, BB)-BC*2; Print(X);
82   }
83   {
84      // Band matrices
85      Tracer et1("Stage 3");
86      Matrix A(19,19), B(19,19), C(19,19);
87      int i,j;
88      for (i=1;i<=19;i++) for (j=1;j<=19;j++)
89      {
90         Real a = i*j +i - 1.5*j + 3;
91         Real b = i * i + j;
92         A(i,j)=a; B(i,j)=b; C(i,j)=a*b;
93      }
94      BandMatrix BA(19,10,7), BB(19,8,15), BC(19,8,7);
95      BA.Inject(A); BB.Inject(B); BC.Inject(C);
96      Matrix X; BandMatrix BX; ColumnVector BW(2);
97      X = SP(BA,BB); X=X-BC; Print(X);
98      X = SP(BA/8,BB); X=X-BC/8; Print(X);
99      X = SP(BA,BB*17); X=X-BC*17; Print(X);
100      X = SP(BA/4,BB*7); X=X-BC*7/4; Print(X);
101      X = SP(BA,BB)-BC; Print(X);
102      X = SP(BA/8,BB)-BC/8; Print(X);
103      X = SP(BA,BB*17)-BC*17; Print(X);
104      X = SP(BA/4,BB*7)-BC*7/4; Print(X);
105      BX = SP(BA,BB);
106      BW(1)=BX.upper-7; BW(2)=BX.lower-8; Print(BW);
107
108      BA.ReSize(19,7,10); BB.ReSize(19,15,8);
109      BC.ReSize(19,7,8);
110      BA.Inject(A); BB.Inject(B); BC.Inject(C);
111
112      X = SP(BA,BB); X=X-BC; Print(X);
113      X = SP(BA/8,BB); X=X-BC/8; Print(X);
114      X = SP(BA,BB*17); X=X-BC*17; Print(X);
115      X = SP(BA/4,BB*7); X=X-BC*7/4; Print(X);
116      X = SP(BA,BB)-BC; Print(X);
117      X = SP(BA/8,BB)-BC/8; Print(X);
118      X = SP(BA,BB*17)-BC*17; Print(X);
119      X = SP(BA/4,BB*7)-BC*7/4; Print(X);
120      BX = SP(BA,BB);
121      BW(1)=BX.upper-8; BW(2)=BX.lower-7; Print(BW);
122   }
123   {
124      // SymmetricBandMatrices
125      Tracer et1("Stage 4");
126      Matrix A(7,7), B(7,7);
127      int i,j;
128      for (i=1;i<=7;i++) for (j=1;j<=7;j++)
129      {
130         Real a = i*j +i - 1.5*j + 3;
131         Real b = i * i + j;
132         A(i,j)=a; B(i,j)=b;
133      }
134      BandMatrix BA(7,2,4), BB(7,3,1), BC(7,2,1);
135      BA.Inject(A);
136      SymmetricBandMatrix SB(7,3);
137      SymmetricMatrix S; S << (B+B.t());
138      SB.Inject(S); A = BA; S = SB;
139      Matrix X; 
140      X = SP(BA,SB); X=X-SP(A,S); Print(X);
141      X = SP(BA*2,SB); X=X-SP(A,S*2); Print(X);
142      X = SP(BA,SB/4); X=X-SP(A/4,S); Print(X);
143      X = SP(BA*4,SB/4); X=X-SP(A,S); Print(X);
144      X = SP(BA,SB)-SP(A,S); Print(X);
145      X = SP(BA*2,SB)-SP(A,S*2); Print(X);
146      X = SP(BA,SB/4)-SP(A/4,S); Print(X);
147      X = SP(BA*4,SB/4)-SP(A,S); Print(X);
148   }
149
150}
151
152
Note: See TracBrowser for help on using the repository browser.