質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

3回答

1565閲覧

量子ウォーク(アダマールウォーク)の実装について

Fallout_18

総合スコア124

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

1グッド

0クリップ

投稿2018/04/10 07:45

編集2018/04/10 07:47

あまり、よろしくない質問の仕方だとは思いますが。。。
(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など使って頑張ってはいますが、初心者にはなかなかハードなものだと痛感しており、力を貸していただきたい気持ちです。(私の上記のコードを本題とは少しズレておりますので、あまり気にしないでください)
宜しくお願い致します。

hayataka2049👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Fallout_18

2018/04/10 13:28 編集

低評価のオンパレードや~ 確かに、すいません。丸投げでした、自分で頑張ります。。
KojiDoi

2018/04/10 18:18

まず、RとRubyの違いを理解するところから始めましょうか。
guest

回答3

0

自己解決

自分でしっかり書き直しました笑
イメージ説明

投稿2018/08/06 15:06

Fallout_18

総合スコア124

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

Rで正しく動くコードがあるのであれば、pythonからRを起動するコードを研究したほうがいいのではないでしょうか?
Rのコードを移植したいのであれば、Rのコードを正しく理解するところから始めたほうがいいと思います。その上で、Rで実装できているがpythonだとどの関数を使えばいいのかわからない部分に限定して質問したほうが、回答を得やすくなると思います。

投稿2018/04/11 07:10

R.Shigemori

総合スコア3376

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Fallout_18

2018/04/14 08:19

アドバイスありがとうございます。 pythonとRを併用するやり方があることさえ知らなかったです。。 本当にありがとうございます、頑張ってみます!
guest

0

目指していることはR言語とpythonを書けるようになってR言語のコードをpythonを移植できるようになることでしょうか。
それとも、物理・数式を理解して、それをpythonのコードに落とし込むことでしょうか。

努力していると言われましても、載っているコードにコメントは特になく、どこまで理解しているのかわかりません。
せめてどう思って、何を試して、どううまくいっていないのかを整理してみてください。

http://www.kisc.meiji.ac.jp/~tz14040/quantumwalk/english/
はじめのうちは順番に結果を確認しながらステップバイステップで実装して行くと、どこまでわかってどこからがわからないかがわかると思います。

投稿2018/04/10 22:41

mkgrei

総合スコア8560

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Fallout_18

2018/04/14 08:38

そうですね、相手に明確に伝えることなく投げやりな形になって申し訳なかったです。 物理・数式を理解してコードに落とし込むことを行えることが理想です。 一つ一つ理解しながら、やっていきます。 いつもありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問