create - Cómo hacer operaciones PHP Matrix de una manera fácil/eficiente
create array multidimensional php (2)
Estoy buscando una forma de hacer operaciones de Matrix en PHP de una manera fácil / eficiente.
Quiero poder hacer las operaciones básicas de Matrix como Invertir, Multiplicar, Determinante, sumar, restar, Resolver ecuaciones lineales Ax = B, transponer, etc.
Estoy mirando matrices de pequeño tamaño (la matriz que quiero invertir son como mucho 100x100, y los vectores que quiero multiplicar / transponer pueden llegar a ser 1000x1).
Encontré un paquete PEAR Math_Matrix pero parece descuidado (lo desarrollo con E_STRICT y arroja muchas advertencias obsoletas). Los otros enlaces que he encontrado parecen en su mayoría rotos y no actualizados.
Encontré el paquete PHP de Lapack pero no tiene otras operaciones como la multiplicación, la resta o la transposición.
Sé que otra opción es usar la integración con otro software como Octave o Sage; sin embargo, aún no estamos seguros de querer hacerlo (el equipo financiero desprecia la sintaxis de Python y el equipo de TI está preocupado por la sobrecarga de Octave).
¿Hay alguna biblioteca independiente que alguien use para este tipo de operaciones matriciales que tiene todas las operaciones básicas y está actualizada?
Eche un vistazo a http://projects.moongate.ro/octave-daemon/
Algunas de las características que pueden reducir los gastos generales y convencer al equipo de TI:
El daemon es accesible a través de la red, lo que significa que puede mover todos los procesos de Octave en un servidor separado, si decide que necesita
Los procesos de octava son persistentes, lo que significa que: cualquier información que haya sido cargada o calculada en el pasado seguirá estando disponible para los clientes recién conectados
los tiempos de inicio para los nuevos procesos de Octave no afectan a los clientes.
Proporciona conversiones entre matrices Octave y arrays PHP.
Estoy respondiendo mi propia pregunta un año después.
Buscamos otra opción, codificamos nuestra pequeña biblioteca en C ++ y la compilamos y agregamos a php como extensión. Esto produjo el mejor rendimiento y el código siguió siendo bonito.
$inverted = my_matrix_invert($matrixArray);
Las personas que buscan hacer este tipo de cosas deberían mirar aquí: http://www.php-cpp.com