gpt4 book ai didi

java - Java中的随机可逆矩阵

转载 作者:行者123 更新时间:2023-11-30 08:04:12 25 4
gpt4 key购买 nike

我在做一个项目,对于这个项目,我需要生成一个方随机可逆矩阵。

我找到了如何生成一个方随机矩阵,但我仍然想确定这是一个可逆矩阵,而不必计算行列式或多次生成这个矩阵,你能给我一个提示吗?

最佳答案

一种方法是生成矩阵的 SVD。那就是你生成“随机”(正方形)正交矩阵 U 和 V,以及一个“随机”对角矩阵 S,然后计算

 M = U*S*V'

请注意,每个矩阵都有一个 SVD

只要 S 的对角线元素都不为 0,M 就是可逆的。许多处理可逆矩阵的例程对矩阵的条件数很敏感;随着条件数变大,错误往往会增加。 M的条件数与S的条件数相同,是S的最大(绝对值)对角线元素除以最小(绝对值)。你可能想要控制它。一种方法是生成 S 的元素在 say [lo,hi] 中统一,然后随机设置符号。

生成“随机”正交矩阵的一种方法是生成“随机”Householder 反射的乘积,即以下形式的矩阵

R_v = 1 - 2*v*v'/(v'*v)

其中 v 是一个“随机” vector 。每个 n x n 正交矩阵都可以写成 n 个 Householder 反射的乘积。所有这些在计算上并不像乍看起来那么严格。由于反射器的特殊形式,编写计算例程很简单

R_u*M and M*R_v'

在 M 中只使用 n 个额外的存储空间并且是 O( n * n)

所以一个方案是

Generate S
Repeat n times
Generate random non zero vector u
Update S to be R_u*S
Generate random non zero vector v
Update S to be S*R_v'

关于java - Java中的随机可逆矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35832782/

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