tmtj.cpp
Go to the documentation of this file.
00001 
00002 
00003 
00006 
00007 
00008 //#define WANT_STREAM
00009 
00010 #include "include.h"
00011 
00012 #include "newmatap.h"
00013 //#include "newmatio.h"
00014 
00015 #include "tmt.h"
00016 
00017 #ifdef use_namespace
00018 using namespace NEWMAT;
00019 #endif
00020 
00021 
00022 void trymatj()
00023 {
00024    Tracer et("Nineteenth test of Matrix package");
00025    Tracer::PrintTrace();
00026    // testing elementwise (SP) products
00027 
00028    {
00029       Tracer et1("Stage 1");
00030       Matrix A(13,7), B(13,7), C(13,7);
00031       int i,j;
00032       for (i=1;i<=13;i++) for (j=1; j<=7; j++)
00033       {
00034           Real a = (i+j*j)/2, b = (i*j-i/4);
00035           A(i,j)=a; B(i,j)=b; C(i,j)=a*b;
00036       }
00037       // Where complete matrix routine can be used
00038       Matrix X = SP(A,B)-C; Print(X);
00039       X = SP(A,B+1.0)-A-C; Print(X);
00040       X = SP(A-1,B)+B-C; Print(X);
00041       X = SP(A-1,B+1)+B-A-C+1; Print(X);
00042       // Where row-wise routine will be used
00043       A = A.Rows(7,13); B = B.Rows(7,13); C = C.Rows(7,13);
00044       LowerTriangularMatrix LTA; LTA << A;
00045       UpperTriangularMatrix UTB; UTB << B;
00046       DiagonalMatrix DC; DC << C;
00047       X = SP(LTA,UTB) - DC; Print(X);
00048       X = SP(LTA*2,UTB) - DC*2; Print(X);
00049       X = SP(LTA, UTB /2) - DC/2; Print(X);
00050       X = SP(LTA/2, UTB*2) - DC; Print(X);
00051       DiagonalMatrix DX;
00052       DX << SP(A,B); DX << (DX-C); Print(DX);
00053       DX << SP(A*4,B); DX << (DX-C*4); Print(DX);
00054       DX << SP(A,B*2); DX << (DX-C*2); Print(DX);
00055       DX << SP(A/4,B/4); DX << (DX-C/16); Print(DX);
00056       LowerTriangularMatrix LX;
00057       LX = SP(LTA,B); LX << (LX-C); Print(LX);
00058       LX = SP(LTA*3,B); LX << (LX-C*3); Print(LX);
00059       LX = SP(LTA,B*5); LX << (LX-C*5); Print(LX);
00060       LX = SP(-LTA,-B); LX << (LX-C); Print(LX);
00061    }
00062    {
00063       // Symmetric Matrices
00064       Tracer et1("Stage 2");
00065       SymmetricMatrix A(25), B(25), C(25);
00066       int i,j;
00067       for (i=1;i<=25;i++) for (j=i;j<=25;j++)
00068       {
00069          Real a = i*j +i - j + 3;
00070          Real b = i * i + j;
00071          A(i,j)=a; B(i,j)=b; C(i,j)=a*b;
00072       }
00073       UpperTriangularMatrix UT;
00074       UT << SP(A,B); UT << (UT - C); Print(UT);
00075       Matrix MA = A, X;
00076       X = SP(MA,B)-C; Print(X);
00077       X = SP(A,B)-C; Print(X);
00078       SymmetricBandMatrix BA(25,5), BB(25,5), BC(25,5);
00079       BA.Inject(A); BB.Inject(B); BC.Inject(C);
00080       X = SP(BA,BB)-BC; Print(X);
00081       X = SP(BA*7,BB)-BC*7; Print(X);
00082       X = SP(BA,BB/8)-BC/8; Print(X);
00083       X = SP(BA*16,BB/16)-BC; Print(X);
00084       X = SP(BA,BB); X=X-BC; Print(X);
00085       X = SP(BA*2, BB/2)-BC; Print(X);
00086       X = SP(BA, BB/2)-BC/2; Print(X);
00087       X = SP(BA*2, BB)-BC*2; Print(X);
00088    }
00089    {
00090       // Band matrices
00091       Tracer et1("Stage 3");
00092       Matrix A(19,19), B(19,19), C(19,19);
00093       int i,j;
00094       for (i=1;i<=19;i++) for (j=1;j<=19;j++)
00095       {
00096          Real a = i*j +i - 1.5*j + 3;
00097          Real b = i * i + j;
00098          A(i,j)=a; B(i,j)=b; C(i,j)=a*b;
00099       }
00100       BandMatrix BA(19,10,7), BB(19,8,15), BC(19,8,7);
00101       BA.Inject(A); BB.Inject(B); BC.Inject(C);
00102       Matrix X; BandMatrix BX; ColumnVector BW(2);
00103       X = SP(BA,BB); X=X-BC; Print(X);
00104       X = SP(BA/8,BB); X=X-BC/8; Print(X);
00105       X = SP(BA,BB*17); X=X-BC*17; Print(X);
00106       X = SP(BA/4,BB*7); X=X-BC*7/4; Print(X);
00107       X = SP(BA,BB)-BC; Print(X);
00108       X = SP(BA/8,BB)-BC/8; Print(X);
00109       X = SP(BA,BB*17)-BC*17; Print(X);
00110       X = SP(BA/4,BB*7)-BC*7/4; Print(X);
00111       BX = SP(BA,BB);
00112       BW(1)=BX.upper_val-7; BW(2)=BX.lower_val-8; Print(BW);
00113 
00114       BA.ReSize(19,7,10); BB.ReSize(19,15,8);
00115       BC.ReSize(19,7,8);
00116       BA.Inject(A); BB.Inject(B); BC.Inject(C);
00117 
00118       X = SP(BA,BB); X=X-BC; Print(X);
00119       X = SP(BA/8,BB); X=X-BC/8; Print(X);
00120       X = SP(BA,BB*17); X=X-BC*17; Print(X);
00121       X = SP(BA/4,BB*7); X=X-BC*7/4; Print(X);
00122       X = SP(BA,BB)-BC; Print(X);
00123       X = SP(BA/8,BB)-BC/8; Print(X);
00124       X = SP(BA,BB*17)-BC*17; Print(X);
00125       X = SP(BA/4,BB*7)-BC*7/4; Print(X);
00126       BX = SP(BA,BB);
00127       BW(1)=BX.upper_val-8; BW(2)=BX.lower_val-7; Print(BW);
00128    }
00129    {
00130       // SymmetricBandMatrices
00131       Tracer et1("Stage 4");
00132       Matrix A(7,7), B(7,7);
00133       int i,j;
00134       for (i=1;i<=7;i++) for (j=1;j<=7;j++)
00135       {
00136          Real a = i*j +i - 1.5*j + 3;
00137          Real b = i * i + j;
00138          A(i,j)=a; B(i,j)=b;
00139       }
00140       BandMatrix BA(7,2,4), BB(7,3,1), BC(7,2,1);
00141       BA.Inject(A);
00142       SymmetricBandMatrix SB(7,3);
00143       SymmetricMatrix S; S << (B+B.t());
00144       SB.Inject(S); A = BA; S = SB;
00145       Matrix X;  
00146       X = SP(BA,SB); X=X-SP(A,S); Print(X);
00147       X = SP(BA*2,SB); X=X-SP(A,S*2); Print(X);
00148       X = SP(BA,SB/4); X=X-SP(A/4,S); Print(X);
00149       X = SP(BA*4,SB/4); X=X-SP(A,S); Print(X);
00150       X = SP(BA,SB)-SP(A,S); Print(X);
00151       X = SP(BA*2,SB)-SP(A,S*2); Print(X);
00152       X = SP(BA,SB/4)-SP(A/4,S); Print(X);
00153       X = SP(BA*4,SB/4)-SP(A,S); Print(X);
00154    }
00155 
00156 }
00157 
00158 


kni
Author(s): Martin Günther
autogenerated on Thu Aug 27 2015 13:40:07