예제 #1
0
파일: b_0_48.cpp 프로젝트: jakexie/micmac
void Craig_etal_L1
     (
             Im2D_REAL8  A,
             Im1D_REAL8  B,
             REAL        TOLER,
             Im1D_REAL8  SOL,
             Im1D_REAL8  RESIDU
     )
{
    INT n = SOL.tx();
    INT m = B.tx();

    BENCH_ASSERT
    (
           (A.tx() == n+2)
        && (A.ty() == m+2)
        && (B.tx() == m)
        && (SOL.tx() == n)
        && (RESIDU.tx() == m)
    );
    Craig_Barrodale_Roberts_l1
    (
        m,n,
        A.data_lin(),
        B.data(),
        TOLER,
        SOL.data(),
        RESIDU.data()
    );
}
예제 #2
0
Im1D_REAL8 cManipOrdInc::ReordonneSol(Im1D_REAL8 aIm)
{
   Im1D_REAL8 aRes (aIm.tx());
   for (int aK=0 ; aK<aIm.tx() ; aK++)
      aRes.data()[aK] = aIm.data()[mAlloc2Solve[aK]];

   return aRes;
}
예제 #3
0
REAL SystLinSurResolu::Residu(Im1D_REAL8 anIm,INT iEq) const
{
   AssertIndexEqValide(iEq);
   AssertIndexGoodNbVar(anIm.tx());

   return Residu(anIm.data(),iEq);
}
예제 #4
0
Pt3dr cGenSysSurResol::Pt3dSolInter(bool * aOk)
{
     Im1D_REAL8  aSol = GSSR_Solve(aOk);
     if (aOk && (! *aOk))
        return Pt3dr(1e33,-1e44,0);
     ELISE_ASSERT(aSol.tx()==3,"cGenSysSurResol::SolInter");

     return Pt3dr(aSol.data()[0],aSol.data()[1],aSol.data()[2]);
}
예제 #5
0
void cGenSysSurResol::GSSR_SolveEqFitDroite(REAL & aAx,REAL &aB,bool * aOk)
{
     Im1D_REAL8  aSol = GSSR_Solve(aOk);
     if (aOk && (! *aOk))
        return;
     ELISE_ASSERT(aSol.tx()==2,"cGenSysSurResol::GSSR_SolveEqFitDroite");
     aAx = aSol.data()[0];
     aB = aSol.data()[1];
}
예제 #6
0
void cGenSysSurResol::GSSR_SolveEqFitPlan(REAL & aAx,REAL &aBy,REAL & aC,bool * aOk)
{
     Im1D_REAL8  aSol = GSSR_Solve(aOk);
     if (aOk && (! *aOk))
        return;
     ELISE_ASSERT(aSol.tx()==3,"cGenSysSurResol::GSSR_SolveEqFiPlan");
     aAx = aSol.data()[0];
     aBy = aSol.data()[1];
     aC  = aSol.data()[2];
}
예제 #7
0
void SystLinSurResolu::PushEquation 
     ( 
            Im1D_REAL8    aFormLin,
            REAL          aValue,
            REAL          aPds
     )
{
   AssertIndexGoodNbVar(aFormLin.tx());
   PushEquation (aFormLin.data(),aValue,aPds);
}
예제 #8
0
REAL  SystLinSurResolu::L2SomResiduPond(Im1D_REAL8 aPt) const
{
   AssertIndexGoodNbVar(aPt.tx());
   REAL aRes = 0.0;
   REAL *aDataP = aPt.data();

   for (INT iEq=0 ; iEq<mNbEqCur ; iEq++)
       aRes += mDataPds[iEq] * ElSquare(Residu(aDataP,iEq));

   return aRes;

}