Maxima:将矩阵的列定义为向量

Maxima: define columns of matrix as a vector

在 Maxima 中,我想使用随机生成的矩阵的列来定义向量,其中不仅条目数而且行数和列数都是随机的。到目前为止我的代码:

n:2+random(5);
m:2+random(5);
h[i,j]:=5-random(11);    
M:genmatrix(h,n,m);

rows/colums的数量可以从 2 到 6(不一定是 n=m),条目是从 -5 到 5 的随机整数。

我现在可以使用了

v1:col(M,1);

将向量 v1 定义为矩阵 M 的第一列,但由于我不知道有多少列,所以我尝试了这个:

for i thru n do (vi:col(Mt,i));

这个returns "Done" 但是当我输入

v1;

我只得到 "v1" 作为结果,而不是矩阵的第一列。有

for i thru n do (disp (v[i]=col(Mt,i)));

我可以让 Maxima 将所有列显示为向量,但我再次只得到 "v1" 作为结果。谁能告诉我我做错了什么?

我现在无法测试此代码,但我相信这个或非常相似的东西应该可以工作。

这是一种生成随机矩阵然后提取矩阵列的方法。我不知道您是想将列表示为列向量还是行向量。 Maxima 实际上没有办法将行和列向量表示为不同的类型。对于列向量,我将获得 1 列的矩阵,对于行向量,我将获得一个列表。

[m, n]: [2 + random(5), 2 + random(5)];
h: lambda ([i, j], random(11) - 5) $
M: genmatrix (h, m, n);

这是一个列表,其中包含 M 的列作为 1 列矩阵:

makelist (col (M, k), k, 1, n);

这是一个包含 M 列的列表:

args (transpose (M));