Biblioteca de la plantilla iterativa

Iterative Template Library (ITL) es una biblioteca componente genérica que proporciona métodos iterativos a solucionar sistemas lineales. ITL también proporciona numerosos preacondicionadores que es para MTL. El ITL fue escrito en el Laboratorio de Sistemas Abierto de la universidad de Indiana por Andrew Lumsdaine, Salga-mintiendo-Quan Sotavento, Jeremy Seik y otros.

ITL usa el interfaz abstracto de vector de la matriz, vector del vector y operaciones escalares por el vector MTL es la falta para servir aquellas operaciones. ITL es capaz de usar otros paquetes como la Campaña ++ y BLAS con el mismo interfaz abstracto proporcionado.

Como la programación genérica anima a simplificar interfaces a sólo lo que es requerido por la lógica que apoyan, los algoritmos ITL se parecen al pseudocódigo, al menos comparando con otras realizaciones de los mismos algoritmos. Por ejemplo, el declive conjugado del ITL sigue:

plantilla

intervalo cg (const Matrix& A, VectorX& x, const VectorB& b,

const Preconditioner& M, Iteration& iter)

{\

typedef VectorX TmpVec;

typename itl_traits

TmpVec p (talla (x)), q (talla (x)), r (talla (x)), z (talla (x));

itl:: mult (A, itl:: escalado (x,-1.0), b, r);

mientras (¡! iter.finished (r))

{\

itl:: solucione (M, r, z);

rho = itl:: dot_conj (r, z);

si (iter.first )

itl:: copia (z, p);

más

{\

beta = rho / rho_1;

itl:: añada (z, itl:: escalado (p, beta), p);

}

itl:: mult (A, p, q);

alfa = rho / itl:: dot_conj (p, q);

itl:: añada (x, itl:: escalado (p, alfa), x);

itl:: añada (r, itl:: escalado (q, - alfa), r);

rho_1 = rho;

++ iter;

}\

devuelva iter.error_code ;

} </fuente>

Véase también

Enlaces externos



Buscar