-
Notifications
You must be signed in to change notification settings - Fork 0
/
行列.rdr
321 lines (316 loc) · 18.2 KB
/
行列.rdr
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
行列とは
+中身:配列={}
+大きさは,{0,0}。
自分を[他の行列:行列]に左からかける手順
もし大きさ(2)が,他の行列の大きさ(1)でないなら
「かける相手の大きさ(1)が[他の行列の大きさ(2)]なので乗算できません。」というエラーを発生させる。
もし終わり
【計算後】という行列(大きさ(1),他の行列の大きさ(2))を作る。
大きさ(1)回,【現在行】にカウントしながら繰り返す
他の行列の大きさ(2)回,【現在列】にカウントしながら繰り返す
大きさ(2)回,【現在要素】にカウントしながら繰り返す
計算後の中身(現在行,現在列)は,計算後の中身(現在行,現在列)+(中身(現在行,現在要素)×他の行列の中身(現在要素,現在列))。
繰り返し終わり
繰り返し終わり
繰り返し終わり
計算後を返す。
終わり
自分を[他の行列:行列]に右からかける手順
もし大きさ(1)が,他の行列の大きさ(2)でないなら
「かける相手の大きさ(2)が[他の行列の大きさ(2)]なので乗算できません。」というエラーを発生させる。
もし終わり
【計算後】という行列(他の行列の大きさ(1),大きさ(2))を作る。
他の行列の大きさ(1)回,【現在行】にカウントしながら繰り返す
大きさ(2)回,【現在列】にカウントしながら繰り返す
他の行列の大きさ(2)回,【現在要素】にカウントしながら繰り返す
計算後の中身(現在行,現在列)は,計算後の中身(現在行,現在列)+(他の行列の中身(現在行,現在要素)×中身(現在要素,現在列))。
繰り返し終わり
繰り返し終わり
繰り返し終わり
計算後を返す。
終わり
自分に[他の行列:行列]を足す手順
もし(大きさ(1)が他の行列の大きさ(1)でない)または(大きさ(2)が他の行列の大きさ(2))でないなら
「大きさが異なる行列は足せません。」というエラーを発生させる。
もし終わり
【計算後】という行列(大きさ(1),大きさ(2))を作る。
大きさ(1)回,【現在行】にカウントしながら繰り返す
大きさ(2)回,【現在列】にカウントしながら繰り返す
計算後の中身(現在行)(現在列)は,中身(現在行)(現在列)+他の行列の中身(現在行)(現在列)。
繰り返し終わり
繰り返し終わり
計算後を返す。
終わり
自分に[他の行列:行列]を破壊的に足す手順
もし(大きさ(1)が他の行列の大きさ(1)でない)または(大きさ(2)が他の行列の大きさ(2)でない)なら
「大きさが異なる行列は足せません。」というエラーを発生させる。
もし終わり
大きさ(1)回,【現在行】にカウントしながら繰り返す
大きさ(2)回,【現在列】にカウントしながら繰り返す
中身(現在行)(現在列)は,中身(現在行)(現在列)+他の行列の中身(現在行)(現在列)。
繰り返し終わり
繰り返し終わり
終わり
自分に[他の行列:行列]を全部足す手順
【関係筋】は,{大きさ(1),大きさ(2),他の行列の大きさ(1),他の行列の大きさ(2)}。
もし関係筋(1)が関係筋(3)かつ1が関係筋(4)なら
【計算後】という行列(大きさ(1),大きさ(2))を作る。
大きさ(1)回,【現在行】にカウントしながら繰り返す
大きさ(2)回,【現在列】にカウントしながら繰り返す
計算後の中身(現在行)(現在列)は,中身(現在行)(現在列)+他の行列の中身(現在行)(1)。
繰り返し終わり
繰り返し終わり
計算後を返す。
もし終わり
もし関係筋(2)が関係筋(4)かつ1が関係筋(3)なら
【計算後】という行列(大きさ(1),大きさ(2))を作る。
大きさ(1)回,【現在行】にカウントしながら繰り返す
大きさ(2)回,【現在列】にカウントしながら繰り返す
計算後の中身(現在行)(現在列)は,中身(現在行)(現在列)+他の行列の中身(1)(現在列)。
繰り返し終わり
繰り返し終わり
計算後を返す。
もし終わり
「行列の大きさがおかしいので足せません。」というエラーを発生させる。
終わり
自分に[数:浮動小数]を全部足す手順
【計算後】という行列(大きさ(1),大きさ(2))を作る。
大きさ(1)回,【現在行】にカウントしながら繰り返す
大きさ(2)回,【現在列】にカウントしながら繰り返す
計算後の中身(現在行)(現在列)は,中身(現在行)(現在列)+数。
繰り返し終わり
繰り返し終わり
計算後を返す。
終わり
自分から[他の行列:行列]を引く手順
もし(大きさ(1)が他の行列の大きさ(1)でない)または(大きさ(2)が他の行列の大きさ(2)でない)なら
「大きさが異なる行列は引けません。」というエラーを発生させる。
もし終わり
【計算後】という行列(大きさ(1),大きさ(2))を作る。
大きさ(1)回,【現在行】にカウントしながら繰り返す
大きさ(2)回,【現在列】にカウントしながら繰り返す
計算後の中身(現在行)(現在列)は,中身(現在行)(現在列)-他の行列の中身(現在行)(現在列)。
繰り返し終わり
繰り返し終わり
計算後を返す。
終わり
自分から[他の行列:行列]を破壊的に引く手順
もし(大きさ(1)が他の行列の大きさ(1)でない)または(大きさ(2)が他の行列の大きさ(2)でない)なら
「大きさが異なる行列は引けません。」というエラーを発生させる。
もし終わり
大きさ(1)回,【現在行】にカウントしながら繰り返す
大きさ(2)回,【現在列】にカウントしながら繰り返す
中身(現在行)(現在列)は,中身(現在行)(現在列)-他の行列の中身(現在行)(現在列)。
繰り返し終わり
繰り返し終わり
終わり
自分から[他の行列:行列]を全部引く手順
【関係筋】は,{大きさ(1),大きさ(2),他の行列の大きさ(1),他の行列の大きさ(2)}。
もし関係筋(1)が関係筋(3)かつ1が関係筋(4)なら
【計算後】という行列(大きさ(1),大きさ(2))を作る。
大きさ(1)回,【現在行】にカウントしながら繰り返す
大きさ(2)回,【現在列】にカウントしながら繰り返す
計算後の中身(現在行)(現在列)は,中身(現在行)(現在列)-他の行列の中身(現在行)(1)。
繰り返し終わり
繰り返し終わり
計算後を返す。
もし終わり
もし関係筋(2)が関係筋(4)かつ1が関係筋(3)なら
【計算後】という行列(大きさ(1),大きさ(2))を作る。
大きさ(1)回,【現在行】にカウントしながら繰り返す
大きさ(2)回,【現在列】にカウントしながら繰り返す
計算後の中身(現在行)(現在列)は,中身(現在行)(現在列)-他の行列の中身(1)(現在列)。
繰り返し終わり
繰り返し終わり
計算後を返す。
もし終わり
「行列の大きさがおかしいので引けません。」というエラーを発生させる。
終わり
自分から[数:浮動小数]を全部引く手順
【計算後】という行列(大きさ(1),大きさ(2))を作る。
大きさ(1)回,【現在行】にカウントしながら繰り返す
大きさ(2)回,【現在列】にカウントしながら繰り返す
計算後の中身(現在行)(現在列)は,中身(現在行)(現在列)-数。
繰り返し終わり
繰り返し終わり
計算後を返す。
終わり
自分に[他の行列:行列]をかける手順
もし(大きさ(1)が他の行列の大きさ(1)でない)または(大きさ(2)が他の行列の大きさ(2)でない)なら
「行列の大きさがおかしいのでかけられません。」というエラーを発生させる。
もし終わり
【計算後】という行列(大きさ(1),大きさ(2))を作る。
大きさ(1)回,【現在行】にカウントしながら繰り返す
大きさ(2)回,【現在列】にカウントしながら繰り返す
計算後の中身(現在行)(現在列)は,中身(現在行)(現在列)×他の行列の中身(現在行)(現在列)。
繰り返し終わり
繰り返し終わり
計算後を返す。
終わり
自分に[他の行列:行列]を全部かける手順
【関係筋】は,{大きさ(1),大きさ(2),他の行列の大きさ(1),他の行列の大きさ(2)}。
もし(関係筋(1)が関係筋(3)でない)または(1が関係筋(4)でない)なら
「行列の大きさがおかしいのでかけられません。」というエラーを発生させる。
もし終わり
【計算後】という行列(大きさ(1),大きさ(2))を作る。
大きさ(1)回,【現在行】にカウントしながら繰り返す
大きさ(2)回,【現在列】にカウントしながら繰り返す
計算後の中身(現在行)(現在列)は,中身(現在行)(現在列)×他の行列の中身(現在行)(1)。
繰り返し終わり
繰り返し終わり
計算後を返す。
終わり
自分に[数:数値]を全部かける手順
【計算後】という行列(大きさ(1),大きさ(2))を作る。
大きさ(1)回,【現在行】にカウントしながら繰り返す
大きさ(2)回,【現在列】にカウントしながら繰り返す
計算後の中身(現在行)(現在列)は,中身(現在行)(現在列)×数。
繰り返し終わり
繰り返し終わり。
計算後を返す。
終わり
自分を[他の行列:行列]で全部割る手順
【関係筋】は,{大きさ(1),大きさ(2),他の行列の大きさ(1),他の行列の大きさ(2)}。
もし(関係筋(1)が関係筋(3)でない)または(1が関係筋(4)でない)なら
「行列の大きさがおかしいので割れません。」というエラーを発生させる。
もし終わり
【計算後】という行列(大きさ(1),大きさ(2))を作る。
大きさ(1)回,【現在行】にカウントしながら繰り返す
大きさ(2)回,【現在列】にカウントしながら繰り返す
計算後の中身(現在行)(現在列)は,中身(現在行)(現在列)÷他の行列の中身(現在行)(1)。
繰り返し終わり
繰り返し終わり
計算後を返す。
終わり
自分を[数:浮動小数]で全部割る手順
【計算後】という行列(大きさ(1),大きさ(2))を作る。
大きさ(1)回,【現在行】にカウントしながら繰り返す
大きさ(2)回,【現在列】にカウントしながら繰り返す
計算後の中身(現在行)(現在列)は,中身(現在行)(現在列)÷数。
繰り返し終わり
繰り返し終わり
計算後を返す。
終わり
はじめ(行,列)の手順
行回,【現在行】にカウントして繰り返す
【一行】は,{}。
列回,【現在列】にカウントして繰り返す
一行(現在列)は,0.0。
繰り返し終わり
中身(現在行)は,一行。
繰り返し終わり
大きさは,{行,列}。
終わり
自分を転置する手順:行列
【計算後】という行列(大きさ(2),大きさ(1))を作る。
大きさ(1)回,【元の行】にカウントしながら繰り返す
大きさ(2)回,【元の列】にカウントしながら繰り返す
計算後の中身(元の列)(元の行)は,中身(元の行)(元の列)。
繰り返し終わり
繰り返し終わり
計算後を返す。
終わり
各列の和を取得する手順
【計算後】という行列(1,大きさ(2))を作る。
大きさ(1)回,【現在行】にカウントしながら繰り返す
大きさ(2)回,【現在列】にカウントしながら繰り返す
計算後の中身(1)(現在列)は,計算後の中身(1)(現在列)+中身(現在行)(現在列)。
繰り返し終わり
繰り返し終わり
計算後を返す。
終わり
各行の和を取得する手順
【計算後】という行列(大きさ(1),1)を作る。
大きさ(1)回,【現在行】にカウントしながら繰り返す
大きさ(2)回,【現在列】にカウントしながら繰り返す
計算後の中身(現在行)(1)は,計算後の中身(現在行)(1)+中身(現在行)(現在列)。
繰り返し終わり
繰り返し終わり
計算後を返す。
終わり
最大値を取得する手順
【計算後】という行列(大きさ(1),1)を作る。
大きさ(1)回,【現在行】にカウントしながら繰り返す
大きさ(2)回,【現在列】にカウントしながら繰り返す
もし中身(現在行)(現在列)が計算後の中身(現在行)(1)より大きいなら
計算後の中身(現在行)(1)は,中身(現在行)(現在列)。
もし終わり
繰り返し終わり
繰り返し終わり
計算後を返す。
終わり
最小値を取得する手順
【計算後】という行列(大きさ(1),1)を作る。
大きさ(1)回,【現在行】にカウントしながら繰り返す
大きさ(2)回,【現在列】にカウントしながら繰り返す
もし中身(現在行)(現在列)が計算後の中身(現在行)(1)より小さいなら
計算後の中身(現在行)(1)は,中身(現在行)(現在列)。
もし終わり
繰り返し終わり
繰り返し終わり
計算後を返す。
終わり
自分を表示する手順
中身を,【一行】へそれぞれ繰り返す
一行を「,」で繋げたものをコンソールへ表示して改行する。
繰り返し終わり
終わり
自分をランダム化する手順
大きさ(1)回,【現在行】にカウントしながら繰り返す
大きさ(2)回,【現在列】にカウントしながら繰り返す
中身(現在行)(現在列)は,10000の乱数÷10000。
繰り返し終わり
繰り返し終わり
終わり
最大値となる添字を取得する手順
【計算後】という行列(大きさ(1),1)を作る。
大きさ(1)回,【現在行】にカウントしながら繰り返す
【最大値】
【最大値添字】
大きさ(2)回,【現在列】にカウントしながら繰り返す
もし中身(現在行)(現在列)が,最大値より大きいなら
最大値は,中身(現在行)(現在列)。
最大値添字は,現在列。
もし終わり。
繰り返し終わり
計算後の中身(現在行)(1)は,最大値添字。
繰り返し終わり
計算後を返す。
終わり
自分を【相手:行列】で比較する手順
【正解数】は,0。
相手の大きさ(2)回,【現在列】にカウントして繰り返す
もし自分の中身(1)(現在列)が相手の中身(1)(現在列)なら
正解数へ1を足す。
もし終わり
繰り返し終わり
正解数÷相手の大きさ(2)を返す。
終わり
終わり
【X:行列】を指数関数で処理する手順
【計算後】という行列(Xの大きさ(1),Xの大きさ(2))を作る。
Xの大きさ(1)回,【現在行】にカウントして繰り返す
Xの大きさ(2)回,【現在列】にカウントして繰り返す
計算後の中身(現在行)(現在列)は,(Xの中身(現在行)(現在列)+0.0)の自然対数乗。
繰り返し終わり
繰り返し終わり
計算後を返す。
終わり
【X:行列】を対数関数で処理する手順
【計算後】という行列(Xの大きさ(1),Xの大きさ(2))を作る。
Xの大きさ(1)回,【現在行】にカウントして繰り返す
Xの大きさ(2)回,【現在列】にカウントして繰り返す
計算後の中身(現在行)(現在列)は,1の自然対数乗でXの中身(現在行)(現在列)の対数。
繰り返し終わり
繰り返し終わり
計算後を返す。
終わり
【X:行列】をソフトマックスで処理する手順
【計算後】という行列(Xの大きさ(1),Xの大きさ(2))を作る。
【分子】という行列(Xの大きさ(1),Xの大きさ(2))を作る。
【分母】という行列(Xの大きさ(1),1)を作る。
【C】は,Xの最大値。
分子は,XからCを全部引いたものを指数関数で処理したもの。
分母は,分子の各行の和。
分子を分母で全部割ったものを返す。
終わり