回答編集履歴

1

追記を受けて

2018/10/07 15:26

投稿

hayataka2049
hayataka2049

スコア30933

test CHANGED
@@ -11,3 +11,73 @@
11
11
 
12
12
 
13
13
  グローバル変数の中にも、`Metropolis`のローカル変数にも存在していないので、当然そうなります。
14
+
15
+
16
+
17
+ ### 追記を受けて
18
+
19
+
20
+
21
+ 元々はこうなってた訳ですね。一部抜粋。
22
+
23
+ ```python
24
+
25
+ def Metropolis(T):
26
+
27
+ E_sum = 0
28
+
29
+ M_sum = 0
30
+
31
+ Esq_sum = 0
32
+
33
+ Msq_sum = 0
34
+
35
+ Ising = Init()
36
+
37
+ # Calculate the physical quantities
38
+
39
+ [E,M] = EnMag(Ising)
40
+
41
+ ```
42
+
43
+
44
+
45
+ で、こうしたと。
46
+
47
+ ```python
48
+
49
+ def Metropolis(T):
50
+
51
+ E_sum1 = 0
52
+
53
+ E_sum2 = 0
54
+
55
+ M_sum1 = 0
56
+
57
+ M_sum2 = 0
58
+
59
+ Esq_sum = 0
60
+
61
+ Msq_sum = 0
62
+
63
+ Ising = (Init1(),Init2())
64
+
65
+ [E,M] = EnMag(IsingA,IsingB)
66
+
67
+ ```
68
+
69
+
70
+
71
+ 元々のコードでは`Ising = Init()`の行で定義した`Ising`を`EnMag`に渡していたのですが、書き換えたコードでは`IsingA`と`IsingB`という未定義の変数を渡そうとしています。
72
+
73
+
74
+
75
+ `Init1()`の結果と`Init2()`の結果がそれぞれに対応している、というコード意図なのでしょうか? でしたら、そういうコードにすれば動きます。物理的な正しさは考慮していませんので、それについてはご自身でご確認ください。
76
+
77
+
78
+
79
+ ---
80
+
81
+
82
+
83
+ 他の箇所にもたくさんエラーがあるみたいですね・・・。