回答編集履歴

2

2019/09/12 15:38

投稿

tiitoi
tiitoi

スコア21956

test CHANGED
@@ -65,6 +65,10 @@
65
65
  plt.show()
66
66
 
67
67
  ```
68
+
69
+
70
+
71
+ ## 追記
68
72
 
69
73
 
70
74
 

1

a

2019/09/12 15:38

投稿

tiitoi
tiitoi

スコア21956

test CHANGED
@@ -24,14 +24,170 @@
24
24
 
25
25
  ```python
26
26
 
27
- C = np.ones((10, 10))
27
+ import matplotlib.pyplot as plt
28
28
 
29
- eigen_vals, eigen_vecs = np.linalg.eig(C)
29
+ import numpy as np
30
30
 
31
31
 
32
32
 
33
- for e, v in zip(eigen_vals, eigen_vecs.T):
33
+ np.set_printoptions(precision=2)
34
34
 
35
+
36
+
37
+ C = np.ones((10, 10))
38
+
39
+ w, v = np.linalg.eig(C)
40
+
41
+
42
+
43
+ for i in range(len(w)):
44
+
45
+ eigen_val = w[i]
46
+
47
+ eigen_vec = v[:, i]
48
+
49
+
50
+
35
- print(f"eigen value: {e}, eigen vector:\n{v}")
51
+ print(f"{i}-th eigen value: {eigen_val:.2f}")
52
+
53
+ print(f"{i}-th eigen vector: {eigen_vec}")
54
+
55
+ print(f"x1 + x2 + … xn = {eigen_vec.sum():.2f}\n")
56
+
57
+
58
+
59
+ fig, ax = plt.subplots()
60
+
61
+ ax.imshow(eigen_vecs.T)
62
+
63
+
64
+
65
+ plt.show()
36
66
 
37
67
  ```
68
+
69
+
70
+
71
+ > imshowで描画したときにρ=1.0のときの図を見ておかしいと思ったのですが、やっぱりあってますよね...
72
+
73
+
74
+
75
+ imshow の結果もおかしいとは思いません。
76
+
77
+
78
+
79
+ numpy.linalg.eig は固有値の一覧 w と各列が固有ベクトルの行列 v を返します。例えば、固有値 w[i] に対応する固有ベクトルは v の第 i 列目 v[:, i] です。
80
+
81
+
82
+
83
+ すべての要素が1の n x n 行列の重複含めて n 個の固有値は0が n - 1 個と n が1個です。
84
+
85
+ 固有値0に対応する固有ベクトル x は、x_1 + x_2 + … + x_n = 0 を満たすベクトル x です。(x_1, x_2, …, x_n はベクトル x の各成分)
86
+
87
+ 固有値nに対応する固有ベクトル x は、x_1 = x_2 = … = x_n を満たすベクトル x です。
88
+
89
+
90
+
91
+ 実際、結果を確認すると、
92
+
93
+
94
+
95
+ * 固有値0が9個、対応する固有ベクトルの成分の和は0
96
+
97
+ * 固有値10は1個、対応する固有ベクトルの成分はすべて同じ値
98
+
99
+
100
+
101
+ になっており、理論通りであることが確認できます。
102
+
103
+
104
+
105
+ ```
106
+
107
+ 0-th eigen value: 0.00
108
+
109
+ 0-th eigen vector: [-0.95 0.11 0.11 0.11 0.11 0.11 0.11 0.11 0.11 0.11]
110
+
111
+ x1 + x2 + … xn = -0.00
112
+
113
+
114
+
115
+ 1-th eigen value: 10.00
116
+
117
+ 1-th eigen vector: [0.32 0.32 0.32 0.32 0.32 0.32 0.32 0.32 0.32 0.32]
118
+
119
+ x1 + x2 + … xn = 3.16
120
+
121
+
122
+
123
+ 2-th eigen value: 0.00
124
+
125
+ 2-th eigen vector: [ 0. -0.33 0.92 -0.08 -0.08 -0.08 -0.08 -0.08 -0.08 -0.08]
126
+
127
+ x1 + x2 + … xn = -0.00
128
+
129
+
130
+
131
+ 3-th eigen value: 0.00
132
+
133
+ 3-th eigen vector: [ 0. -0.33 -0.08 0.92 -0.08 -0.08 -0.08 -0.08 -0.08 -0.08]
134
+
135
+ x1 + x2 + … xn = -0.00
136
+
137
+
138
+
139
+ 4-th eigen value: 0.00
140
+
141
+ 4-th eigen vector: [ 0. -0.33 -0.08 -0.08 0.92 -0.08 -0.08 -0.08 -0.08 -0.08]
142
+
143
+ x1 + x2 + … xn = 0.00
144
+
145
+
146
+
147
+ 5-th eigen value: 0.00
148
+
149
+ 5-th eigen vector: [ 0. -0.33 -0.08 -0.08 -0.08 0.92 -0.08 -0.08 -0.08 -0.08]
150
+
151
+ x1 + x2 + … xn = 0.00
152
+
153
+
154
+
155
+ 6-th eigen value: 0.00
156
+
157
+ 6-th eigen vector: [ 0. -0.33 -0.08 -0.08 -0.08 -0.08 0.92 -0.08 -0.08 -0.08]
158
+
159
+ x1 + x2 + … xn = 0.00
160
+
161
+
162
+
163
+ 7-th eigen value: 0.00
164
+
165
+ 7-th eigen vector: [ 0. -0.33 -0.08 -0.08 -0.08 -0.08 -0.08 0.92 -0.08 -0.08]
166
+
167
+ x1 + x2 + … xn = 0.00
168
+
169
+
170
+
171
+ 8-th eigen value: 0.00
172
+
173
+ 8-th eigen vector: [ 0. -0.33 -0.08 -0.08 -0.08 -0.08 -0.08 -0.08 0.92 -0.08]
174
+
175
+ x1 + x2 + … xn = 0.00
176
+
177
+
178
+
179
+ 9-th eigen value: 0.00
180
+
181
+ 9-th eigen vector: [ 0. -0.33 -0.08 -0.08 -0.08 -0.08 -0.08 -0.08 -0.08 0.92]
182
+
183
+ x1 + x2 + … xn = 0.00
184
+
185
+ ```
186
+
187
+
188
+
189
+ ![イメージ説明](fffe39b497090c24a5325242bafa4191.png)
190
+
191
+
192
+
193
+ 図を見ると上から2行目の固有値10の固有ベクトルの成分はすべて同じ値なので同じ色になっています。