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::
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変換の(数式計算ではなく)数値計算に関する関数を含みます。
16 @category{Fourier transform}
17 @category{Numerical methods}
18 @category{Share packages}
19 @category{Package fft}
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 -----------------------------------------------------------------------------
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}に置き換えられます。
46 @code{polartorect}は、@code{recttopolar}の逆関数です。
48 @code{load("fft")}はこの関数をロードします。
52 @category{Package fft}
53 @category{Complex variables}
57 @c -----------------------------------------------------------------------------
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}に置き換えられます。
74 計算された偏角は、@code{-%pi}から@code{%pi}の範囲の中にあります。
76 @code{recttopolar}は@code{polartorect}の逆関数です。
78 @code{load("fft")}はこの関数をロードします。
82 @category{Package fft}
83 @category{Complex variables}
87 @c -----------------------------------------------------------------------------
89 @deffn {関数} inverse_fft (@var{y})
92 @var{y}は、変換されるデータを含むリストもしくは配列です。
94 要素は、数リテラル(整数、有理数、浮動小数点、多倍長浮動小数点)、シンボル定数、
95 もしくは、@code{a}と@code{b}が数リテラルもしくはシンボル定数である式@code{a + b*%i}
98 @code{inverse_fft}は、@var{y}と同じタイプの新しいオブジェクトを返します。
100 結果はいつも浮動小数点、もしくは@code{a}と@code{b}が浮動小数点であるところの式
101 @code{a + b*%i}として計算されます。
103 逆離散Fourier変換は、以下のように定義されます。
105 @code{j}が0から@code{n - 1}まで変わる中、
108 x[j] = sum(y[k] exp(+2 %i %pi j k / n), k, 0, n - 1)
111 @code{load("fft")}はこの関数をロードします。
113 @code{fft} (正変換), @code{recttopolar}, @code{polartorect}も参照してください。
122 @c L : [1, 2, 3, 4, -1, -2, -3, -4] $
123 @c L1 : inverse_fft (L);
125 @c lmax (abs (L2 - L));
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]
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));
147 @c L : [1, 1 + %i, 1 - %i, -1, -1, 1 - %i, 1 + %i, 1] $
148 @c L1 : inverse_fft (L);
150 @c lmax (abs (L2 - L));
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,
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));
169 @category{Package fft}
173 @c -----------------------------------------------------------------------------
175 @deffn {関数} fft (@var{x})
178 @var{x}は、変換されるデータを含むリストもしくは配列です。
179 要素の数は2のべき乗でなければいけません。
180 要素は、数リテラル(整数、有理数、浮動小数点、多倍長浮動小数点)、シンボル定数、
181 もしくは、@code{a}と@code{b}が数リテラルもしくはシンボル定数である式@code{a + b*%i}
184 @code{fft}は、@var{x}と同じタイプの新しいオブジェクトを返します。
186 結果はいつも浮動小数点、もしくは@code{a}と@code{b}が浮動小数点であるところの式
187 @code{a + b*%i}として計算されます。
189 離散Fourier変換は、以下のように定義されます。
191 @code{k}が0から@code{n - 1}まで変わる中、
194 y[k] = (1/n) sum(x[j] exp(-2 %i %pi j k / n), j, 0, n - 1)
198 実係数@code{a}と@code{b}は以下のように計算することができます。
200 x[j] = sum(a[k]*cos(2*%pi*j*k/n)+b[k]*sin(2*%pi*j*k/n), k, 0, n/2)
206 a[0] = realpart (y[0])
210 そして、@code{k}が1からn/2 - 1まで変わる中、
213 a[k] = realpart (y[k] + y[n - k])
214 b[k] = imagpart (y[n - k] - y[k])
220 a[n/2] = realpart (y[n/2])
224 @code{load("fft")}はこの関数をロードします。
226 @code{inverse_fft} (逆変換), @code{recttopolar}, @code{polartorect}も参照してください。
235 @c L : [1, 2, 3, 4, -1, -2, -3, -4] $
237 @c L2 : inverse_fft (L1);
238 @c lmax (abs (L2 - L));
242 (%i2) fpprintprec : 4 $
243 (%i3) L : [1, 2, 3, 4, -1, -2, -3, -4] $
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));
260 @c L : [1, 1 + %i, 1 - %i, -1, -1, 1 - %i, 1 + %i, 1] $
262 @c L2 : inverse_fft (L1);
263 @c lmax (abs (L2 - L));
267 (%i2) fpprintprec : 4 $
268 (%i3) L : [1, 1 + %i, 1 - %i, -1, -1, 1 - %i, 1 + %i, 1] $
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,
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));
286 @c L : [1, 2, 3, 4, 5, 6, 7, 8] $
288 @c x : make_array (any, n) $
289 @c fillarray (x, L) $
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]) $
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]));
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);
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) $
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]) $
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]));
321 (%i13) a[n/2] : y[n/2] $
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),
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]
334 @category{Package fft}
338 @c -----------------------------------------------------------------------------
340 @defvr {オプション変数} fortindent
343 @code{fortindent}は、@code{fortran}コマンドが表示する式の
345 0は、標準のプリントアウト(すなわち6スペース)を与え、
346 正の値は、式を更に右に印字するようにします。
349 @category{Translation and compilation}
353 @c -----------------------------------------------------------------------------
355 @deffn {関数} fortran (@var{expr})
357 Fortran文として@var{expr}を印字します。
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}コマンドが表示する式の
375 0は、標準のプリントアウト(すなわち6スペース)を与え、
376 正の値は、式を更に右に印字するようにします。
378 @code{fortspaces}が@code{true}の時、
379 @code{fortran}は、印字行それぞれを80カラムまでスペースで埋めます。
381 @code{fortran}は引数を評価します;
383 @code{fortran}はいつも@code{done}を返します。
388 (%i1) expr: (a + b)^12$
389 (%i2) fortran (expr);
392 (%i3) fortran ('x=expr);
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
400 (%i5) fortran ('x=7+5*%i);
403 (%i6) fortran ('x=[1,2,3,4]);
413 @category{Translation and compilation}
417 @c -----------------------------------------------------------------------------
419 @defvr {オプション変数} fortspaces
422 @code{fortspaces}が@code{true}の時、
423 @code{fortran}は、印字行それぞれを80カラムまでスペースで埋めます。
426 @category{Translation and compilation}
430 @c -----------------------------------------------------------------------------
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で走らせるプログラムを生成するのに使われるなら、
443 @code{stringout}も参照してください。
446 (%i1) expr: 1e-155*x^2 - 5.5*x + 5.2e155;
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);
463 @category{Numerical methods}
467 @c -----------------------------------------------------------------------------
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}を取ります。
502 根での関数値の望まれる絶対エラー。デフォルトは、@code{find_root_abs}です。
504 根の望まれる相対エラー。デフォルトは@code{find_root_rel}です。
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})]}です。
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
531 @c interpolate(f(x),x,0.1,%pi); time= 26 msec
532 @c interpolate(f,0.1,%pi); time= 5 msec
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;
545 @c bf_find_root (exp(x) = y, x, 0, 100), y = 10;
549 (%i1) f(x) := sin(x) - x/2;
551 (%o1) f(x) := sin(x) - -
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);
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
567 (%o8) 2.302585092994046
570 (%i10) bf_find_root (exp(x) = y, x, 0, 100), y = 10;
571 (%o10) 2.3025850929940456840179914546844b0
573 (%o11) 2.3025850929940456840179914546844b0
577 @category{Algebraic equations}
578 @category{Numerical methods}
583 @c -----------------------------------------------------------------------------
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}の中に現れることを許します。
596 @var{expr}は数に評価される必要はありません。
598 @code{load("newton1")}はこの関数をロードします。
600 @code{realroots}, @code{allroots}, @code{find_root}, @code{mnewton}も参照してください。
606 @c newton (cos (u), u, 1, 1/100);
607 @c ev (cos (u), u = %);
609 @c newton (x^2 - a^2, x, a/2, a^2/100);
610 @c ev (x^2 - a^2, x = %);
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);
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 = %);
625 (%o6) 6.098490481853958E-4 a
629 @category{Algebraic equations}
630 @category{Numerical methods}
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積分係数を計算する関数や、式の操作のためのいくつかの関数があります。
645 @category{Fourier transform}
646 @category{Share packages}
647 @category{Package fourie}
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 -----------------------------------------------------------------------------
657 @c -----------------------------------------------------------------------------
659 @deffn {関数} equalp (@var{x}, @var{y})
661 もし@code{equal (@var{x}, @var{y})}なら、@code{true}を返し、
662 そうでないなら、@code{false}を返します。
663 (この場合、@code{equal (x, y)}がするようなエラーメッセージを与えません。)
667 @category{Package fourie}
671 @c -----------------------------------------------------------------------------
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}を含むときだけ
686 @category{Package fourie}
690 @c -----------------------------------------------------------------------------
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}を含むなら
699 @code{funp (@var{f}, @var{expr}, @var{x})}は、
700 もし@var{expr}が関数@var{f}を含み、変数
701 @var{x}が@var{f}のインスタンスの1つの引数のどこかにあるなら、
706 @category{Package fourie}
710 @c -----------------------------------------------------------------------------
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}に関する不定積分を返します。
720 @code{abs (x)}, @code{abs (sin (x))}, @code{abs (a) * exp (-abs (b) * abs (x))}
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})}は、
728 @var{a}から@var{b}までの定積分
731 @c SAME LIST AS ABOVE ??
732 @var{f}は、絶対値を含むことができます。
736 @category{Package fourie}
737 @category{Integral calculus}
743 @c -----------------------------------------------------------------------------
745 @deffn {関数} fourier (@var{f}, @var{x}, @var{p})
747 区間@code{[-p, p]}上で定義された@code{@var{f}(@var{x})}のFourier係数のリストを返します。
751 @category{Package fourie}
755 @c NEES EXPANSION. WHAT IS THE ARGUMENT l ??
757 @c -----------------------------------------------------------------------------
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}に整理します。
766 @category{Package fourie}
767 @category{Trigonometric functions}
768 @category{Simplification functions}
772 @c -----------------------------------------------------------------------------
774 @defvr {オプション変数} sinnpiflag
777 @code{foursimp}を参照してください。
780 @category{Package fourie}
784 @c -----------------------------------------------------------------------------
786 @defvr {オプション変数} cosnpiflag
789 @code{foursimp}を参照してください。
792 @category{Package fourie}
796 @c NEEDS EXPANSION. EXPLAIN x AND p HERE (DO NOT REFER SOMEWHERE ELSE)
798 @c -----------------------------------------------------------------------------
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}におけるものと同じ意味を持ちます。
809 @category{Package fourie}
815 @c -----------------------------------------------------------------------------
817 @deffn {関数} fourcos (@var{f}, @var{x}, @var{p})
819 @code{[0, @var{p}]}上で定義された
820 @code{@var{f}(@var{x})}のFourierコサイン係数を返します。
824 @category{Package fourie}
830 @c -----------------------------------------------------------------------------
832 @deffn {関数} foursin (@var{f}, @var{x}, @var{p})
834 @code{[0, @var{p}]}上で定義された
835 @code{@var{f}(@var{x})}のFourierサイン係数を返します。
839 @category{Package fourie}
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)}を返します。
853 @category{Package fourie}
859 @c -----------------------------------------------------------------------------
861 @deffn {関数} fourint (@var{f}, @var{x})
863 @code{[minf, inf]}上で定義された
864 @code{@var{f}(@var{x})}のFourier積分係数のリストを構成し、返します。
868 @category{Package fourie}
874 @c -----------------------------------------------------------------------------
876 @deffn {関数} fourintcos (@var{f}, @var{x})
877 @code{[0, inf]}上の@code{@var{f}(@var{x})}のFourierコサイン積分係数を返します。
881 @category{Package fourie}
887 @c -----------------------------------------------------------------------------
889 @deffn {関数} fourintsin (@var{f}, @var{x})
890 @code{[0, inf]}上の@code{@var{f}(@var{x})}のFourierサイン積分係数を返します。
895 @category{Package fourie}