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)ndarray
注意事项
1.3.0 新版功能.
参考文献
- 1
J·托德,“基础数值数学”,第2卷 : Numerical Algebra", 1977, Birkhauser, DOI:10.1007/978-3-0348-7286-7
示例
>>> 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