あまり、よろしくない質問の仕方だとは思いますが。。。
(http://d.hatena.ne.jp/ryamada/20151221)のサイトにある、
R言語での実装をpythonで行いたいのですが、以下のR言語(R?Ruby?)をpythonに翻訳したいです。
R
1U <- 1/sqrt(2) * matrix(c(1,1,1,-1),byrow=TRUE,2,2) + 1i*0 2 3my.PQ <- function(U){ 4 P <- Q <- matrix(0,2,2) 5 P[1,] <- U[1,] 6 Q[2,] <- U[2,] 7 return(list(P=P,Q=Q)) 8} 9 10 11Xinit <- 1/sqrt(2) * c(1,1i) 12 13my.HadamardWalk <- function(U,Xinit,n){ 14 PQ <- my.PQ(U) 15 P <- PQ[[1]] 16 Q <- PQ[[2]] 17 ret <- list() 18 ret[[1]] <- matrix(Xinit,nrow=1) 19 20 ret2 <- list() 21 ret2[[1]] <- apply(Mod(ret[[1]])^2,1,sum) 22 ret3 <- matrix(0,n,n) 23 ret3[1,1] <- ret2[[1]] 24 for(i in 2:n){ 25 ret[[i]] <- matrix(0,i,2) 26 tmp1 <- matrix(ret[[i-1]][1:(i-1),],ncol=2) 27 tmp2 <- matrix(ret[[i-1]][1:(i-1),],ncol=2) 28 p <- P %*% t(tmp1) 29 q <- Q %*% t(tmp2) 30 ret[[i]][1:(i-1),] <- ret[[i]][1:(i-1),] + t(p) 31 ret[[i]][2:i,] <- ret[[i]][2:i,] + t(q) 32 ret2[[i]] <- apply(Mod(ret[[i]])^2,1,sum) 33 ret3[i,1:i] <- ret2[[i]] 34 } 35 return(list(Q=ret,prob=ret2,probMat=ret3)) 36} 37 38hout <- my.HadamardWalk(U,Xinit,50) 39image(hout[[3]]) 40persp(hout[[3]])
](7d272e84fb9cdc17866c140daf4a4614.jpeg)
一応、私なりにですが、自分なりに努力している所を挙げます。
python
1sympy.physics.quantum.qubit import Qubit 2import sympy 3import numpy as np 4x = Qubit("00") 5y = Qubit("01") 6 7def hadamardcoin(): 8 hadamardcoin = np.array([[1 / sqrt(2), 1 / sqrt(2), 0, 0], [1 / sqrt(2), -1 / sqrt(2), 0, 0]]) 9 return hadamardcoin 10def initQuanStat(x0,x1,y0,y1): 11 initQuanStat = np.zeros([4,4],complex) #0+0jの4,4行列 12 initQuanStat[0][0] = x0 13 initQuanStat[1][1] = x1 14 initQuanStat[2][2] = y0 15 initQuanStat[3][3] = y1 16 return initQuanStat 17def initPositionMap(steps): 18 positionMap = np.zeros([2*steps + 1, 2*steps + 1, 4, 4],complex) 19 return positionMap 20def coinOperator(positionMap,coin): 21 dimension = shape(positonMap)[0] 22 for i in range(dimension): 23 for j in range(dimension): 24 positonMap[i][j] = dot(positonMap[i][j],coin) 25 return positionMap 26def shiftOperator(coinMap,step): 27 newPositionMap = initPositionMap(step) 28#まだ途中です 29
Githubなど使って頑張ってはいますが、初心者にはなかなかハードなものだと痛感しており、力を貸していただきたい気持ちです。(私の上記のコードを本題とは少しズレておりますので、あまり気にしないでください)
宜しくお願い致します。
回答3件
あなたの回答
tips
プレビュー