Максимумы: определить столбцы матрицы как вектор - PullRequest
0 голосов
/ 22 марта 2019

В Maxima я хочу определить векторы, используя столбцы случайно сгенерированной матрицы, где не только записи, но и количество строк и столбцов являются случайными.Мой код до сих пор:

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

Количество строк / столбцов может варьироваться от 2 до 6 (необязательно n = m), а записи являются случайными целыми числами от -5 до 5.

Теперь я могу использовать

v1:col(M,1);

, чтобы определить вектор v1 как первый столбец матрицы M, но так как я не знаю, сколько там столбцов, я попробовал это:

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

Это возвращает "Готово", но когда я ввожу

v1;

, я просто получаю "v1" в качестве результата, а не первый столбец матрицы.С

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

я могу заставить Maxima отображать все столбцы как векторы, но опять же я получаю только «v1» в качестве результата.Может кто-нибудь сказать мне, что я делаю не так?

1 Ответ

2 голосов
/ 25 марта 2019

Я не могу проверить этот код прямо сейчас, но я верю, что это или что-то похожее должно сработать.

Вот способ создать случайную матрицу, а затем извлечь столбцы из матрицы.Я не знаю, хотите ли вы представить столбцы как векторы столбцов или как строки строк.У 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));
...