コード例 #1
0
ファイル: egvt.cpp プロジェクト: vtsozik/methods
void EigenVectors::InitArray(DArray &darr, int size) const {
    if(!darr.empty()) {
        darr.clear();
    }
    darr.reserve(size);
    for(int i = 0; i < size; ++i) {
        darr.push_back(0.);
    }
}
コード例 #2
0
ファイル: legendre.cpp プロジェクト: vtsozik/methods
void Legendre::ExtractPolynomial(DArray &dArray) {
 double val;
 int i, k;
 bool needAlloc = (dArray.size() != nn);
 if(needAlloc) {
  dArray.clear();
  dArray.reserve(nn);
 }
 for(i = 0; i < nn; ++i) {
  k = i / 2;
  val = (i % 2) ? nFunction[0][k].c : nFunction[0][k].x;
  if(needAlloc) {
   dArray.push_back(val);
  } else {
   dArray[i] = val;
  }
 } 
}
コード例 #3
0
ファイル: legendre.cpp プロジェクト: vtsozik/methods
void Legendre::FindPolynomial(DArray &dArray) {
 DMatrix dMatrix;
 dMatrix.reserve(nn);
 dArray.clear();
 dArray.reserve(nn);
//double dbg[6] = { -.7746, .5556, 0., .8889, .7746, .5556 };
 for(int i = 0; i < nn; ++i) {
  double rat = static_cast<double>(i + 1) / static_cast<double>(nn);
  dArray.push_back((i % 2) ? 1. - fabs(dArray[i - 1]) / (ul - ll) * 2. : (ll + (ul - ll) * rat));
  //dArray.push_back(rat);
//dArray.push_back(dbg[i]);
cerr << "Initially " << i << ": " << dArray[i] << endl;
  dMatrix.push_back(dIntegrals);
 }
 do {
  Increment(dMatrix, dArray);
  SolveSytem(dMatrix, dArray);
 } while(ComputeError(dArray) > precision);  
 ExtractPolynomial(dArray);
}