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