gpt4 book ai didi

python - scipy.linalg.inv 是否检查矩阵是否为对角矩阵?

转载 作者:太空宇宙 更新时间:2023-11-03 14:37:23 25 4
gpt4 key购买 nike

求对角矩阵的逆非常简单,不需要复杂的方法。 scipy.linalg.inv 在应用更复杂的方法之前是否检查矩阵是否为对角线,还是我需要自己检查?

最佳答案

如你所见the Github code of scipy.linalg.inv , 函数 inv 首先调用

getrf, getri, getri_lwork = get_lapack_funcs(('getrf', 'getri','getri_lwork'),

然后函数 getrf 完成 LU 分解等工作。现在我们必须研究 getrf 函数如何给出 LU 分解。因为如果它在处理输入矩阵之前检查它是否是对角线,那么就不需要自己检查了。

函数 getrf 是通过调用 _get_funcs 获得的但我不能从那里走得更远(_get_funcs 使用以下参数调用 _get_funcs(names, arrays, dtype, "LAPACK", _flapack, _clapack, "flapack", "clapack", _lapack_alias)).

我建议你用一个大的对角矩阵运行一个实验来比较用 linalg 和手动反转输出的时间。


更新(由问题作者):

import numpy as np
from scipy.linalg import inv
a = np.diag(np.random.random(19999))
b = a.copy()
np.fill_diagonal(a, 1/a.diagonal())
c = inv(b)

甚至不需要时间测量工具:很明显 inv 慢得多......(令人惊讶地令人失望)。

关于python - scipy.linalg.inv 是否检查矩阵是否为对角矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56809784/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com