- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我的问题是这样的:我正在尝试通过(截断的)Karhunen-Loeve变换对随机过程进行频谱分解,但是我的协方差矩阵实际上是一个1参数矩阵族,我需要一种方法来估算/可视化我的随机过程取决于此参数。为此,我需要一种跟踪numpy.linalg.eigh()产生的特征向量的方法。
为了让您了解我的问题,这里有一个示例玩具问题:假设我有一组点{xs},并且随机过程R的协方差C(x,y)= 1 /(1 + a *(xy) ^ 2)取决于参数a。对于[0,1]范围内的网格点的随机样本和给定的a(例如a = 1)选择,我可以填充协方差矩阵并使用以下方法实现Karhunen-Loeve变换:
num_x = 1000
xs = numpy.array([numpy.random.uniform() for i in range(num_x)])
z=numpy.random.standard_normal(num_x)
a0=1
def cov(x,y,a=a0): return 1/(1+a*(x-y)^2)
cov_m = numpy.array(map(lambda y: map(lambda x: cov(x,y),xs),xs))
w,v=numpy.linalg.eigh(cov_m)
R=numpy.dot(v,z*w^0.5)
最佳答案
经过一些研究,我设法为这个问题提出了两个部分答案。
首先是,对于没有零本征向量的实对称矩阵(可能还需要指定非简并矩阵),应该可行的是生成一种求解本征对问题的算法,该算法以固定顺序生成本征对,而与矩阵的选择。给定恒定的起始向量,Lanczos algorithm将以确定性方式为任意实数对称矩阵生成一个三对角矩阵。 divide-and-conquer algorithm的“ divide”部分具有类似的确定性,这意味着算法的唯一迭代次数取决于矩阵元素的值的部分是“ conquer”部分,从而求解了世俗方程:
1+ \ sum_j ^ m w_j ^ 2 /(d_j- \ lambda)= 0
因此,对于每个2x2块,问题归结为如何以一种实际上不依赖于原始矩阵值的方式对世俗方程的两个根进行排序。
第二部分解决方案更容易实现,但更容易失败。回想起来,这也是显而易见的。
同一矩阵的两个不同特征向量将始终彼此正交。因此,如果特征向量根据单个参数α平稳变化,则:
v_i(a).v_j(a + da)= \ delta_ {ij} + O(da)
因此,随着参数α的变化,这给出了特征向量之间的自然映射。
这与David Zwicker和jorgeca提出的测量特征向量对之间的全局距离的想法类似,但是更容易实现。但是,在特征向量快速变化的区域或参数a的变化太大的区域中,此方法的实现将容易失败。
同样,在特征值相交处发生什么的问题也很有趣,因为在每个这样的相交处,系统都会退化。然而,在跨越简并性的允许特征向量集合中,将存在两个满足点积条件且可用作跨越简并性的基础,从而维持映射的两个向量。
当然,这是假设将特征向量视为参数空间上的光滑连续函数是正确的,但我不确定(正如jorgeca指出的那样)。
关于python - 跟踪1参数矩阵族的特征向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17105436/
在C中,protocol family被提及为第一个参数。 例如: ipv4 的套接字(AF_INET,,) socket(AF_PACKET,,) 用于数据包嗅探 Python 支持三个地址族:AF
根据 vfork() 手册页,如果 vfork() 在调用 _exit 或 exec 之前修改除 pid_t 之外的任何数据,则行为未定义系统调用系列。 由此我了解到,如果vfork()创建的子进程调
我是一名优秀的程序员,十分优秀!