使用 Maxima 进行符号矩阵分离

Symbolic matrix separation with Maxima

我正在尝试用 Maxima 处理一些代数,这是我的代码:

Pd: matrix( [a00, a01, a02, a03], [a10, a11,a12,a13], [a20,a21,a22,a23]);
Pdd: matrix( [b00, b01, b02, b03], [b10, b11,b12,b13], [b20,b21,b22,b23]);
T1: col( Pd, 1) . transpose( col(Pdd,4) )  -  col( Pd, 4 ) . transpose( col(Pdd,1) );
T2: col( Pd, 2) . transpose( col(Pdd,4) )  -  col( Pd, 4 ) . transpose( col(Pdd,2) );
    T3: col( Pd, 3) . transpose( col(Pdd,4) )  -  col( Pd, 4 ) . transpose( col(Pdd,3) );

    t: matrix( list_matrix_entries( T1 ), list_matrix_entries( T2 ), list_matrix_entries( T3 ) );

transpose( list_matrix_entries( t ) );

这最终给出了 27 个方程式,例如:

matrix([a00*b03−a03*b00],
[a00*b13−a03*b10],
[a00*b23−a03*b20],
[a10*b03−a13*b00],
[a10*b13−a13*b10],
[a10*b23−a13*b20],
[a20*b03−a23*b00],
[a20*b13−a23*b10],
[a20*b23−a23*b20],
[a01*b03−a03*b01],
[a01*b13−a03*b11],
[a01*b23−a03*b21],
[a11*b03−a13*b01],
[a11*b13−a13*b11],
[a11*b23−a13*b21],
[a21*b03−a23*b01],
[a21*b13−a23*b11],
[a21*b23−a23*b21],
[a02*b03−a03*b02],
[a02*b13−a03*b12],
[a02*b23−a03*b22],
[a12*b03−a13*b02],
[a12*b13−a13*b12],
[a12*b23−a13*b22],
[a22*b03−a23*b02],
[a22*b13−a23*b12],
[a22*b23−a23*b22])

我的问题是,如何使用 Maxima 将这 27 个方程式操作(重新排列)为 t=Ea 形式,其中 a 是堆叠为列向量的所有 a.. 条目。

试试这个:

coefmatrix (list_matrix_entries (foo),
  [a00, a01, a02, a03, a10, a11, a12, a13, a20, a21, a22, a23]);

其中 foo 是上面 transpose( list_matrix_entries( t ) ); 的结果。