求A,满足A乘A的转置等于对角阵

礼貌求问有没有人知道怎么求一个n阶矩阵A,使得A乘A的转置等于一个对角矩阵(非单位矩阵,且对角线元素不为0)呀! 用什么方法都可以,或者有没有人知道例子的呀

首先,我们寻找一个对角线矩阵D,其中除了主对角线上的元素外,所有元素都是0。设D的主对角线上的元素为d1,d2,dn(不一定是正的)。
然后,我们构造了一个n阶矩阵A,其中第i行和第j列元素为(d_i)^(-1/2)*delta_{ij},其中delta_{ij}是Kronecker符号,即当i=j时为1,否则为0。
很容易验证A乘以A的转置等于对角线矩阵D,其中第i个主对角线上的元素是D_i。
例如,当n=2时,我们可以取D=diag(2,3),则A=[[1,0],[0,sqrt(3)]]满足条件。

5阶矩阵A,对角线元素为[1, 2, 3, 4, 5]的代码示例

import numpy as np

n = 5  # 矩阵阶数
diag = [1, 2, 3, 4, 5]  # 对角线元素

A = np.zeros((n, n))
for i in range(n):
    A[i, i] = diag[i]
    for j in range(i+1, n):
        A[i, j] = 1
        A[j, i] = -1

print(A)
# [[ 1.  1. -1.  0.  0.]
#  [ 0.  2.  1. -1.  0.] 
#  [ 0.  0.  3.  1. -1.]
#  [ 0.  0.  0.  4.  1.]  
#  [ 0.  0.  0.  0.  5.]]

print(A.T)    
# [[ 1.  0.  0.  0.  0.]
#  [ 1.  2.  0.  0.  0.] 
#  [-1.  1.  3.  0.  0.]
#  [ 0. -1.  1.  4.  0.]  
#  [ 0.  0. -1.  1.  5.]]