GVector.cc

Go to the documentation of this file.
00001 
00002 #include <vecmath/GVector.h>
00003 #include <vecmath/GMatrix.h>
00004 
00005 void GVector::LUDBackSolve(GMatrix& gmatrix, GVector& gvector, GVector& gvector1) {
00006     int i = gmatrix.nRow * gmatrix.nCol;
00007     double *ad = new double[i];
00008     double *ad1 = new double[i];
00009     int *ai = new int[gvector.getSize()];
00010 
00011     for (int j = 0; j < gmatrix.nRow; j++) {
00012         for (int k1 = 0; k1 < gmatrix.nCol; k1++)
00013             ad[j * gmatrix.nCol + k1] = gmatrix.values[j][k1];
00014     }
00015 
00016     for (int k = 0; k < i; k++)
00017         ad1[k] = 0.0;
00018 
00019     for (int l = 0; l < gmatrix.nRow; l++)
00020         ad1[l * gmatrix.nCol] = gvector.values[l];
00021 
00022     for (int i1 = 0; i1 < gmatrix.nCol; i1++)
00023         ai[i1] = (int)gvector1.values[i1];
00024 
00025     GMatrix::luBacksubstitution(gmatrix.nRow, ad, ai, ad1);
00026     for (int j1 = 0; j1 < gmatrix.nRow; j1++)
00027         values[j1] = ad1[j1 * gmatrix.nCol];
00028 
00029         delete []ad;
00030         delete []ad1;
00031         delete []ai;
00032 }
00033 
00034 void GVector::SVDBackSolve(GMatrix& gmatrix, GMatrix& gmatrix1, GMatrix& gmatrix2, GVector& gvector) {
00035     GMatrix gmatrix3(gmatrix.nRow, gmatrix1.nCol);
00036     gmatrix3.mul(gmatrix, gmatrix2);
00037     gmatrix3.mulTransposeRight(gmatrix, gmatrix1);
00038     gmatrix3.invert();
00039     mul(gmatrix3, gvector);
00040 }
00041 
00042 void GVector::mul(const GMatrix& gmatrix, const GVector& gvector) {
00043     for (int j = 0; j < length; j++) {
00044         values[j] = 0.0;
00045         for (int i = 0; i < gvector.length; i++)
00046             values[j] += gmatrix.values[j][i] * gvector.values[i];
00047     }
00048 }
00049 
00050 void GVector::mul(const GVector& gvector, const GMatrix& gmatrix) {
00051     for (int j = 0; j < length; j++) {
00052         values[j] = 0.0;
00053         for (int i = 0; i < gvector.length; i++)
00054             values[j] += gmatrix.values[i][j] * gvector.values[i];
00055     }
00056 }
00057 

Generated on Thu Sep 29 13:39:45 2005 for vecmath by  doxygen 1.4.4