質問編集履歴
1
質問の意図をわかりやすく修正しました
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,10 +1,26 @@
|
|
1
1
|
現在、c言語で行ったプログラムをpythonに変換してプログラムを書こうとしています。
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
3
|
+
目的としている処理はfor文の中で y, s, faiの値を更新していくプログラムです。
|
4
|
+
|
5
|
+
1. 初期値としてxはすべて既知のデータでwの初期値のみが与えられています。
|
6
|
+
|
7
|
+
2. xとwの初期値をもとにyを求める。
|
8
|
+
|
9
|
+
3. yをアークタンジェントとしたものをfaiとします。
|
10
|
+
|
11
|
+
4. yとfaiをプログラムに書かれている式に挿入し次wを求める。
|
12
|
+
|
13
|
+
5. 2~4を繰り返すことでwを更新してゆく
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
図で示しているのは二行に列wの要素の一つを取り出したものです。
|
18
|
+
|
19
|
+
しかし、結果は図のようになり結果が更新されないうえに途中から0に収束しています。
|
20
|
+
|
21
|
+
手順4においてeta以降の数式を定数倍などに変更すると値が上昇することから、配列のいい関係などは間違っていないと思うのですが、解決方法がわかりません。
|
22
|
+
|
23
|
+
まだ、pythonに関しては初心者であるため読みにくいプログラムですが、教えていただけると幸いです。
|
8
24
|
|
9
25
|
|
10
26
|
|
@@ -260,21 +276,15 @@
|
|
260
276
|
|
261
277
|
for i in range(N-1):
|
262
278
|
|
279
|
+
for j in range(2):
|
280
|
+
|
263
|
-
y[
|
281
|
+
y[j][i+1] = w[j][0][i]*x[0][i] + w[j][1][i]*x[1][i]
|
264
|
-
|
265
|
-
|
282
|
+
|
266
|
-
|
267
|
-
fai[
|
283
|
+
fai[j][i+1] = math.atan(y[j][i])
|
268
|
-
|
269
|
-
|
284
|
+
|
270
|
-
|
271
|
-
w[0][
|
285
|
+
w[0][j][i+1] = w[0][j][i] + eta * ((1-fai[0][i]*y[0][i])*w[0][j][i] - fai[0][i]*y[1][i]*w[1][j][i])
|
272
|
-
|
273
|
-
|
286
|
+
|
274
|
-
|
275
|
-
w[1][
|
287
|
+
w[1][j][i+1] = w[1][j][i] + eta * ((1-fai[1][i]*y[1][i])*w[1][j][i] - fai[1][i]*y[0][i]*w[0][j][i])
|
276
|
-
|
277
|
-
w[1][1][i+1] = w[1][1][i] + eta * ((1-fai[1][i]*y[1][i])*w[1][1][i] - fai[1][i]*y[0][i]*w[0][1][i])
|
278
288
|
|
279
289
|
```
|
280
290
|
|