当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python SciPy linalg.fiedler用法及代码示例


本文简要介绍 python 语言中 scipy.linalg.fiedler 的用法。

用法:

scipy.linalg.fiedler(a)#

返回一个对称的 Fiedler 矩阵

给定一个数字序列a, Fiedler 矩阵有结构F[i, j] = np.abs(a[i] - a[j]),因此零对角线和非负条目。 Fiedler 矩阵具有显性的正特征值,其他特征值为负。尽管通常无效,但对于某些输入,可以显式推导出倒数和行列式,如[1].

参数

a (n,) 数组

系数数组

返回

F (n, n) 数组

注意

参考

[1]

J. Todd,“基础数值数学:第 2 卷:数值代数”,1977 年,Birkhauser,DOI:10.1007/978-3-0348-7286-7

例子

>>> import numpy as np
>>> from scipy.linalg import det, inv, fiedler
>>> a = [1, 4, 12, 45, 77]
>>> n = len(a)
>>> A = fiedler(a)
>>> A
array([[ 0,  3, 11, 44, 76],
       [ 3,  0,  8, 41, 73],
       [11,  8,  0, 33, 65],
       [44, 41, 33,  0, 32],
       [76, 73, 65, 32,  0]])

行列式和逆的显式公式似乎仅适用于单调递增/递减数组。注意三对角结构和角。

>>> Ai = inv(A)
>>> Ai[np.abs(Ai) < 1e-12] = 0.  # cleanup the numerical noise for display
>>> Ai
array([[-0.16008772,  0.16666667,  0.        ,  0.        ,  0.00657895],
       [ 0.16666667, -0.22916667,  0.0625    ,  0.        ,  0.        ],
       [ 0.        ,  0.0625    , -0.07765152,  0.01515152,  0.        ],
       [ 0.        ,  0.        ,  0.01515152, -0.03077652,  0.015625  ],
       [ 0.00657895,  0.        ,  0.        ,  0.015625  , -0.00904605]])
>>> det(A)
15409151.999999998
>>> (-1)**(n-1) * 2**(n-2) * np.diff(a).prod() * (a[-1] - a[0])
15409152

相关用法


注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.linalg.fiedler。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。