multidimensional create array php matrix octave sage

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