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