質問編集履歴

1

内容を追加しました

2021/01/25 07:18

投稿

GAKU_SAY
GAKU_SAY

スコア23

test CHANGED
File without changes
test CHANGED
@@ -6,6 +6,12 @@
6
6
 
7
7
 
8
8
 
9
+ 内容は![イメージ説明](60c124e29c52a614993dd0e5bf972c63.png)
10
+
11
+ の極値を求めるプログラムです.
12
+
13
+
14
+
9
15
  pythonは初心者です.
10
16
 
11
17
 
@@ -48,6 +54,8 @@
48
54
 
49
55
 
50
56
 
57
+ #関数
58
+
51
59
  def function(x):
52
60
 
53
61
  if len(x)!=size:
@@ -74,7 +82,7 @@
74
82
 
75
83
 
76
84
 
77
-
85
+ #ベクトルの足し算
78
86
 
79
87
  def tashizann(x,y):
80
88
 
@@ -84,6 +92,8 @@
84
92
 
85
93
 
86
94
 
95
+ #ベクトルとスカラーの掛け算
96
+
87
97
  def kakezann(x,y):#x:vector, y:scalor
88
98
 
89
99
  ans = []
@@ -96,6 +106,10 @@
96
106
 
97
107
  return ans
98
108
 
109
+
110
+
111
+ #1階微分を数値で行う関数
112
+
99
113
  def get_gradient_vector(x):
100
114
 
101
115
  #1階微分
@@ -134,7 +148,9 @@
134
148
 
135
149
 
136
150
 
151
+ #ベクトルが0のみになったか確認
152
+
137
- def check_sa(x):
153
+ def check(x):
138
154
 
139
155
  for xi in x:
140
156
 
@@ -146,6 +162,8 @@
146
162
 
147
163
 
148
164
 
165
+ #処理
166
+
149
167
  def process_of_GD(number):
150
168
 
151
169
  #最急降下法
@@ -168,9 +186,9 @@
168
186
 
169
187
 
170
188
 
171
- point = [1,1,1,1,1,1]
189
+ #初期値
172
-
190
+
173
- #[random(),random(),random(),random(),random(),random()]
191
+ point = [random(),random(),random(),random(),random(),random()]
174
192
 
175
193
 
176
194
 
@@ -198,6 +216,8 @@
198
216
 
199
217
  while True:
200
218
 
219
+ #プロット用
220
+
201
221
  print((point))
202
222
 
203
223
  n.append(i)
@@ -206,6 +226,8 @@
206
226
 
207
227
 
208
228
 
229
+ #勾配ベクトルの確認
230
+
209
231
  gv = get_gradient_vector(point)
210
232
 
211
233
  if check_sa(gv) == True:
@@ -214,7 +236,9 @@
214
236
 
215
237
  break
216
238
 
239
+
240
+
217
-
241
+ #更新
218
242
 
219
243
  point = tashizann(point, kakezann(gv, -1*eta))
220
244