首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >矩阵复制应该收敛,但它不收敛

矩阵复制应该收敛,但它不收敛
EN

Stack Overflow用户
提问于 2022-06-06 13:31:48
回答 1查看 47关注 0票数 0

我试图计算这类矩阵之间乘法的特征值:

代码语言:javascript
复制
import numpy as np

μ=1.5
σ=0.5
m=np.random.normal(μ,σ)

P=[[-1, m, 0.1, 0.1],[1,0,0,0],[0,1,0,0],[0,0,1,0]] #matrix

n=200

for i in range(n):
  m=np.random.normal(μ,σ)
  T=[[-1, m, 0.1, 0.1],[1,0,0,0],[0,1,0,0],[0,0,1,0]]
  P=np.dot(T,P)

l,v=np.linalg.eig(T)
λ,w=np.linalg.eig(P)

print(l)
print(λ)

由于矩阵T的三个特征值小于1(在模中),我期望与矩阵乘积P的特征值相似,特别是小于1的三个特征值将对应于P的特征值,后者随着n的增加而减小并收敛到0。事实上,在n=40之前,这是正确的。那就不再起作用了。对于σ=0,P是n个特征值小于1的矩阵的乘积,但P的特征值会发散。

EN

回答 1

Stack Overflow用户

发布于 2022-06-09 19:41:35

您的T[i]不能保证特征值小于1。

添加一个断言,您将看到它何时违反了假设

代码语言:javascript
复制
import numpy as np

μ=1.5
σ=0.5
m=np.random.normal(μ,σ)

P=[[-1, m, 0.1, 0.1],[1,0,0,0],[0,1,0,0],[0,0,1,0]] #matrix

n=200

for i in range(n):
  m=np.random.normal(μ,σ)
  T=[[-1, m, 0.1, 0.1],[1,0,0,0],[0,1,0,0],[0,0,1,0]]
  assert np.all(abs(np.linalg.eigvals(T)) < 1)
  P=np.dot(T,P)

l,v=np.linalg.eig(T)
λ,w=np.linalg.eig(P)

print(abs(l))
print(λ)

作为一个随机系统,有时甚至违反约束条件,它可以收敛,但需要对序列的期望值进行一些细致的分析。

该矩阵结构类似于线性动态系统[1]中可控制的典范形式。

但是,由于矩阵T的特征值有时大于1,所以您建议的推理在这种情况下不适用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72518465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档