teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

修正

2018/05/22 03:15

投稿

Fallout_18
Fallout_18

スコア124

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
- return (t,p_map[x,y]) #←ここが全然違うのはわかっている
101
+
102
102
 
103
103
  ```
104
104
  言葉足らずで申し訳ないです。コードをすべて掲載しました。

2

全体修正

2018/05/22 03:14

投稿

Fallout_18
Fallout_18

スコア124

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): #以下は2m×2mの正方格子上の境界条件に沿って計算しています。
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
- もしprob(t,x,y)で指定したいらば、時間発展計算中でp_map[t,x,y]として、書き直さないといけない気がてきました。。
105
+ 以下のような、座標にそれぞれの確率の値がでます。この時間、座標に依存した、特定箇所確率だけを取り出したい場合def関数、prob(t,x,y)として行うのでょうか?
106
+ (すいません、これで良いでしょうか?)
107
+ ![イメージ説明](71e92ef261bce80a685aa4026cd37b6c.png)
46
- 自分も、再度やってみまが、ここまで書いたで質問をさせて頂き
108
+ 上図は一例です(コード結果とは少し違うかもしれせん)
47
- 宜しくお願い致します。

1

文字修正

2018/05/22 03:13

投稿

Fallout_18
Fallout_18

スコア124

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): #以下は8×8の正方格子上の境界条件に沿って計算しています。
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: