A.6 사용자의 연산자 정의 (User Defined Operator)
다음과 같이 사용자가 operator를 정의할 수도 있다. 아래의 예는 spectral decomposition 하는 함수를 operator처럼 만든 것이다.
"%^%" = function(M, x) with(eigen(M), vectors %*% (abs(values)^x * t(vectors)))
= matrix(rnorm(9), ncol=3) ; m1 = crossprod(m0) ; m1 m0
[,1] [,2] [,3]
[1,] 0.384 0.381 -0.452
[2,] 0.381 1.273 0.163
[3,] -0.452 0.163 1.232
= m1 %^% (1/3) ; A %*% A %*% A A
[,1] [,2] [,3]
[1,] 0.384 0.381 -0.452
[2,] 0.381 1.273 0.163
[3,] -0.452 0.163 1.232
%^% 3 A
[,1] [,2] [,3]
[1,] 0.384 0.381 -0.452
[2,] 0.381 1.273 0.163
[3,] -0.452 0.163 1.232
%^% 1.5) %^% 2 (A
[,1] [,2] [,3]
[1,] 0.384 0.381 -0.452
[2,] 0.381 1.273 0.163
[3,] -0.452 0.163 1.232
%^% 2) %^% 1.5 (A
[,1] [,2] [,3]
[1,] 0.384 0.381 -0.452
[2,] 0.381 1.273 0.163
[3,] -0.452 0.163 1.232
= m1 %^% -0.5 ; solve(B %*% B) B
[,1] [,2] [,3]
[1,] 0.384 0.381 -0.452
[2,] 0.381 1.273 0.163
[3,] -0.452 0.163 1.232