- こちらで「量子確率論とその応用」をぱらぱらめくった
- 文書を抜き書きしただけで、特に数式についてはあえて端折った
- この記事では、数式関連の抜き書きをする
- 直交多項式は以下のような漸化式で表される
- P0(x)=1
- P1(x)=x−α1
- Pn+1(x)=(x−αn+1)Pn(x)+wnPn−1(x)
- ここで、{αn}∞n=1,{wn}∞n=1},αn∈R,wn≥0がヤコビ系数列
- ヒルベルト空間の正規直交基底{Φn}∞n=0があって、それらは、3つの作用素によって以下のような関係にある
- B+Φn=√wn+1Φn+1
- B−Φ0=0,B−Φn=√wnΦn−1
- BoΦ0=αn+1Φn
- また、次のような関係がある
- で、モーメントは
- E(Xm)=∫∞−∞xmμ(dx)=<P0,QmP0>=<Φ0,(B++Bo+B−)mΦ0>
- Rのorthopolynomパッケージを使うと、直交多項式が作れる
library(orthopolynom)
p.0 <- polynomial( c( 1 ) )
n <- 10
rec <- data.frame(c=rep(1,n),d=-rnorm(n),e=rep(1,n),f=runif(n))
p.list <- orthonormal.polynomials( rec, p.0 )
p.list
x <- seq(from= -1,to=1,length=101)
ys <- polynomial.values(p.list,x)
ys.mat <- matrix(unlist(ys),ncol=length(p.list))
matplot(x,ys.mat,type="l")
- こんな問題設定
- ある関数V1とV2とがある
- 何かの拍子で、それらと正規直交基底Rのそれぞれとの内積V1TR,V2TRがわかったとする
- この2つの関数の正規直交基底との内積が、それぞれの「モーメント」から算出できるとき、それぞれのモーメント列がわかれば、その確率関数ペアの内積は求まりそうだ・・・
- その時、V1とV2との内積はV1TV2=(V1TR)(V2TR)T=V1TRRTV2=V1TIV2なので
- ちょっと有限次元でやっておく
d <- 3
R <- GPArotation::Random.Start(d)
V1 <- rnorm(d)
V2 <- rnorm(d)
sum(V1*V2)
IP1 <- matrix(V1,nrow=1) %*% R
IP2 <- matrix(V2,nrow=1) %*% R
sum(IP1 * IP2)
> sum(V1*V2)
[1] -1.460819
> IP1 <- matrix(V1,nrow=1) %*% R
> IP2 <- matrix(V2,nrow=1) %*% R
> sum(IP1 * IP2)
[1] -1.460819