雑記

参考文献

  1. 福水 健次. カーネル法入門. 朝倉書店, 2010.


[1] の 59 ページのアルゴリズムをかこうとして R が下三角になっていってほしいが途中である。

import numpy as np

def imcomplete_cholesky(A):
    R = np.diag(np.diag(A))
    A_dash = A.copy()
    P = np.identity(A.shape[0])
    
    i = 0
    j_ast = np.argmax(np.diag(R))
    P[i, i] = 0
    P[j_ast, j_ast] = 0
    P[i, j_ast] = 1
    P[j_ast, i] = 1
    A_dash = np.matmul(P, A_dash)
    A_dash = np.matmul(A_dash, P)

    r = R[i, i]
    R[i, i] = R[j_ast, i]
    R[j_ast, i] = r
    R[i, i] = np.sqrt(A_dash[i, i])
    print(A_dash)
    print(R)

A = np.array([
    [  4.,  12., -16.],
    [ 12.,  37., -43.],
    [-16., -43.,  98.]
])
imcomplete_cholesky(A)

[[ 98. -43. -16.]
 [-43.  37.  12.]
 [-16.  12.   4.]]
[[ 9.89949494  0.          0.        ]
 [ 0.         37.          0.        ]
 [ 4.          0.         98.        ]]