質問編集履歴
3
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -71,9 +71,9 @@
|
|
71
71
|
p_map[x,y] = np.dot(next_phi_map[x,y], np.conj(next_phi_map[x,y]))
|
72
72
|
phi_map = next_phi_map
|
73
73
|
|
74
|
-
return (p_map[x,y])
|
74
|
+
return (p_map[x,y])#←ここは違うので無視してください。
|
75
|
-
print(prob(3,3,3))
|
76
75
|
|
76
|
+
|
77
77
|
fig = plt.figure()
|
78
78
|
ax = Axes3D(fig)
|
79
79
|
X,Y = np.meshgrid(x_list, y_list)
|
@@ -98,7 +98,7 @@
|
|
98
98
|
ax.w_yaxis.set_pane_color((0, 0, 0, 0))
|
99
99
|
ax.w_zaxis.set_pane_color((0, 0, 0, 0))
|
100
100
|
#plt.show()
|
101
|
-
|
101
|
+
|
102
102
|
|
103
103
|
```
|
104
104
|
言葉足らずで申し訳ないです。コードをすべて掲載しました。
|
2
全体修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -2,6 +2,39 @@
|
|
2
2
|
(少しdef関数に苦手意識あり)
|
3
3
|
一部のコードを掲載しますが、要望があれば全部掲載します。
|
4
4
|
```python
|
5
|
+
import numpy as np
|
6
|
+
import matplotlib.pyplot as plt
|
7
|
+
import math
|
8
|
+
from mpl_toolkits.mplot3d import Axes3D
|
9
|
+
from matplotlib import cm
|
10
|
+
import matplotlib.colors as colors
|
11
|
+
|
12
|
+
n=10 #tの範囲
|
13
|
+
m=15 #偶数
|
14
|
+
|
15
|
+
p=1/2
|
16
|
+
q=1-p
|
17
|
+
|
18
|
+
#quantum coin
|
19
|
+
P = [[-p, q, math.sqrt(p*q), math.sqrt(p*q)],[0,0,0,0],[0,0,0,0],[0,0,0,0]]
|
20
|
+
Q = [[0,0,0,0],[q, -p, math.sqrt(p*q), math.sqrt(p*q)],[0,0,0,0],[0,0,0,0]]
|
21
|
+
R = [[0,0,0,0],[0,0,0,0],[math.sqrt(p*q), math.sqrt(p*q), -q, p],[0,0,0,0]]
|
22
|
+
S = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[math.sqrt(p*q), math.sqrt(p*q), p, -q]]
|
23
|
+
|
24
|
+
t_list = []
|
25
|
+
x_list = []
|
26
|
+
y_list = []
|
27
|
+
|
28
|
+
phi_map = np.zeros((2*m+1, 2*m+1,4)) #縦横2m+1の座標平面上にいる波動状態をセット np.zeros((行,列,[]の中身の数))
|
29
|
+
phi_map[0,0]= np.array([1/2,1/2,-1/2,-1/2])
|
30
|
+
p_map=np.zeros([2*m+1,2*m+1])
|
31
|
+
|
32
|
+
for i in range(0,2*m+1):
|
33
|
+
p = np.dot(phi_map[i,i], np.conj(phi_map[i,i]))
|
34
|
+
p_map[i,i]=p
|
35
|
+
x_list.append(i)
|
36
|
+
y_list.append(i)
|
37
|
+
|
5
38
|
def prob(t,x,y):
|
6
39
|
for t in range(0,n+1):
|
7
40
|
t_list.append(t)
|
@@ -10,7 +43,7 @@
|
|
10
43
|
p_map
|
11
44
|
else:
|
12
45
|
next_phi_map = np.zeros((2*m+1,2*m+1, 4))
|
13
|
-
for x in range(0,2*m+1):
|
46
|
+
for x in range(0,2*m+1):
|
14
47
|
if x == 0:
|
15
48
|
for y in range(0,2*m+1):
|
16
49
|
if y == 0:
|
@@ -38,10 +71,38 @@
|
|
38
71
|
p_map[x,y] = np.dot(next_phi_map[x,y], np.conj(next_phi_map[x,y]))
|
39
72
|
phi_map = next_phi_map
|
40
73
|
|
74
|
+
return (p_map[x,y])
|
75
|
+
print(prob(3,3,3))
|
76
|
+
|
77
|
+
fig = plt.figure()
|
78
|
+
ax = Axes3D(fig)
|
79
|
+
X,Y = np.meshgrid(x_list, y_list)
|
80
|
+
|
81
|
+
ax.set_xlabel("x")
|
82
|
+
ax.set_ylabel("y")
|
83
|
+
ax.set_zlabel("probability")
|
84
|
+
|
85
|
+
|
86
|
+
ax.set_xlim(2*m,0)
|
87
|
+
ax.set_ylim(0,2*m)
|
88
|
+
ax.set_zlim(0,0.015)
|
89
|
+
|
90
|
+
#Z軸の色を設定
|
91
|
+
offset = p_map.ravel() + np.abs(p_map.min())
|
92
|
+
fracs = offset.astype(float)/offset.max()
|
93
|
+
norm = colors.Normalize(fracs.min(), fracs.max())
|
94
|
+
clrs = cm.cool(norm(fracs))
|
95
|
+
|
96
|
+
ax.bar3d(X.ravel(), Y.ravel(), p_map.ravel() ,0.1, 0.1, -p_map.ravel(),color =clrs)#,cmap=cm.hot)
|
97
|
+
ax.w_xaxis.set_pane_color((0, 0, 0, 0))
|
98
|
+
ax.w_yaxis.set_pane_color((0, 0, 0, 0))
|
99
|
+
ax.w_zaxis.set_pane_color((0, 0, 0, 0))
|
100
|
+
#plt.show()
|
41
101
|
return (t,p_map[x,y]) #←ここが全然違うのはわかっている
|
42
102
|
|
43
103
|
```
|
44
|
-
|
104
|
+
言葉足らずで申し訳ないです。コードをすべて掲載しました。
|
45
|
-
|
105
|
+
以下のような、座標にそれぞれの確率の値がでます。この時間、座標に依存した、特定の箇所の確率だけを取り出したい場合、def関数、prob(t,x,y)として行うと良いのでしょうか?
|
106
|
+
(すいません、これで良いでしょうか?)
|
107
|
+

|
46
|
-
|
108
|
+
上図は一例です(コードの結果とは少し違うかもしれません)。
|
47
|
-
宜しくお願い致します。
|
1
文字修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
p_map
|
11
11
|
else:
|
12
12
|
next_phi_map = np.zeros((2*m+1,2*m+1, 4))
|
13
|
-
for x in range(0,2*m+1): #以下は
|
13
|
+
for x in range(0,2*m+1): #以下は2m×2mの正方格子上の境界条件に沿って計算しています。
|
14
14
|
if x == 0:
|
15
15
|
for y in range(0,2*m+1):
|
16
16
|
if y == 0:
|