首页 > 解决方案 > 如何从python中的随机数创建非奇异对称矩阵?

问题描述

我想使用随机实数创建一个非奇异对称矩阵。

例如,我想3*3使用随机生成的实数创建一个非奇异对称矩阵

number_list= [a,b,c,d,e,f]

我尝试了以下方法,但有时我会得到奇异矩阵。

  upper = tfp.math.fill_triangular(number_list, upper=True)
  
  symm= 0.5 * (upper + tf.transpose(upper, perm=[0,2,1]))
 
  final =tf.matmul(symm, tf.transpose(symm, perm=[0,2,1]))

标签: pythontensorflowtensorflow-probability

解决方案


tfp.bijectors.FillScaleTriL()(number_list)将从三角形大小的数字列表中为您创建一个 psd cholesky 因子。 tfb.CholeskyOuterProduct()将制作一个协方差矩阵。组合可以写成bij = tfb.CholeskyOuterProduct()(tfb.FillScaleTriL()); bij(number_list)


推荐阅读