質問編集履歴
1
内容を追加しました
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
|
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
|
-
|
189
|
+
#初期値
|
172
|
-
|
190
|
+
|
173
|
-
|
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
|
|