Update docs to match implementation of $build_and_dump_html_index
[maxima.git] / doc / info / ja / lsquares.texi
blobe1607f4402c038dbc008cd9435ed8851e6def3e8
1 @menu
2 * Introduction to lsquares::
3 * Functions and Variables for lsquares::
4 @end menu
6 @c -----------------------------------------------------------------------------
7 @node Introduction to lsquares, Functions and Variables for lsquares, lsquares, lsquares
8 @section Introduction to lsquares
9 @c -----------------------------------------------------------------------------
11 @code{lsquares}は
12 数値データからモデルのパラメータを見積もる
13 最小二乗法を実装するための関数のコレクションです。
15 @opencatbox
16 @category{Statistical estimation}
17 @category{Share packages}
18 @category{Package lsquares}
19 @closecatbox
22 @c -----------------------------------------------------------------------------
23 @node Functions and Variables for lsquares,  , Introduction to lsquares, lsquares
24 @section Functions and Variables for lsquares
25 @c -----------------------------------------------------------------------------
27 @deffn {関数} lsquares_estimates (@var{D}, @var{x}, @var{e}, @var{a})
28 @deffnx {関数} lsquares_estimates (@var{D}, @var{x}, @var{e}, @var{a}, initial = @var{L}, tol = @var{t})
30 最小二乗の方法で決定されるような
31 変数@var{x}と@var{a}の方程式@var{e}を
32 データ@var{D}に最良フィットする
33 パラメータ@var{a}を見積もります。
34 @code{lsquares_estimates}は最初に厳密な解を探し、
35 それが失敗したら、近似的な解を探します。
37 戻り値は
38 形式 @code{[a = ..., b = ..., c = ...]}の等式のリストのリストです。
39 リストのそれぞれの要素は
40 二乗平均誤差の、個別の等価な最小です。
42 データ @var{D}は行列でなければいけません。
43 行それぞれは(文脈によって「レコード」とか「ケース」とか呼ばれる)1つのデータで、
44 列それぞれは
45 すべてのデータに関するある変数の値を含みます。
46 変数のリスト @var{x}は @var{D}の列それぞれの名前を与えます。
47 解析をしない列にも名前を与えます。
49 パラメータのリスト @var{a}は
50 見積もられるパラメータの名前を与えます。
51 方程式 @var{e}は変数 @var{x}と @var{a}に関する式か等式です;
52 もし @var{e}が等式でないなら、
53 @code{@var{e} = 0}と同様に扱われます。
55 @code{lsquares_estimates}の付加引数は
56 等式として指定され、
57 厳密な結果が見つからなかった時
58 数値方法で見積もりを見つけるためにコールされる関数 @code{lbfgs}へそのまま渡されます。
60 もしある厳密解が(@code{solve}を介して)見つけることができるなら、
61 データ @var{D}は非数値を含むかもしれません。
62 しかし、もし厳密解が見つからないなら、
63 @var{D}の要素それぞれは数値でなければいけません。
64 これは
65 数リテラル(整数、有理数、通常の浮動小数点、多倍長浮動小数点)はもちろん、
66 @code{%pi}や@code{%e}のような数値定数を含みます。
67 数値計算は通常の浮動小数点算出で実行されます。
68 他の種類の数値は計算のため、すべて通常の浮動小数点に変換されます。
70 @code{load("lsquares")}はこの関数をロードします。
72 @code{lsquares_estimates_exact},
73 @code{lsquares_estimates_approximate},@*
74 @code{lsquares_mse},
75 @code{lsquares_residuals},
76 @code{lsquares_residual_mse}も参照してください。
78 例:
80 厳密解が見つかる問題。
82 @c ===beg===
83 @c load ("lsquares")$
84 @c M : matrix (
85 @c         [1,1,1], [3/2,1,2], [9/4,2,1], [3,2,2], [2,2,1]);
86 @c lsquares_estimates (
87 @c          M, [z,x,y], (z+D)^2 = A*x+B*y+C, [A,B,C,D]);
88 @c ===end===
89 @example
90 (%i1) load ("lsquares")$
91 (%i2) M : matrix (
92         [1,1,1], [3/2,1,2], [9/4,2,1], [3,2,2], [2,2,1]);
93 @group
94                                   [ 1  1  1 ]
95                                   [         ]
96                                   [ 3       ]
97                                   [ -  1  2 ]
98                                   [ 2       ]
99                                   [         ]
100 (%o2)                             [ 9       ]
101                                   [ -  2  1 ]
102                                   [ 4       ]
103                                   [         ]
104                                   [ 3  2  2 ]
105                                   [         ]
106                                   [ 2  2  1 ]
107 @end group
108 (%i3) lsquares_estimates (
109          M, [z,x,y], (z+D)^2 = A*x+B*y+C, [A,B,C,D]);
110                          59        27      10921        107
111 (%o3)            [[A = - --, B = - --, C = -----, D = - ---]]
112                          16        16      1024         32
113 @end example
115 厳密解が見つからない問題。
116 だから @code{lsquares_estimates}は数値近似に頼ります。
118 @c ===beg===
119 @c load ("lsquares")$
120 @c M : matrix ([1, 1], [2, 7/4], [3, 11/4], [4, 13/4]);
121 @c lsquares_estimates (
122 @c   M, [x,y], y=a*x^b+c, [a,b,c], initial=[3,3,3], iprint=[-1,0]);
123 @c ===end===
124 @example
125 (%i1) load ("lsquares")$
126 (%i2) M : matrix ([1, 1], [2, 7/4], [3, 11/4], [4, 13/4]);
127                                    [ 1  1  ]
128                                    [       ]
129                                    [    7  ]
130                                    [ 2  -  ]
131                                    [    4  ]
132                                    [       ]
133 (%o2)                              [    11 ]
134                                    [ 3  -- ]
135                                    [    4  ]
136                                    [       ]
137                                    [    13 ]
138                                    [ 4  -- ]
139                                    [    4  ]
140 (%i3) lsquares_estimates (
141   M, [x,y], y=a*x^b+c, [a,b,c], initial=[3,3,3], iprint=[-1,0]);
142 (%o3) [[a = 1.387365874920637, b = .7110956639593767, 
143                                         c = - .4142705622439105]]
144 @end example
146 @opencatbox
147 @category{Package lsquares}
148 @category{Numerical methods}
149 @closecatbox
151 @end deffn
153 @deffn {関数} lsquares_estimates_exact (@var{MSE}, @var{a})
155 方程式系を構成し、@code{solve}を介して記号的にそれらを解くことを試みることで、
156 平均二乗誤差 @var{MSE}を最小化する
157 パラメータ @var{a}を見積もります。
158 平均二乗誤差は
159  @code{lsquares_mse}が返すような
160 パラメータ @var{a}の式です。
162 戻り値は
163 形式 @code{[a = ..., b = ..., c = ...]}の等式のリストのリストです。
164 戻り値は、0個か1個、2以上の要素を含むかもしれません。
165 もし複数の要素が返されたら、
166 それぞれは個別の、平均二乗誤差の等価最小を表します。
168 @code{lsquares_estimates},
169 @code{lsquares_estimates_approximate},
170 @code{lsquares_mse},@*
171 @code{lsquares_residuals},
172 @code{lsquares_residual_mse}も参照してください。
174 例:
176 @c ===beg===
177 @c load ("lsquares")$
178 @c M : matrix (
179 @c          [1,1,1], [3/2,1,2], [9/4,2,1], [3,2,2], [2,2,1]);
180 @c mse : lsquares_mse (M, [z, x, y], (z + D)^2 = A*x + B*y + C);
181 @c lsquares_estimates_exact (mse, [A, B, C, D]);
182 @c ===end===
183 @example
184 (%i1) load ("lsquares")$
185 (%i2) M : matrix (
186          [1,1,1], [3/2,1,2], [9/4,2,1], [3,2,2], [2,2,1]);
187                            [ 1  1  1 ]
188                            [         ]
189                            [ 3       ]
190                            [ -  1  2 ]
191                            [ 2       ]
192                            [         ]
193 (%o2)                      [ 9       ]
194                            [ -  2  1 ]
195                            [ 4       ]
196                            [         ]
197                            [ 3  2  2 ]
198                            [         ]
199                            [ 2  2  1 ]
200 (%i3) mse : lsquares_mse (M, [z, x, y], (z + D)^2 = A*x + B*y + C);
201            5
202           ====
203           \                 2                         2
204            >    ((D + M    )  - C - M     B - M     A)
205           /            i, 1          i, 3      i, 2
206           ====
207           i = 1
208 (%o3)     ---------------------------------------------
209                                 5
210 (%i4) lsquares_estimates_exact (mse, [A, B, C, D]);
211                   59        27      10921        107
212 (%o4)     [[A = - --, B = - --, C = -----, D = - ---]]
213                   16        16      1024         32
214 @end example
216 @opencatbox
217 @category{Package lsquares}
218 @closecatbox
220 @end deffn
222 @deffn {関数} lsquares_estimates_approximate (@var{MSE}, @var{a}, initial = @var{L}, tol = @var{t})
224 平均二乗誤差 @var{MSE}を最小化する
225 パラメータ @var{a}を
226 数値最小化関数 @code{lbfgs}を介して
227 見積もります。
228 平均二乗誤差は、
229 @code{lsquares_mse}が返すようなパラメータ @var{a}の式です。
232 @code{lsquares_estimates_approximate}が返す解は
233 平均二乗誤差の(たぶん大域ですが)局所最小値です。
234 @code{lsquares_estimates_exact}との一貫性のため、
235 戻り値は
236 要素1つ、すなわち、形式 @code{[a = ..., b = ..., c = ...]}の等式のリスト
237 を持つ入れ子のリストです。
239 @code{lsquares_estimates_approximate}の付加引数は
240 等式として指定され、
241 数値方法で見積もりを見つけるためにコールされる関数 @code{lbfgs}へそのまま渡されます。
243 パラメータが数値が割り当てられた時
244 @var{MSE}はは数に評価されなければいけません。
245 これは
246 This requires that the data from which 
247 @var{MSE}が構成されるデータが
248 @code{%pi}や@code{%e}、
249 数リテラル(整数、有理数、通常の浮動小数点、多倍長浮動小数点)
250 のような数値定数を含みます。
251 数値計算は通常の浮動小数点算出で実行されます。
252 他の種類の数値は計算のため、すべて通常の浮動小数点に変換されます。
254 @code{load("lsquares")}はこの関数をロードします。
256 @code{lsquares_estimates},
257 @code{lsquares_estimates_exact},
258 @code{lsquares_mse},
259 @code{lsquares_residuals},
260 @code{lsquares_residual_mse}も参照してください。
262 例:
264 @c ===beg===
265 @c load ("lsquares")$
266 @c M : matrix (
267 @c          [1,1,1], [3/2,1,2], [9/4,2,1], [3,2,2], [2,2,1]);
268 @c mse : lsquares_mse (M, [z, x, y], (z + D)^2 = A*x + B*y + C);
269 @c lsquares_estimates_approximate (
270 @c         mse, [A, B, C, D], iprint = [-1, 0]);
271 @c ===end===
272 @example
273 (%i1) load ("lsquares")$
274 (%i2) M : matrix (
275          [1,1,1], [3/2,1,2], [9/4,2,1], [3,2,2], [2,2,1]);
276                            [ 1  1  1 ]
277                            [         ]
278                            [ 3       ]
279                            [ -  1  2 ]
280                            [ 2       ]
281                            [         ]
282 (%o2)                      [ 9       ]
283                            [ -  2  1 ]
284                            [ 4       ]
285                            [         ]
286                            [ 3  2  2 ]
287                            [         ]
288                            [ 2  2  1 ]
289 (%i3) mse : lsquares_mse (M, [z, x, y], (z + D)^2 = A*x + B*y + C);
290            5
291           ====
292           \                 2                         2
293            >    ((D + M    )  - C - M     B - M     A)
294           /            i, 1          i, 3      i, 2
295           ====
296           i = 1
297 (%o3)     ---------------------------------------------
298                                 5
299 (%i4) lsquares_estimates_approximate (
300               mse, [A, B, C, D], iprint = [-1, 0]);
301 (%o4) [[A = - 3.67850494740174, B = - 1.683070351177813, 
302                  C = 10.63469950148635, D = - 3.340357993175206]]
303 @end example
305 @opencatbox
306 @category{Package lsquares}
307 @category{Numerical methods}
308 @closecatbox
310 @end deffn
312 @deffn {関数} lsquares_mse (@var{D}, @var{x}, @var{e})
314 平均二乗誤差 (MSE)、
315 変数 @var{x}の 方程式@var{e}に関する
316 データ @var{D}の和の式を返します。
318 MSEは以下のように定義されます:
320 @tex
321 $${1 \over n} \, \sum_{i=1}^n \left[{\rm lhs}\left(e_i\right) - {\rm rhs}\left(e_i\right)\right]^2,$$
322 @end tex
323 @ifnottex
324 @example
325                     n
326                    ====
327                1   \                        2
328                -    >    (lhs(e ) - rhs(e ))
329                n   /           i         i
330                    ====
331                    i = 1
332 @end example
333 @end ifnottex
335 ここで、 @var{n}はデータ数で、
336 @code{@var{e}[i]}は、
337 @code{i}番目のデータ @code{@var{D}[i]}から値を割り当てられた
338 @var{x}の中の変数に対して評価された方程式 @var{e}です。
340 @code{load("lsquares")}はこの関数をロードします。
342 例:
344 @c ===beg===
345 @c load ("lsquares")$
346 @c M : matrix (
347 @c          [1,1,1], [3/2,1,2], [9/4,2,1], [3,2,2], [2,2,1]);
348 @c mse : lsquares_mse (M, [z, x, y], (z + D)^2 = A*x + B*y + C);
349 @c diff (mse, D);
350 @c ''mse, nouns;
351 @c ===end===
352 @example
353 (%i1) load ("lsquares")$
354 (%i2) M : matrix (
355          [1,1,1], [3/2,1,2], [9/4,2,1], [3,2,2], [2,2,1]);
356                            [ 1  1  1 ]
357                            [         ]
358                            [ 3       ]
359                            [ -  1  2 ]
360                            [ 2       ]
361                            [         ]
362 (%o2)                      [ 9       ]
363                            [ -  2  1 ]
364                            [ 4       ]
365                            [         ]
366                            [ 3  2  2 ]
367                            [         ]
368                            [ 2  2  1 ]
369 @end example
370 @example
371 (%i3) mse : lsquares_mse (M, [z, x, y], (z + D)^2 = A*x + B*y + C);
372            5
373           ====
374           \                 2                         2
375            >    ((D + M    )  - C - M     B - M     A)
376           /            i, 1          i, 3      i, 2
377           ====
378           i = 1
379 (%o3)     ---------------------------------------------
380                                 5
381 @end example
382 @example
383 (%i4) diff (mse, D);
384          5
385         ====
386         \                             2
387       4  >    (D + M    ) ((D + M    )  - C - M     B - M     A)
388         /           i, 1         i, 1          i, 3      i, 2
389         ====
390         i = 1
391 (%o4) ----------------------------------------------------------
392                                   5
393 @end example
394 @example
395 (%i5) ''mse, nouns;
396 @group
397                2                 2         9 2               2
398 (%o5) (((D + 3)  - C - 2 B - 2 A)  + ((D + -)  - C - B - 2 A)
399                                            4
400            2               2         3 2               2
401  + ((D + 2)  - C - B - 2 A)  + ((D + -)  - C - 2 B - A)
402                                      2
403            2             2
404  + ((D + 1)  - C - B - A) )/5
405 @end group
406 @end example
408 @opencatbox
409 @category{Package lsquares}
410 @closecatbox
412 @end deffn
414 @deffn {関数} lsquares_residuals (@var{D}, @var{x}, @var{e}, @var{a})
416 指定されたパラメータ @var{a}とデータ @var{D}での
417 方程式 @var{e}に関する残差を返します。
420 @var{D}は行列で、 @var{x}は変数のリスト、
421 @var{e}は方程式か一般式です;
422 もし方程式でないなら、 @var{e}は
423 @code{@var{e} = 0}であるかのように扱われます。
424 @var{a}は
425 @var{x}を除いた@var{e}の任意の自由変数に値を指定する
426 方程式のリストです。
428 残差は以下のように定義されます:
430 @tex
431 $${\rm lhs}\left(e_i\right) - {\rm rhs}\left(e_i\right),$$
432 @end tex
433 @ifnottex
434 @example
435                         lhs(e ) - rhs(e )
436                              i         i
437 @end example
438 @end ifnottex
440 ここで、
441 @code{@var{e}[i]}は、
442 @var{a}から任意の残りの自由変数を割り当てて、
443 @code{i}番目のデータ @code{@var{D}[i]}から値を割り当てられた
444 @var{x}の中の変数に対して評価された方程式 @var{e}です。
446 @code{load("lsquares")}はこの関数をロードします。
448 例:
450 @c ===beg===
451 @c load ("lsquares")$
452 @c M : matrix (
453 @c          [1,1,1], [3/2,1,2], [9/4,2,1], [3,2,2], [2,2,1]);
454 @c a : lsquares_estimates (
455 @c           M, [z,x,y], (z+D)^2 = A*x+B*y+C, [A,B,C,D]);
456 @c lsquares_residuals (
457 @c           M, [z,x,y], (z+D)^2 = A*x+B*y+C, first(a));
458 @c ===end===
459 @example
460 (%i1) load ("lsquares")$
461 (%i2) M : matrix (
462          [1,1,1], [3/2,1,2], [9/4,2,1], [3,2,2], [2,2,1]);
463                                   [ 1  1  1 ]
464                                   [         ]
465                                   [ 3       ]
466                                   [ -  1  2 ]
467                                   [ 2       ]
468                                   [         ]
469 (%o2)                             [ 9       ]
470                                   [ -  2  1 ]
471                                   [ 4       ]
472                                   [         ]
473                                   [ 3  2  2 ]
474                                   [         ]
475                                   [ 2  2  1 ]
476 (%i3) a : lsquares_estimates (
477           M, [z,x,y], (z+D)^2 = A*x+B*y+C, [A,B,C,D]);
478                          59        27      10921        107
479 (%o3)            [[A = - --, B = - --, C = -----, D = - ---]]
480                          16        16      1024         32
481 (%i4) lsquares_residuals (
482           M, [z,x,y], (z+D)^2 = A*x+B*y+C, first(a));
483                             13    13    13  13  13
484 (%o4)                      [--, - --, - --, --, --]
485                             64    64    32  64  64
486 @end example
488 @opencatbox
489 @category{Package lsquares}
490 @closecatbox
492 @end deffn
494 @deffn {関数} lsquares_residual_mse (@var{D}, @var{x}, @var{e}, @var{a})
496 指定されたパラメータ @var{a}とデータ @var{D}での
497 方程式 @var{e}に関する残差平均二乗誤差を返します。
499 残差MSEは以下のように定義されます:
501 @tex
502 $${1 \over n} \, \sum_{i=1}^n \left[{\rm lhs}\left(e_i\right) - {\rm rhs}\left(e_i\right)\right]^2,$$
503 @end tex
504 @ifnottex
505 @example
506                     n
507                    ====
508                1   \                        2
509                -    >    (lhs(e ) - rhs(e ))
510                n   /           i         i
511                    ====
512                    i = 1
513 @end example
514 @end ifnottex
516 ここで、
517 @code{@var{e}[i]}は、
518 @var{a}から任意の残りの自由変数を割り当てて、
519 @code{i}番目のデータ @code{@var{D}[i]}から値を割り当てられた
520 @var{x}の中の変数に対して評価された方程式 @var{e}です。
522 @code{load("lsquares")}はこの関数をロードします。
524 例:
526 @c ===beg===
527 @c load ("lsquares")$
528 @c M : matrix (
529 @c          [1,1,1], [3/2,1,2], [9/4,2,1], [3,2,2], [2,2,1]);
530 @c a : lsquares_estimates (
531 @c        M, [z,x,y], (z+D)^2 = A*x+B*y+C, [A,B,C,D]);
532 @c lsquares_residual_mse (
533 @c        M, [z,x,y], (z + D)^2 = A*x + B*y + C, first (a));
534 @c ===end===
535 @example
536 (%i1) load ("lsquares")$
537 (%i2) M : matrix (
538          [1,1,1], [3/2,1,2], [9/4,2,1], [3,2,2], [2,2,1]);
539                            [ 1  1  1 ]
540                            [         ]
541                            [ 3       ]
542                            [ -  1  2 ]
543                            [ 2       ]
544                            [         ]
545 (%o2)                      [ 9       ]
546                            [ -  2  1 ]
547                            [ 4       ]
548                            [         ]
549                            [ 3  2  2 ]
550                            [         ]
551                            [ 2  2  1 ]
552 (%i3) a : lsquares_estimates (
553              M, [z,x,y], (z+D)^2 = A*x+B*y+C, [A,B,C,D]);
555                   59        27      10921        107
556 (%o3)     [[A = - --, B = - --, C = -----, D = - ---]]
557                   16        16      1024         32
558 (%i4) lsquares_residual_mse (
559              M, [z,x,y], (z + D)^2 = A*x + B*y + C, first (a));
560                               169
561 (%o4)                         ----
562                               2560
563 @end example
565 @opencatbox
566 @category{Package lsquares}
567 @closecatbox
569 @end deffn
571 @deffn {関数} plsquares (@var{Mat},@var{VarList},@var{depvars})
572 @deffnx {関数} plsquares (@var{Mat},@var{VarList},@var{depvars},@var{maxexpon})
573 @deffnx {関数} plsquares (@var{Mat},@var{VarList},@var{depvars},@var{maxexpon},@var{maxdegree})
574 「最小二乗」法によるデータ表の多変数多項式調整。
575 @var{Mat}はデータを含む行列であり、
576 @var{VarList}は変数名(Mat列それぞれの名前ですが、Mat列を無視する際には変数名の代わりに"-")のリストであり、
577 @var{depvars}は従属変数の名前か、
578 従属変数の1つ以上の名前(その名前@var{VarList}の中になければいけません)のリストであり、
579 @var{maxexpon}はオプションの、独立変数それぞれの最大指数(デフォルト1)であり、
580 @var{maxdegree}はオプションの最大多項式次数(デフォルトで@var{maxexpon})です;
581 それぞれの項の指数の和は@var{maxdegree}以下でなければいけないことに注意してください。
582 もし @code{maxdgree = 0}なら制限は適用されません。
584 もし @var{depvars}が(リストではなく)従属変数の名前なら、
585 @code{plsquares}は調整された多項式を返します。
586 もし @var{depvars}が1つ以上の従属変数のリストなら、
587 @code{plsquares}は調整された多項式のリストを返します。
588 適合度について知らせるために
589 決定係数が表示されます。
590 それは0 (無相関)から1 (厳密相関)までの範囲です。
591 これらの値は
592 グローバル変数 @var{DETCOEF}(もし @var{depvars}がリストならリスト)にも保管されます。
595 多変数線形調整の簡単な例:
596 @example
597 (%i1) load("plsquares")$
599 (%i2) plsquares(matrix([1,2,0],[3,5,4],[4,7,9],[5,8,10]),
600                 [x,y,z],z);
601      Determination Coefficient for z = .9897039897039897
602                        11 y - 9 x - 14
603 (%o2)              z = ---------------
604                               3
605 @end example
607 次数制限のない同じ例:
608 @example
609 (%i3) plsquares(matrix([1,2,0],[3,5,4],[4,7,9],[5,8,10]),
610                 [x,y,z],z,1,0);
611      Determination Coefficient for z = 1.0
612                     x y + 23 y - 29 x - 19
613 (%o3)           z = ----------------------
614                               6
615 @end example
617 N面ポリゴンは何本の対角線を持ちますか?
618 いくつの多項式次数を使うべきですか?
619 @example
620 (%i4) plsquares(matrix([3,0],[4,2],[5,5],[6,9],[7,14],[8,20]),
621                 [N,diagonals],diagonals,5);
622      Determination Coefficient for diagonals = 1.0
623                                 2
624                                N  - 3 N
625 (%o4)              diagonals = --------
626                                   2
627 (%i5) ev(%, N=9);   /* Testing for a 9 sides polygon */
628 (%o5)                 diagonals = 27
629 @end example
631 何通りの方法でn掛けnのチェス盤に2つのクィーンを取られないように置けますか?
632 @example
633 (%i6) plsquares(matrix([0,0],[1,0],[2,0],[3,8],[4,44]),
634                 [n,positions],[positions],4);
635      Determination Coefficient for [positions] = [1.0]
636 @group
637                          4       3      2
638                       3 n  - 10 n  + 9 n  - 2 n
639 (%o6)    [positions = -------------------------]
640                                   6
641 @end group
642 (%i7) ev(%[1], n=8); /* Testing for a (8 x 8) chessboard */
643 (%o7)                positions = 1288
644 @end example
646 6つの従属変数を持つ例:
647 @example
648 (%i8) mtrx:matrix([0,0,0,0,0,1,1,1],[0,1,0,1,1,1,0,0],
649                   [1,0,0,1,1,1,0,0],[1,1,1,1,0,0,0,1])$
650 (%i8) plsquares(mtrx,[a,b,_And,_Or,_Xor,_Nand,_Nor,_Nxor],
651                      [_And,_Or,_Xor,_Nand,_Nor,_Nxor],1,0);
652       Determination Coefficient for
653 [_And, _Or, _Xor, _Nand, _Nor, _Nxor] =
654 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0]
655 (%o2) [_And = a b, _Or = - a b + b + a,
656 _Xor = - 2 a b + b + a, _Nand = 1 - a b,
657 _Nor = a b - b - a + 1, _Nxor = 2 a b - b - a + 1]
658 @end example
660 この関数を使うには、
661 最初に @code{load("lsquares")}を書いてください。
663 @opencatbox
664 @category{Package lsquares}
665 @category{Numerical methods}
666 @closecatbox
668 @end deffn