Извлечение списка из списка списков (Maxima) - PullRequest
0 голосов
/ 26 октября 2018

Я использую максимумы, и я считаю, что у меня простой вопрос: как поместить собственные значения матрицы в список, чтобы я мог вычислить наибольшее собственное значение?

Из того, что ясчитывая, если M является матрицей, то собственные значения (M) являются списком, содержащим два списка, первый содержит собственные значения M, второй представляет собой список чисел, представляющих их соответствующие кратности.Поэтому я думаю, что мне нужно сделать, это определить новый список, извлекая первый список из собственных значений (M) ... Однако не уверен, как это сделать.

Еще один связанный вопрос: некоторые из этих собственных значений будутбыть сложным, поэтому, когда я возьму максимум из списка, максимумы будут игнорировать комплексные числа в списке и просто смотреть на реальные значения собственных значений, или это даст мне ошибку?

Ответы [ 2 ]

0 голосов
/ 28 октября 2018

Вот как бы я поступил по этому поводу.Я присваиваю результат eigenvalues двум переменным, поэтому первая - это первый список, а вторая - вторая.Обратите внимание, что я использую параллельное назначение для этого, например, [a, b] : [foo, bar]; назначает foo на a и bar на b.Затем я вставлю элементы в два списка, чтобы каждое собственное значение было кратным.Наконец я отсортирую собственные значения по величине.Я буду сортировать по уменьшению величины, поэтому первый элемент - это наибольшее собственное значение и его кратность.

(%i2) A : matrix ([1/7, 15/14, 15/7], [-13/7, 85/14, 71/7], [9/7, -27/7, -47/7]);
                      [  1     15    15  ]
                      [  -     --    --  ]
                      [  7     14    7   ]
                      [                  ]
                      [   13   85    71  ]
(%o2)                 [ - --   --    --  ]
                      [   7    14    7   ]
                      [                  ]
                      [  9      27    47 ]
                      [  -    - --  - -- ]
                      [  7      7     7  ]
(%i3) [vals, mults] : eigenvalues (A);
                      1
(%o3)               [[-, - 2, 1], [1, 1, 1]]
                      2
(%i4) vals_mults : map (lambda ([a, b], [a, b]), vals, mults);
                     1
(%o4)              [[-, 1], [- 2, 1], [1, 1]]
                     2
(%i5) sort (vals_mults, lambda ([a, b], abs(a[1]) > abs(b[1])));
                                       1
(%o5)              [[- 2, 1], [1, 1], [-, 1]]
                                       2
(%i6) first (%);
(%o6)                       [- 2, 1]
0 голосов
/ 26 октября 2018

Сначала мы вводим матрицу:

M : matrix([1,2],[2,3])$

Затем вычисляем ее собственные значения:

eigs : eigenvalues(M);

(% o56) [[2 - sqrt (5), sqrt(5) + 2], [1, 1]]

Наконец, мы извлекаем максимальное собственное значение:

lmax(first(eigs));

(% o59) sqrt (5)+ 2

Что касается максимума списка комплексных чисел, помните, что понятие максимума относится только к сфере действительных чисел.Не существует максимума набора комплексных чисел.

...