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() ); }
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; }
REAL SystLinSurResolu::Residu(Im1D_REAL8 anIm,INT iEq) const { AssertIndexEqValide(iEq); AssertIndexGoodNbVar(anIm.tx()); return Residu(anIm.data(),iEq); }
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]); }
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]; }
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]; }
void SystLinSurResolu::PushEquation ( Im1D_REAL8 aFormLin, REAL aValue, REAL aPds ) { AssertIndexGoodNbVar(aFormLin.tx()); PushEquation (aFormLin.data(),aValue,aPds); }
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; }