Examples cleanup
[maxima.git] / doc / info / ja / Numerical.texi
blobd9b9faea4047f3cefff1da9b035d8d1f742f1399
1 @menu
2 * Introduction to fast Fourier transform::                     
3 * Functions and Variables for fast Fourier transform::
4 * Introduction to Fourier series::
5 * Functions and Variables for Fourier series::
6 @end menu
8 @c -----------------------------------------------------------------------------
9 @node Introduction to fast Fourier transform, Functions and Variables for fast Fourier transform, Numerical, Numerical
10 @section Introduction to fast Fourier transform
11 @c -----------------------------------------------------------------------------
13 @code{fft}パッケージは、高速Fourier変換の(数式計算ではなく)数値計算に関する関数を含みます。
15 @opencatbox
16 @category{Fourier transform} @category{Numerical methods} @category{Share packages} @category{Package fft}
17 @closecatbox
19 @c end concepts Numerical
21 @c -----------------------------------------------------------------------------
22 @node Functions and Variables for fast Fourier transform, Introduction to Fourier series, Introduction to fast Fourier transform, Numerical
23 @section Functions and Variables for fast Fourier transform
24 @c -----------------------------------------------------------------------------
26 @c -----------------------------------------------------------------------------
27 @anchor{polartorect}
28 @deffn {関数} polartorect (@var{r}, @var{t})
30 形式@code{r %e^(%i t)}の複素値を形式@code{a + b %i}に変換します。
31 ここで、@var{r}は大きさで、@var{t}は位相です。
32 @var{r}と@var{t}は、同じサイズの1次元配列です。
33 配列のサイズは2のべき乗である必要はありません。
35 関数が戻ると、入力配列の元の値は、実部@code{a}と虚部@code{b}に置き換えられます。
36 出力は、以下のように計算されます。
38 @example
39 a = r cos(t)
40 b = r sin(t)
41 @end example
43 @code{polartorect}は、@code{recttopolar}の逆関数です。
45 @code{load(fft)}はこの関数をロードします。
46 @code{fft}も参照してください。
48 @opencatbox
49 @category{Package fft} @category{Complex variables}
50 @closecatbox
51 @end deffn
53 @c -----------------------------------------------------------------------------
54 @anchor{recttopolar}
55 @deffn {関数} recttopolar (@var{a}, @var{b})
57 形式@code{a + b %i}の複素値を形式@code{r %e^(%i t)}に変換します。
58 ここで、@var{a}は実部で、@var{b}は虚部です。
59 @var{a}と@var{b}は同じサイズの1次元配列です。
60 配列のサイズは2のべき乗である必要はありません。
62 関数が戻ると、入力配列の元の値は、大きさ@code{r}と偏角@code{t}に置き換えられます。
63 出力は、以下のように計算されます。
65 @example
66 r = sqrt(a^2 + b^2)
67 t = atan2(b, a)
68 @end example
70 計算された偏角は、@code{-%pi}から@code{%pi}の範囲の中にあります。
72 @code{recttopolar}は@code{polartorect}の逆関数です。
74 @code{load(fft)}はこの関数をロードします。
75 @code{fft}も参照してください。
77 @opencatbox
78 @category{Package fft} @category{Complex variables}
79 @closecatbox
80 @end deffn
82 @c -----------------------------------------------------------------------------
83 @anchor{inverse_fft}
84 @deffn {関数} inverse_fft (@var{y})
86 複素逆高速Fourier変換を計算します。
87 @var{y}は、変換されるデータを含むリストもしくは配列です。
88 要素の数は2のべき乗でなければいけません。
89 要素は、数リテラル(整数、有理数、浮動小数点、多倍長浮動小数点)、シンボル定数、
90 もしくは、@code{a}と@code{b}が数リテラルもしくはシンボル定数である式@code{a + b*%i}
91 でなければいけません。
93 @code{inverse_fft}は、@var{y}と同じタイプの新しいオブジェクトを返します。
94 @var{y}は変更されません。
95 結果はいつも浮動小数点、もしくは@code{a}と@code{b}が浮動小数点であるところの式
96 @code{a + b*%i}として計算されます。
98 逆離散Fourier変換は、以下のように定義されます。
99 @code{x}を逆変換の出力とします。
100 @code{j}が0から@code{n - 1}まで変わる中、
102 @example
103 x[j] = sum(y[k] exp(+2 %i %pi j k / n), k, 0, n - 1)
104 @end example
106 @code{load(fft)}はこの関数をロードします。
108 @code{fft} (正変換), @code{recttopolar}, @code{polartorect}も参照してください。
110 例:
112 実数データ。
114 @c ===beg===
115 @c load (fft) $
116 @c fpprintprec : 4 $
117 @c L : [1, 2, 3, 4, -1, -2, -3, -4] $
118 @c L1 : inverse_fft (L);
119 @c L2 : fft (L1);
120 @c lmax (abs (L2 - L));
121 @c ===end===
122 @example
123 (%i1) load (fft) $
124 (%i2) fpprintprec : 4 $
125 (%i3) L : [1, 2, 3, 4, -1, -2, -3, -4] $
126 (%i4) L1 : inverse_fft (L);
127 (%o4) [0.0, 14.49 %i - .8284, 0.0, 2.485 %i + 4.828, 0.0, 
128                        4.828 - 2.485 %i, 0.0, - 14.49 %i - .8284]
129 (%i5) L2 : fft (L1);
130 (%o5) [1.0, 2.0 - 2.168L-19 %i, 3.0 - 7.525L-20 %i, 
131 4.0 - 4.256L-19 %i, - 1.0, 2.168L-19 %i - 2.0, 
132 7.525L-20 %i - 3.0, 4.256L-19 %i - 4.0]
133 (%i6) lmax (abs (L2 - L));
134 (%o6)                       3.545L-16
135 @end example
137 複素数データ
139 @c ===beg===
140 @c load (fft) $
141 @c fpprintprec : 4 $
142 @c L : [1, 1 + %i, 1 - %i, -1, -1, 1 - %i, 1 + %i, 1] $
143 @c L1 : inverse_fft (L);
144 @c L2 : fft (L1);
145 @c lmax (abs (L2 - L));
146 @c ===end===
147 @example
148 (%i1) load (fft) $
149 (%i2) fpprintprec : 4 $                 
150 (%i3) L : [1, 1 + %i, 1 - %i, -1, -1, 1 - %i, 1 + %i, 1] $
151 (%i4) L1 : inverse_fft (L);
152 (%o4) [4.0, 2.711L-19 %i + 4.0, 2.0 %i - 2.0, 
153 - 2.828 %i - 2.828, 0.0, 5.421L-20 %i + 4.0, - 2.0 %i - 2.0, 
154 2.828 %i + 2.828]
155 (%i5) L2 : fft (L1);
156 (%o5) [4.066E-20 %i + 1.0, 1.0 %i + 1.0, 1.0 - 1.0 %i, 
157 1.55L-19 %i - 1.0, - 4.066E-20 %i - 1.0, 1.0 - 1.0 %i, 
158 1.0 %i + 1.0, 1.0 - 7.368L-20 %i]
159 (%i6) lmax (abs (L2 - L));                    
160 (%o6)                       6.841L-17
161 @end example
163 @opencatbox
164 @category{Package fft}
165 @closecatbox
166 @end deffn
168 @c -----------------------------------------------------------------------------
169 @anchor{fft}
170 @deffn {関数} fft (@var{x})
172 複素高速Fourier変換を計算します。
173 @var{x}は、変換されるデータを含むリストもしくは配列です。
174 要素の数は2のべき乗でなければいけません。
175 要素は、数リテラル(整数、有理数、浮動小数点、多倍長浮動小数点)、シンボル定数、
176 もしくは、@code{a}と@code{b}が数リテラルもしくはシンボル定数である式@code{a + b*%i}
177 でなければいけません。
179 @code{fft}は、@var{x}と同じタイプの新しいオブジェクトを返します。
180 @var{x}は変更されません。
181 結果はいつも浮動小数点、もしくは@code{a}と@code{b}が浮動小数点であるところの式
182 @code{a + b*%i}として計算されます。
184 離散Fourier変換は、以下のように定義されます。
185 @code{y}を変換の出力とします。
186 @code{k}が0から@code{n - 1}まで変わる中、
188 @example
189 y[k] = (1/n) sum(x[j] exp(-2 %i %pi j k / n), j, 0, n - 1)
190 @end example
192 データ@var{x}が実数の時、
193 実係数@code{a}と@code{b}は以下のように計算することができます。
194 @example
195 x[j] = sum(a[k]*cos(2*%pi*j*k/n)+b[k]*sin(2*%pi*j*k/n), k, 0, n/2)
196 @end example
198 ここで、
200 @example
201 a[0] = realpart (y[0])
202 b[0] = 0
203 @end example
205 そして、@code{k}が1からn/2 - 1まで変わる中、
207 @example
208 a[k] = realpart (y[k] + y[n - k])
209 b[k] = imagpart (y[n - k] - y[k])
210 @end example
212 そして、
214 @example
215 a[n/2] = realpart (y[n/2])
216 b[n/2] = 0
217 @end example
219 @code{load(fft)}はこの関数をロードします。
221 @code{inverse_fft} (逆変換), @code{recttopolar}, @code{polartorect}も参照してください。
223 例:
225 実数データ。
227 @c ===beg===
228 @c load (fft) $
229 @c fpprintprec : 4 $
230 @c L : [1, 2, 3, 4, -1, -2, -3, -4] $
231 @c L1 : fft (L);
232 @c L2 : inverse_fft (L1);
233 @c lmax (abs (L2 - L));
234 @c ===end===
235 @example
236 (%i1) load (fft) $
237 (%i2) fpprintprec : 4 $
238 (%i3) L : [1, 2, 3, 4, -1, -2, -3, -4] $
239 (%i4) L1 : fft (L);
240 (%o4) [0.0, - 1.811 %i - .1036, 0.0, .6036 - .3107 %i, 0.0, 
241                          .3107 %i + .6036, 0.0, 1.811 %i - .1036]
242 (%i5) L2 : inverse_fft (L1);
243 (%o5) [1.0, 2.168L-19 %i + 2.0, 7.525L-20 %i + 3.0, 
244 4.256L-19 %i + 4.0, - 1.0, - 2.168L-19 %i - 2.0, 
245 - 7.525L-20 %i - 3.0, - 4.256L-19 %i - 4.0]
246 (%i6) lmax (abs (L2 - L));
247 (%o6)                       3.545L-16
248 @end example
250 複素数データ
252 @c ===beg===
253 @c load (fft) $
254 @c fpprintprec : 4 $
255 @c L : [1, 1 + %i, 1 - %i, -1, -1, 1 - %i, 1 + %i, 1] $
256 @c L1 : fft (L);
257 @c L2 : inverse_fft (L1);
258 @c lmax (abs (L2 - L));
259 @c ===end===
260 @example
261 (%i1) load (fft) $
262 (%i2) fpprintprec : 4 $
263 (%i3) L : [1, 1 + %i, 1 - %i, -1, -1, 1 - %i, 1 + %i, 1] $
264 (%i4) L1 : fft (L);
265 (%o4) [0.5, .3536 %i + .3536, - 0.25 %i - 0.25, 
266 0.5 - 6.776L-21 %i, 0.0, - .3536 %i - .3536, 0.25 %i - 0.25, 
267 0.5 - 3.388L-20 %i]
268 (%i5) L2 : inverse_fft (L1);
269 (%o5) [1.0 - 4.066E-20 %i, 1.0 %i + 1.0, 1.0 - 1.0 %i, 
270 - 1.008L-19 %i - 1.0, 4.066E-20 %i - 1.0, 1.0 - 1.0 %i, 
271 1.0 %i + 1.0, 1.947L-20 %i + 1.0]
272 (%i6) lmax (abs (L2 - L));
273 (%o6)                       6.83L-17
274 @end example
276 サインとコサイン係数の計算。
278 @c ===beg===
279 @c load (fft) $
280 @c fpprintprec : 4 $
281 @c L : [1, 2, 3, 4, 5, 6, 7, 8] $
282 @c n : length (L) $
283 @c x : make_array (any, n) $
284 @c fillarray (x, L) $
285 @c y : fft (x) $
286 @c a : make_array (any, n/2 + 1) $
287 @c b : make_array (any, n/2 + 1) $
288 @c a[0] : realpart (y[0]) $
289 @c b[0] : 0 $
290 @c for k : 1 thru n/2 - 1 do
291 @c    (a[k] : realpart (y[k] + y[n - k]),
292 @c     b[k] : imagpart (y[n - k] - y[k]));
293 @c a[n/2] : y[n/2] $
294 @c b[n/2] : 0 $
295 @c listarray (a);
296 @c listarray (b);
297 @c f(j) := sum (a[k] * cos (2*%pi*j*k / n) + b[k] * sin (2*%pi*j*k / n), k, 0, n/2) $
298 @c makelist (float (f (j)), j, 0, n - 1);
299 @c ===end===
300 @example
301 (%i1) load (fft) $
302 (%i2) fpprintprec : 4 $
303 (%i3) L : [1, 2, 3, 4, 5, 6, 7, 8] $
304 (%i4) n : length (L) $
305 (%i5) x : make_array (any, n) $
306 (%i6) fillarray (x, L) $
307 (%i7) y : fft (x) $
308 (%i8) a : make_array (any, n/2 + 1) $
309 (%i9) b : make_array (any, n/2 + 1) $
310 (%i10) a[0] : realpart (y[0]) $
311 (%i11) b[0] : 0 $
312 (%i12) for k : 1 thru n/2 - 1 do
313    (a[k] : realpart (y[k] + y[n - k]),
314     b[k] : imagpart (y[n - k] - y[k]));
315 (%o12)                        done
316 (%i13) a[n/2] : y[n/2] $
317 (%i14) b[n/2] : 0 $
318 (%i15) listarray (a);
319 (%o15)          [4.5, - 1.0, - 1.0, - 1.0, - 0.5]
320 (%i16) listarray (b);
321 (%o16)           [0, - 2.414, - 1.0, - .4142, 0]
322 (%i17) f(j) := sum (a[k]*cos(2*%pi*j*k/n) + b[k]*sin(2*%pi*j*k/n), 
323                     k, 0, n/2) $
324 (%i18) makelist (float (f (j)), j, 0, n - 1);
325 (%o18)      [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0]
326 @end example
328 @opencatbox
329 @category{Package fft}
330 @closecatbox
331 @end deffn
333 @c -----------------------------------------------------------------------------
334 @anchor{fortindent}
335 @defvr {オプション変数} fortindent
336 デフォルト値: 0
338 @code{fortindent}は、@code{fortran}コマンドが表示する式の
339 式の左マージンインデントを制御します。
340 0は、標準のプリントアウト(すなわち6スペース)を与え、
341 正の値は、式を更に右に印字するようにします。
343 @opencatbox
344 @category{Translation and compilation}
345 @closecatbox
346 @end defvr
348 @c -----------------------------------------------------------------------------
349 @anchor{fortran}
350 @deffn {関数} fortran (@var{expr})
352 Fortran文として@var{expr}を印字します。
353 出力行は、スペースでインデントされます。
354 もし行が長過ぎるなら、
355 @code{fortran}は継続行を印字します。
356 @code{fortran}は、指数演算子@code{^}を@code{**}として印字し、
357 複素数@code{a + b %i}を形式@code{(a,b)}で印字します。
359 @var{expr}は等式も取り、もしそうなら、@code{fortran}は、
360 等式の右辺を左辺に割り当てる割り当て文を印字します。
361 特に、もし@var{expr}の右辺が行列名なら、
362 @code{fortran}は、行列の要素それぞれに対する割り当て文を印字します。
364 もし@var{expr}が@code{fortran}が認識する何かでないなら、
365 エラーなしに、式が@code{grind}フォーマットで印字されます。
366 @code{fortran}は、リスト、配列、関数について知りません。
368 @code{fortindent}は、@code{fortran}コマンドが表示する式の
369 式の左マージンインデントを制御します。
370 0は、標準のプリントアウト(すなわち6スペース)を与え、
371 正の値は、式を更に右に印字するようにします。
373 @code{fortspaces}が@code{true}の時、
374 @code{fortran}は、印字行それぞれを80カラムまでスペースで埋めます。
376 @code{fortran}は引数を評価します;
377 引数のクォートは評価を無効にします。
378 @code{fortran}はいつも@code{done}を返します。
380 例:
382 @verbatim
383 (%i1) expr: (a + b)^12$
384 (%i2) fortran (expr);
385       (b+a)**12                                                                 
386 (%o2)                         done
387 (%i3) fortran ('x=expr);
388       x = (b+a)**12                                                             
389 (%o3)                         done
390 (%i4) fortran ('x=expand (expr));
391       x = b**12+12*a*b**11+66*a**2*b**10+220*a**3*b**9+495*a**4*b**8+792
392      1   *a**5*b**7+924*a**6*b**6+792*a**7*b**5+495*a**8*b**4+220*a**9*b
393      2   **3+66*a**10*b**2+12*a**11*b+a**12
394 (%o4)                         done
395 (%i5) fortran ('x=7+5*%i);
396       x = (7,5)                                                                 
397 (%o5)                         done
398 (%i6) fortran ('x=[1,2,3,4]);
399       x = [1,2,3,4]                                                             
400 (%o6)                         done
401 (%i7) f(x) := x^2$
402 (%i8) fortran (f);
403       f                                                                         
404 (%o8)                         done
405 @end verbatim
407 @opencatbox
408 @category{Translation and compilation}
409 @closecatbox
410 @end deffn
412 @c -----------------------------------------------------------------------------
413 @anchor{fortspaces}
414 @defvr {オプション変数} fortspaces
415 デフォルト値: @code{false}
417 @code{fortspaces}が@code{true}の時、
418 @code{fortran}は、印字行それぞれを80カラムまでスペースで埋めます。
420 @opencatbox
421 @category{Translation and compilation}
422 @closecatbox
423 @end defvr
425 @c -----------------------------------------------------------------------------
426 @anchor{horner}
427 @deffn  {関数} horner (@var{expr}, @var{x})
428 @deffnx {関数} horner (@var{expr})
430 Horner規則に従って、もし指定されないなら@var{x}を主変数として使い、
431 @var{expr}の再配列された表現を返します。
432 @code{x}は、@var{expr}の標準有理式形の主変数が使われる場合には、省略できます。
434 もし@code{expr}が数値的に評価されるものなら、
435 @code{horner}は、時々、安定性が改善されます。
436 また、もしMaximaがFortranで走らせるプログラムを生成するのに使われるなら、
437 役に立ちます。
438 @code{stringout}も参照してください。
440 @example
441 (%i1) expr: 1e-155*x^2 - 5.5*x + 5.2e155;
442                            2
443 (%o1)            1.0E-155 x  - 5.5 x + 5.2E+155
444 (%i2) expr2: horner (%, x), keepfloat: true;
445 (%o2)            (1.0E-155 x - 5.5) x + 5.2E+155
446 (%i3) ev (expr, x=1e155);
447 Maxima encountered a Lisp error:
449  floating point overflow
451 Automatically continuing.
452 To reenable the Lisp debugger set *debugger-hook* to nil.
453 (%i4) ev (expr2, x=1e155);
454 (%o4)                       7.0E+154
455 @end example
457 @opencatbox
458 @category{Numerical methods}
459 @closecatbox
460 @end deffn
462 @c -----------------------------------------------------------------------------
463 @anchor{find_root}
464 @anchor{bf_find_root}
465 @anchor{find_root_error}
466 @anchor{find_root_abs}
467 @anchor{find_root_rel}
468 @deffn  {関数} find_root (@var{expr}, @var{x}, @var{a}, @var{b}, [@var{abserr}, @var{relerr}])
469 @deffnx {関数} find_root (@var{f}, @var{a}, @var{b}, [@var{abserr}, @var{relerr}])
470 @deffnx {関数} bf_find_root (@var{expr}, @var{x}, @var{a}, @var{b}, [@var{abserr}, @var{relerr}])
471 @deffnx {関数} bf_find_root (@var{f}, @var{a}, @var{b}, [@var{abserr}, @var{relerr}])
472 @deffnx {オプション変数} find_root_error
473 @deffnx {オプション変数} find_root_abs
474 @deffnx {オプション変数} find_root_rel
476 式@var{expr}もしくは関数@var{f}の根を、閉区間@math{[@var{a}, @var{b}]}上で見つけます。
477 式@var{expr}は等式でも問題ありません。
478 その場合、@code{find_root}は@code{lhs(@var{expr}) - rhs(@var{expr})}の根を探します。
480 Maximaは@var{expr}もしくは@var{f}を@math{[@var{a}, @var{b}]}上で評価可能であり、
481 @var{expr}もしくは@var{f}は連続と仮定して、@code{find_root}は根もしくは、
482 もし複数の根があるなら、根の1つを見つけることを保証します。
484 @code{find_root}は初め、2分木探索を適用します。
485 もし対象の関数が十分滑らかなら,@code{find_root}は代わりに線形内挿を適用します。
487 @code{f_find_root}は@code{find_root}の多倍長浮動小数点版です。
488 関数は多倍長浮動小数点数値を使って計算され、多倍長浮動小数点の結果が返されます。
489 そうでなければ、@code{bf_find_root}は@code{find_root}と同一で、以下の記述は@code{bf_find_root}に同様に適用されます。
491 @code{find_root}の精度は@code{abserr}と@code{relerr}に支配されます。
492 それらは@code{fine_root}へのオプションのキーワード引数です。
493 これらのキーワード引数は形式@code{key=val}を取ります。
494 キーワード引数は
495 @table @code
496 @item abserr
497 根での関数値の望まれる絶対エラー。デフォルトは、@code{find_root_abs}です。
498 @item relerr
499 根の望まれる相対エラー。デフォルトは@code{find_root_rel}です。
500 @end table
502 懸案の関数が@code{abserr}以下の何かに評価される時、または、
503 近似値@var{x_0}, @var{x_1}の差が@code{relerr * max(abs(x_0), abs(x_1))}以下になるなら、@code{find_root}は停止します。
505 @code{find_root_abs}と@code{find_root_rel}のデフォルト値はともに零です。
507 @code{find_root}は、探索区間の端で対象の関数が異なる符号を持つことを期待します。
508 関数が両方の終端での数に評価されて、それらの数が同じ符号を持つ時、
509 @code{find_root}の振る舞いは、@code{find_root_error}に支配されます。
510 @code{find_root_error}が@code{true}の時、
511 @code{find_root}はエラーメッセージを出力します。
512 そうでなければ、@code{find_root}は@code{find_root_error}の値を返します。
513 @code{find_root_error}のデフォルト値は@code{true}です。
515 もし@var{f}が探索アルゴリズムの中の任意のステップで、数以外の何かに評価するなら、
516 @code{find_root}は、部分的に評価された@code{find_root}式を返します。
517 @var{a}と@var{b}の順序は無視されます;
518 根が探索される区間は@math{[min(@var{a}, @var{b}), max(@var{a}, @var{b})]}です。
520 例:
521 @c PREVIOUS EXAMPLE STUFF -- MAY WANT TO BRING TRANSLATE BACK INTO THE EXAMPLE
522 @c f(x):=(mode_declare(x,float),sin(x)-x/2.0);
523 @c interpolate(sin(x)-x/2,x,0.1,%pi)       time= 60 msec
524 @c interpolate(f(x),x,0.1,%pi);            time= 68 msec
525 @c translate(f);
526 @c interpolate(f(x),x,0.1,%pi);            time= 26 msec
527 @c interpolate(f,0.1,%pi);                 time=  5 msec
529 @c ===beg===
530 @c f(x) := sin(x) - x/2;
531 @c find_root (sin(x) - x/2, x, 0.1, %pi);
532 @c find_root (sin(x) = x/2, x, 0.1, %pi);
533 @c find_root (f(x), x, 0.1, %pi);
534 @c find_root (f, 0.1, %pi);
535 @c find_root (exp(x) = y, x, 0, 100);
536 @c find_root (exp(x) = y, x, 0, 100), y = 10;
537 @c log (10.0);
538 @c fpprec:32;
539 @c 32;
540 @c bf_find_root (exp(x) = y, x, 0, 100), y = 10;
541 @c log(10b0);
542 @c ===end===
543 @example
544 (%i1) f(x) := sin(x) - x/2;
545                                         x
546 (%o1)                  f(x) := sin(x) - -
547                                         2
548 (%i2) find_root (sin(x) - x/2, x, 0.1, %pi);
549 (%o2)                   1.895494267033981
550 (%i3) find_root (sin(x) = x/2, x, 0.1, %pi);
551 (%o3)                   1.895494267033981
552 (%i4) find_root (f(x), x, 0.1, %pi);
553 (%o4)                   1.895494267033981
554 (%i5) find_root (f, 0.1, %pi);
555 (%o5)                   1.895494267033981
556 (%i6) find_root (exp(x) = y, x, 0, 100);
557                             x
558 (%o6)           find_root(%e  = y, x, 0.0, 100.0)
559 (%i7) find_root (exp(x) = y, x, 0, 100), y = 10;
560 (%o7)                   2.302585092994046
561 (%i8) log (10.0);
562 (%o8)                   2.302585092994046
563 (%i9) fpprec:32;
564 (%o9)                           32
565 (%i10) bf_find_root (exp(x) = y, x, 0, 100), y = 10;
566 (%o10)                  2.3025850929940456840179914546844b0
567 (%i11) log(10b0);
568 (%o11)                  2.3025850929940456840179914546844b0
569 @end example
571 @opencatbox
572 @category{Algebraic equations} @category{Numerical methods}
573 @closecatbox
575 @end deffn
577 @c -----------------------------------------------------------------------------
578 @anchor{newton}
579 @deffn {関数} newton (@var{expr}, @var{x}, @var{x_0}, @var{eps})
581 @var{expr}を@var{x}の1変数関数と考えて、
582 Newton法による、@code{@var{expr} = 0}の近似解を返します。
583 探索は、@code{@var{x} = @var{x_0}}で始まり、
584 (@var{x}の現在値で評価された@var{expr}を使った)@code{abs(@var{expr}) < @var{eps}}が成り立つまで続きます。
586 終了テスト@code{abs(@var{expr}) < @var{eps}}が@code{true}または@code{false}に評価される限り、
587 @code{newton}は、未定義変数が@var{expr}の中に現れることを許します。
589 このように、
590 @var{expr}は数に評価される必要はありません。
592 @code{load(newton1)}はこの関数をロードします。
594 @code{realroots}, @code{allroots}, @code{find_root}, @code{mnewton}も参照してください。
596 例:
598 @c ===beg===
599 @c load (newton1);
600 @c newton (cos (u), u, 1, 1/100);
601 @c ev (cos (u), u = %);
602 @c assume (a > 0);
603 @c newton (x^2 - a^2, x, a/2, a^2/100);
604 @c ev (x^2 - a^2, x = %);
605 @c ===end===
606 @example
607 (%i1) load (newton1);
608 (%o1) /usr/share/maxima/5.10.0cvs/share/numeric/newton1.mac
609 (%i2) newton (cos (u), u, 1, 1/100);
610 (%o2)                   1.570675277161251
611 (%i3) ev (cos (u), u = %);
612 (%o3)                 1.2104963335033528E-4
613 (%i4) assume (a > 0);
614 (%o4)                        [a > 0]
615 (%i5) newton (x^2 - a^2, x, a/2, a^2/100);
616 (%o5)                  1.00030487804878 a
617 (%i6) ev (x^2 - a^2, x = %);
618                                            2
619 (%o6)                6.098490481853958E-4 a
620 @end example
622 @opencatbox
623 @category{Algebraic equations} @category{Numerical methods}
624 @closecatbox
625 @end deffn
627 @c -----------------------------------------------------------------------------
628 @node Introduction to Fourier series, Functions and Variables for Fourier series, Functions and Variables for fast Fourier transform, Numerical
629 @section Introduction to Fourier series
630 @c -----------------------------------------------------------------------------
632 @code{fourie}パッケージは、Fourier級数のシンボル計算のための関数を含みます。
634 @code{fourie}パッケージの中には
635 Fourier積分係数を計算する関数や、式の操作のためのいくつかの関数があります。
637 @opencatbox
638 @category{Fourier transform} @category{Share packages} @category{Package fourie}
639 @closecatbox
641 @c -----------------------------------------------------------------------------
642 @node Functions and Variables for Fourier series, , Introduction to Fourier series, Numerical
643 @section Functions and Variables for Fourier series
644 @c -----------------------------------------------------------------------------
646 @c REPHRASE
648 @c -----------------------------------------------------------------------------
649 @anchor{equalp}
650 @deffn {関数} equalp (@var{x}, @var{y})
652 もし@code{equal (@var{x}, @var{y})}なら、@code{true}を返し、
653 そうでないなら、@code{false}を返します。
654  (この場合、@code{equal (x, y)}がするようなエラーメッセージを与えません。)
656 @c NEEDS EXAMPLES
657 @opencatbox
658 @category{Package fourie}
659 @closecatbox
660 @end deffn
662 @c -----------------------------------------------------------------------------
663 @anchor{remfun}
664 @deffn  {関数} remfun (@var{f}, @var{expr})
665 @deffnx {関数} remfun (@var{f}, @var{expr}, @var{x})
667 @code{remfun (@var{f}, @var{expr})}は、
668 @var{expr}の中の@code{@var{f} (@var{arg})}すべてを@var{arg}で置き換えます。
670 @code{remfun (@var{f}, @var{expr}, @var{x})}は、
671 @var{expr}の中の@code{@var{f} (@var{arg})}を
672 @var{arg}が変数@var{x}を含むときだけ
673 @var{arg}で置き換えます。
675 @c NEEDS EXAMPLES
676 @opencatbox
677 @category{Package fourie}
678 @closecatbox
679 @end deffn
681 @c -----------------------------------------------------------------------------
682 @anchor{funp}
683 @deffn  {関数} funp (@var{f}, @var{expr})
684 @deffnx {関数} funp (@var{f}, @var{expr}, @var{x})
686 @code{funp (@var{f}, @var{expr})}は、
687 もし@var{expr}が関数@var{f}を含むなら
688 @code{true}を返します。
690 @code{funp (@var{f}, @var{expr}, @var{x})}は、
691 もし@var{expr}が関数@var{f}を含み、変数
692 @var{x}が@var{f}のインスタンスの1つの引数のどこかにあるなら、
693 @code{true}を返します。
695 @c NEEDS EXAMPLES
696 @opencatbox
697 @category{Package fourie}
698 @closecatbox
699 @end deffn
701 @c -----------------------------------------------------------------------------
702 @anchor{absint}
703 @deffn  {関数} absint (@var{f}, @var{x}, @var{halfplane})
704 @deffnx {関数} absint (@var{f}, @var{x})
705 @deffnx {関数} absint (@var{f}, @var{x}, @var{a}, @var{b})
707 @code{absint (@var{f}, @var{x}, @var{halfplane})}は、
708 与えられた半平面(@code{pos}, @code{neg}, または@code{both})での
709 @var{f}の@var{x}に関する不定積分を返します。
710 @var{f}は、形式
711 @code{abs (x)}, @code{abs (sin (x))}, @code{abs (a) * exp (-abs (b) * abs (x))}
712 の式を含むことができます。
714 @code{absint (@var{f}, @var{x})}は@code{absint (@var{f}, @var{x}, pos)}と同値です。
716 @code{absint (@var{f}, @var{x}, @var{a}, @var{b})}は、
717 @var{f}の
718 @var{x}に関する
719 @var{a}から@var{b}までの定積分
720 を返します。
722 @c SAME LIST AS ABOVE ??
723 @var{f}は、絶対値を含むことができます。
725 @c NEEDS EXAMPLES
726 @opencatbox
727 @category{Package fourie} @category{Integral calculus}
728 @closecatbox
729 @end deffn
731 @c NEEDS EXPANSION
733 @c -----------------------------------------------------------------------------
734 @anchor{fourier}
735 @deffn {関数} fourier (@var{f}, @var{x}, @var{p})
737 区間@code{[-p, p]}上で定義された@code{@var{f}(@var{x})}のFourier係数のリストを返します。
739 @c NEEDS EXAMPLES
740 @opencatbox
741 @category{Package fourie}
742 @closecatbox
743 @end deffn
745 @c NEES EXPANSION. WHAT IS THE ARGUMENT l ??
747 @c -----------------------------------------------------------------------------
748 @anchor{foursimp}
749 @deffn {関数} foursimp (@var{l})
751 もし@code{sinnpiflag}が@code{true}なら、@code{sin (n %pi)}を0に整理します。
752 もし@code{cosnpiflag}が@code{true}なら、@code{cos (n %pi)}を@code{(-1)^n}に整理します。
754 @c NEEDS EXAMPLES
755 @opencatbox
756 @category{Package fourie} @category{Trigonometric functions} @category{Simplification functions}
757 @closecatbox
758 @end deffn
760 @c -----------------------------------------------------------------------------
761 @anchor{sinnpiflag}
762 @defvr {オプション変数} sinnpiflag
763 デフォルト値: @code{true}
765 @code{foursimp}を参照してください。
767 @opencatbox
768 @category{Package fourie}
769 @closecatbox
770 @end defvr
772 @c -----------------------------------------------------------------------------
773 @anchor{cosnpiflag}
774 @defvr {オプション変数} cosnpiflag
775 デフォルト値: @code{true}
777 @code{foursimp}を参照してください。
779 @opencatbox
780 @category{Package fourie}
781 @closecatbox
782 @end defvr
784 @c NEEDS EXPANSION. EXPLAIN x AND p HERE (DO NOT REFER SOMEWHERE ELSE)
786 @c -----------------------------------------------------------------------------
787 @anchor{fourexpand}
788 @deffn {関数} fourexpand (@var{l}, @var{x}, @var{p}, @var{limit})
790 Fourier係数@var{l}のリストから
791 @var{limit}項までのFourier級数を構成し、返します。
792 (@var{limit}は@code{inf}もあり得ます。)
793 @var{x}と@var{p}は、@code{fourier}におけるものと同じ意味を持ちます。
795 @c NEEDS EXAMPLES
796 @opencatbox
797 @category{Package fourie}
798 @closecatbox
799 @end deffn
801 @c NEEDS EXPANSION
803 @c -----------------------------------------------------------------------------
804 @anchor{fourcos}
805 @deffn {関数} fourcos (@var{f}, @var{x}, @var{p})
807 @code{[0, @var{p}]}上で定義された
808 @code{@var{f}(@var{x})}のFourierコサイン係数を返します。
810 @c NEEDS EXAMPLES
811 @opencatbox
812 @category{Package fourie}
813 @closecatbox
814 @end deffn
816 @c NEEDS EXPANSION
818 @c -----------------------------------------------------------------------------
819 @anchor{foursin}
820 @deffn {関数} foursin (@var{f}, @var{x}, @var{p})
822 @code{[0, @var{p}]}上で定義された
823 @code{@var{f}(@var{x})}のFourierサイン係数を返します。
825 @c NEEDS EXAMPLES
826 @opencatbox
827 @category{Package fourie}
828 @closecatbox
829 @end deffn
831 @c NEEDS EXPANSION
833 @c -----------------------------------------------------------------------------
834 @anchor{totalfourier}
835 @deffn {関数} totalfourier (@var{f}, @var{x}, @var{p})
837 @code{fourexpand (foursimp (fourier (@var{f}, @var{x}, @var{p})), @var{x}, @var{p}, 'inf)}を返します。
839 @c NEEDS EXAMPLES
840 @opencatbox
841 @category{Package fourie}
842 @closecatbox
843 @end deffn
845 @c NEEDS EXPANSION
847 @c -----------------------------------------------------------------------------
848 @anchor{fourint}
849 @deffn {関数} fourint (@var{f}, @var{x})
851 @code{[minf, inf]}上で定義された
852 @code{@var{f}(@var{x})}のFourier積分係数のリストを構成し、返します。
854 @c NEEDS EXAMPLES
855 @opencatbox
856 @category{Package fourie}
857 @closecatbox
858 @end deffn
860 @c NEEDS EXPANSION
862 @c -----------------------------------------------------------------------------
863 @anchor{fourintcos}
864 @deffn {関数} fourintcos (@var{f}, @var{x})
865 @code{[0, inf]}上の@code{@var{f}(@var{x})}のFourierコサイン積分係数を返します。
867 @c NEEDS EXAMPLES
868 @opencatbox
869 @category{Package fourie}
870 @closecatbox
871 @end deffn
873 @c NEEDS EXPANSION
875 @c -----------------------------------------------------------------------------
876 @anchor{forintsin}
877 @deffn {関数} fourintsin (@var{f}, @var{x})
878 @code{[0, inf]}上の@code{@var{f}(@var{x})}のFourierサイン積分係数を返します。
881 @c NEEDS EXAMPLES
882 @opencatbox
883 @category{Package fourie}
884 @closecatbox
885 @end deffn