Извлечение списка из списка списков (Maxima)

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

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

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

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
327
2

Ответы 2

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

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

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

Вот как я бы это сделал. Я назначу результат 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]

Другие вопросы по теме