levmar

Software captura de pantalla:
levmar
Detalles de software:
Versión: 2.6
Fecha de carga: 15 Apr 15
Promotor: Manolis Lourakis
Licencia: Libre
Popularidad: 18

Rating: 5.0/5 (Total Votes: 1)

levmar es una implementación de la no lineal de Levenberg-Marquardt algoritmos de mínimos cuadrados en C / C ++.
La rutina lmder de minpack, implementado en los años 80 en el Laboratorio Nacional Argonne, es quizás el más utilizado gratuita implementación del algoritmo LM. lmder está escrito en FORTRAN77 y con los años ha demostrado ser una pieza fiable de software. Teniendo en cuenta que las rutinas FORTRAN se pueden llamar desde C / C ++, uno podría preguntarse acerca de la motivación para escribir una versión de LM en C. Bueno, el problema es que cuando FORTRAN se llama desde C, el programador debe conocer (y se ajustan a ) varias normas relativas a nombre mangling, paso de argumentos, diseño de memoria matriz multidimensional, convenios de enlace, etc, que son naturales en comparación con las reglas C ordinarios. Una segunda razón es que este enfoque da por sentado que un compilador FORTRAN para el entorno de programación de destino está disponible, que puede no ser necesariamente el caso. Otra razón tiene que ver con la incapacidad de comprender el funcionamiento interno de una aplicación de FORTRAN: De vez en cuando, cuando es necesario entender precisamente lo que hace el código FORTRAN, ciertas piezas de lo que podría parecer incomprensible para programadores sin ningún conocimiento de FORTRAN. FORTRAN automática a C traductores (por ejemplo f2c) no resuelven el problema, ya que el código C producido es bastante ilegible para los seres humanos "no iniciados". Por otra parte, la documentación que describe las matemáticas en la que la aplicación se basa podrían ser oscuras o inaccesibles. Por último, pero no menos importante, una aplicación LM candidato en C debe ser libre y técnicamente sólida. Por ejemplo, la variante C del algoritmo LM presentado en el libro "Numerical Recipes" (es decir mrqmin), no siempre es una opción viable: Además de su ser con derechos de autor, que tiene fama de carecer de solidez
. Por las razones expuestas, he desarrollado el paquete levmar que incluye implementaciones C de sabores LM que también se pueden utilizar con C ++. levmar incluye implementaciones dobles e individuales LM precisión, ambos con diferencia analítica y finito aproximar jacobianos. Se ofrece de forma gratuita, en los términos de la Licencia Pública General GNU. La teoría matemática detrás levmar sin restricciones se describe en detalle en las notas de la conferencia titulada Métodos para no lineales de mínimos cuadrados Problemas, por K. Madsen, HB Nielsen y O. Tingleff, la Universidad Técnica de Dinamarca; Implementaciones Matlab de los algoritmos que se presentan en las notas de clase están también disponibles. Sin embargo, advierte que la formulación del problema de minimización adoptada aquí es ligeramente diferente de la descrita en las notas de la conferencia Uso de
Función:.
Levmar ofrece varias funciones de fácil exigible obedeciendo la siguiente convención de nomenclatura: La primera letra (d o s) especifica precisión doble o individual y el sufijo (_der o _dif) denota jacobiano analítico o aproximada. Si está presente, la LEC, bc y componentes BLEC implican ecuación lineal, caja y caja simultánea y restricciones de ecuaciones lineales, respectivamente. Más específicamente, levmar incluye las siguientes funciones:
Optimización sin restricciones
dlevmar_der (): doble precisión, Jacobiano analítico
dlevmar_dif (): doble precisión, diferencias finitas aproximar slevmar_der Jacobian
(): precisión simple, analítico slevmar_dif
Jacobiana (): precisión simple, diferencias finitas aproximar Jacobian
optimización restringida
dlevmar_lec_der () : doble precisión, las restricciones de ecuaciones lineales, Jacobiano analítico
dlevmar_lec_dif (): doble precisión, las restricciones de ecuaciones lineales, diferencias finitas aproximan slevmar_lec_der Jacobian
(): precisión simple, las restricciones de ecuaciones lineales,
jacobiano analítico slevmar_lec_dif (): precisión simple, las restricciones de ecuaciones lineales, diferencias finitas aproximar Jacobian
dlevmar_bc_der (): doble precisión, las restricciones de caja, jacobiano analítico
dlevmar_bc_dif (): doble precisión, las restricciones de caja, finito diferencia aproximada slevmar_bc_der Jacobian
(): precisión simple, las restricciones de caja, analítico slevmar_bc_dif
Jacobiana (): precisión simple, las restricciones de caja, diferencias finitas aproximar Jacobian
dlevmar_blec_der (): doble precisión, caja y restricciones de ecuaciones lineales, analítico dlevmar_blec_dif
Jacobiana (): doble precisión, caja y restricciones de ecuaciones lineales, diferencias finitas aproximan slevmar_blec_der Jacobian
(): precisión simple, caja y ecuación lineal limitaciones, jacobiano analítico
slevmar_blec_dif (): precisión simple, caja y ecuación lineal limitaciones, diferencias finitas aproximan Jacobian
Tenga en cuenta que el uso de las diferencias finitas para aproximar los resultados jacobianas en evaluaciones repetidas de la función que se monta. Con el objetivo de reducir el número total de estas evaluaciones, las funciones xxxxxxx_dif implementar aproximaciones secantes a la Jacobiana usando rango uno actualizaciones de Broyden. Todas las funciones de resolver el mismo problema, es decir que buscan el vector de parámetro p que mejor describe (en términos de la norma L2) el vector x mediciones. Más precisamente, dada una función vectorial f: R ^ m -> R ^ n con n> = m, se calculan ap tal que f (p) = ~ x, es decir, la norma al cuadrado || e || ^ 2 = | | xf (p) || ^ 2 se reduce al mínimo. Además, las limitaciones de la caja de la forma libras [i]

¿Cuál es nuevo en esta versión:

  • Esta versión añade soporte para escalamiento diagonal a xlevmar_bc_der (), que puede mejorar la convergencia cuando el punto de partida está lejos de la verdad minimizador.
  • Un solucionador de sistemas lineales de apoyo paralelo descomposición de Cholesky con PLASMA, la biblioteca de álgebra lineal para los procesadores multi-core.
  • solucionadores lineales se han fijado para que operen en triángulos inferiores de matrices simétricas, lo que resulta en un mejor rendimiento de la caché.
  • Los archivos de configuración CMake para la construcción del proyecto se han revisado.
  • Se han hecho varios otros cambios menores.

¿Qué hay de nuevo en la versión 2.5:

  • PRECAUCIÓN PARA VERSIONES ANTERIORES USUARIOS: Para una mejor consistencia y evitar la conflictos, el nombre del archivo de cabecera de levmar se cambió de lm.h a levmar.h; por favor, actualice sus archivos de código fuente en consecuencia.
  • Se ha añadido soporte para la minimización en la casilla simultánea, las restricciones de ecuaciones y desigualdades lineales (ver funciones xlevmar_bleic_der () y xlevmar_bleic_dif ()).
  • envoltorios de conveniencia implementadas a xlevmar_bleic_der () y xlevmar_bleic_dif () tratar los casos más simples, por ejemplo, con restricciones xlevmar_blic_der () y xlevmar_blic_dif () apoyo minimización en la casilla y restricciones de desigualdad lineales solamente.
  • Ha añadido un solucionador de sistemas lineal basada en la descomposición UDUt (es decir, sqrt libre Cholesky).
  • Eliminada alguna copia de memoria innecesaria en la mayoría de solucionadores lineales.
  • Ha añadido un nuevo problema de pruebas de ajuste de datos (Osborne).
  • Made algunos otros cambios menores.

¿Qué hay de nuevo en la versión 2.4:

  • ATENCIÓN DE VERSIONES ANTERIORES USUARIOS: El tamaño del argumento info (es decir, LM_INFO_SZ) se incrementa en uno para acomodar un nuevo campo de retorno (es decir, info [9]) que corresponde al número total de sistemas lineales resueltos durante el curso de la minimización. Los índices de los campos devueltos anteriormente en la matriz info permanecen sin cambios.
  • Se implementó un esquema más cache-eficiente para el cálculo de la Arpillera J aproximado ^ T * J y J ^ T * e de tamaño pequeño problemas de minimización.
  • Asegurado que cualquier memoria de trabajo retenido entre invocaciones de los solucionadores lineales se libera a la terminación de las rutinas levmar.
  • Asegurado que solucionadores lineales emplean la cantidad mínima necesaria de memoria auxiliar, evitando ocasional sobre-asignaciones.
  • implementa un esquema de desenrollado bucle para acelerar el cálculo de e = x-hx.
  • Se ha corregido un par de problemas con la alineación de memoria en sistemas de 64 bits.
  • Las funciones añadidas para el cálculo del coeficiente de determinación.
  • que es objeto de algunos pequeños problemas.

Programas parecidos

LaserCalc
LaserCalc

20 Feb 15

PARI/GP
PARI/GP

2 Jun 15

SegyMAT
SegyMAT

12 May 15

FreeMat
FreeMat

3 Jun 15

Comentarios a la levmar

Comentarios que no se encuentran
Añadir comentario
A su vez en las imágenes!