List 从列表列表中提取列表(最大值)

List 从列表列表中提取列表(最大值),list,matrix,extract,maxima,eigenvalue,List,Matrix,Extract,Maxima,Eigenvalue,我在使用极大值,我相信我有一个简单的问题:我如何把矩阵的特征值放在一个列表中,这样我才能计算出最大的特征值 从我读到的,如果m是一个矩阵,那么特征值(m)是一个包含两个列表的列表,第一个列表包含m的特征值,第二个列表是一个表示它们各自多重性的数字列表。所以我想我需要做的是通过从特征值(M)中提取第一个列表来定义一个新的列表…但是我不知道怎么做 另一个相关的问题:这些特征值中的一些是复数的,所以当我取列表的最大值时,最大值会忽略列表中的复数,只看实值特征值,还是会给我一个错误 首先我们输入矩阵:

我在使用极大值,我相信我有一个简单的问题:我如何把矩阵的特征值放在一个列表中,这样我才能计算出最大的特征值

从我读到的,如果m是一个矩阵,那么特征值(m)是一个包含两个列表的列表,第一个列表包含m的特征值,第二个列表是一个表示它们各自多重性的数字列表。所以我想我需要做的是通过从特征值(M)中提取第一个列表来定义一个新的列表…但是我不知道怎么做


另一个相关的问题:这些特征值中的一些是复数的,所以当我取列表的最大值时,最大值会忽略列表中的复数,只看实值特征值,还是会给我一个错误

首先我们输入矩阵:

M : matrix([1,2],[2,3])$
然后我们计算其特征值:

eigs : eigenvalues(M);
(%o56)[[2-sqrt(5),sqrt(5)+2],[1,1]]

最后,我们提取最大特征值:

lmax(first(eigs));
(%o59)平方米(5)+2


关于复数列表的最大值,请记住最大值的概念只属于实数的范畴。没有一组复数的最大值。

以下是我将如何处理它。我将把特征值的结果分配给两个变量,一个是第一个列表,另一个是第二个列表。请注意,我使用的是并行赋值,例如,
[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]