Estoy lejos de ser un experto en Maxima, pero desde you asked me to look at this question, esto es lo que tengo después de un rápido vistazo al documentation.
En primer lugar, mirar documentation on matrices dio como resultado una sola forma de convertir matrices en listas, que es list_matrix_entries
. Sin embargo, esto devuelve una lista plana de las entradas. Para obtener una estructura de lista anidada, algo como los siguientes trabajos
DataL : [[1, 2], [2, 4], [3, 6], [4, 8]]; /* Using your example list */
DataM : apply('matrix, DataL); /* and matrix */
DataML : makelist(list_matrix_entries(row(DataM, i)), i, 1, 4);
is(DataML = DataL); /* true */
Esto es torpe y probablemente ineficaz. Usando la estructura subyacente Lisp en Maxima (y analogía con Mathematica, que estoy más familiarizado) puede examinar los jefes de DataL
DataM
y utilizando part:
part(DataL, 0); /* [ */
part(DataM, 0); /* matrix */
continuación para convertir entre las dos estructuras, que pueden utilizar substpart
is(substpart(matrix, DataL, 0) = DataM); /* true */
is(substpart("[", DataM, 0) = DataL); /* true */
usando substpart
a nivel 0
es casi lo mismo que usar apply
, excepto que trabaja en algo más que en una lista.
Gracias. Parece funcionar :-). –
@Grzegorz Puede mover la marca de verificación a la respuesta de Robert, ya que parece ser la forma más razonable de hacer las cosas. – Simon
@Simon Fair point - Acabo de hacerlo. Sin embargo, no puedo recordar por qué, porque escribía secuencias de comandos de Maxima más largas, en mi caso su solución funcionó mejor o fue más conveniente. De todos modos - tic movido. Gracias a los dos por su ayuda, ¡Salud! –