1 @c -----------------------------------------------------------------------------
2 @c File : Numerical.de.texi
3 @c License : GNU General Public License (GPL)
5 @c Original : Numerical.texi revision 14.03.2011
6 @c Translation : Dr. Dieter Kaiser
8 @c Revision : 28.05.2011
10 @c This file is part of Maxima -- GPL CAS based on DOE-MACSYMA
11 @c -----------------------------------------------------------------------------
14 * Einf@"uhrung in die schnelle Fourier-Transformation::
15 * Funktionen und Variablen f@"ur die schnelle Fourier-Transformation::
16 * Einf@"uhrung in Fourierreihen::
17 * Funktionen und Variablen f@"ur Fourierreihen::
20 @c -----------------------------------------------------------------------------
21 @node Einf@"uhrung in die schnelle Fourier-Transformation, Funktionen und Variablen f@"ur die schnelle Fourier-Transformation, Fourier-Transformationen, Fourier-Transformationen
22 @section Einf@"uhrung in die schnelle Fourier-Transformation
23 @c -----------------------------------------------------------------------------
25 @c The @code{fft} package comprises functions for the numerical (not symbolic)
26 @c computation of the fast Fourier transform.
28 Das Paket @code{fft} enth@"alt Funktionen f@"ur die numerische Berechnung der
29 schnellen Fourier Transformation (FFT - "Fast Fourier Transform").
31 @c -----------------------------------------------------------------------------
32 @node Funktionen und Variablen f@"ur die schnelle Fourier-Transformation, Einf@"uhrung in Fourierreihen, Einf@"uhrung in die schnelle Fourier-Transformation, Fourier-Transformationen
33 @section Funktionen und Variablen f@"ur die schnelle Fourier-Transformation
34 @c -----------------------------------------------------------------------------
36 @c --- 28.05.2011 DK -----------------------------------------------------------
38 @deffn {Funktion} polartorect (@var{r}, @var{t})
40 @c Translates complex values of the form @code{r %e^(%i t)} to the form
41 @c @code{a + b %i}, where @var{r} is the magnitude and @var{t} is the phase.
42 @c @var{r} and @var{t} are 1-dimensional arrays of the same size.
43 @c The array size need not be a power of 2.
45 Transformiert komplexe Zahlen der Form @code{r %e^(%i t)} in die Standardform
46 @code{a + b %i}. @var{r} ist der Betrag der komplexen Zahl und @var{t} die
47 Phase. Die Argumente @var{r} und @var{t} sind eindimensionale Arrays derselben
48 Gr@"o@ss{}e. Die Gr@"o@ss{}e der Arrays muss eine Potenz von 2 sein.
50 @c The original values of the input arrays are replaced by the real and
51 @c imaginary parts, @code{a} and @code{b}, on return. The outputs are
58 Die Werte der originalen Arrays werden durch den Realteil @code{a = r cos(t)}
59 und den Imagin@"arteil @code{b = r sin(t)} ersetzt.
61 @c @code{polartorect} is the inverse function of @code{recttopolar}.
62 @c @code{load("fft")} loads this function. See also @code{fft}.
64 @code{polartorect} ist die inverse Funktion zu @mrefdot{recttopolar}
65 Das Kommando @code{load("fft")} l@"adt die Funktion.
68 @c --- 28.05.2011 DK -----------------------------------------------------------
70 @deffn {Funktion} recttopolar (@var{a}, @var{b})
72 @c Translates complex values of the form @code{a + b %i} to the form
73 @c @code{r %e^(%i t)}, where @var{a} is the real part and @var{b} is the
74 @c imaginary part. @var{a} and @var{b} are 1-dimensional arrays of the same
75 @c size. The array size need not be a power of 2.
77 Transformiert komplexe Zahlen der Form @code{a + b %i} in die Polarform
78 @code{r %e^(%i t)}. @var{a} ist der Realteil und @var{b} der Imagin@"arteil der
79 komplexen Zahl. Die Argumente @var{a} und @var{b} sind eindimensionale Arrays
80 derselben Gr@"o@ss{}e. Die Gr@"o@ss{}e der Arrays muss eine Potenz von 2 sein.
82 @c The original values of the input arrays are replaced by the magnitude and
83 @c angle, @code{r} and @code{t}, on return. The outputs are calculated as
85 @c r = sqrt(a^2 + b^2)
88 @c The computed angle is in the range @code{-%pi} to @code{%pi}.
90 Die Werte der originalen Arrays werden durch den Betrag
91 @code{r = sqrt(a^2 + b^2} und die Phase @code{t = atan2(b, a)} ersetzt. Die
92 Phase ist ein Winkel in dem Bereich @code{-%pi} bis @code{%pi}.
94 @c @code{recttopolar} is the inverse function of @code{polartorect}.
95 @c @code{load("fft")} loads this function. See also @code{fft}.
97 @code{recttoploar} ist die inverse Funktion zu @mrefdot{polartorect}
98 Das Kommando @code{load("fft")} l@"adt die Funktion.
101 @c --- 28.05.2011 DK -----------------------------------------------------------
103 @deffn {Funktion} inverse_fft (@var{y})
105 @c Computes the inverse complex fast Fourier transform. @var{y} is a list or
106 @c array (named or unnamed) which contains the data to transform. The number of
107 @c elements must be a power of 2. The elements must be literal numbers
108 @c (integers, rationals, floats, or bigfloats) or symbolic constants, or
109 @c expressions @code{a + b*%i} where @code{a} and @code{b} are literal numbers
110 @c or symbolic constants.
112 Berechnet die inverse schnelle Fourier-Transformation. Das Argument @var{y} ist
113 eine Liste oder ein Array mit den Daten, die zu transformieren sind. Die Anzahl
114 der Daten muss eine Potenz von 2 sein. Die Elemente m@"ussen Zahlen (ganze,
115 rationale, Gleitkommazahlen oder gro@ss{}e Gleitkommazahlen) oder numerische
116 Konstanten sein. Weiterhin k@"onnen die Elemente komplexe Zahlen
117 @code{a + b*%i} sein, wobei der Realteil und der Imagin@"arteil wiederum Zahlen
118 oder numerische Konstanten sein m@"ussen.
120 @c @code{inverse_fft} returns a new object of the same type as @var{y}, which is
121 @c not modified. Results are always computed as floats or expressions
122 @c @code{a + b*%i} where @code{a} and @code{b} are floats.
124 @code{inverse_fft} gibt ein neues Objekt vom selben Typ wie @var{y} zur@"uck.
125 Die Ergebnisse sind immer Gleitkommazahlen oder komplexe Zahlen
126 @code{a + %i*b}, wobei @code{a} und @code{b} Gleitkommazahlen sind.
128 @c The inverse discrete Fourier transform is defined as follows.
129 @c Let @code{x} be the output of the inverse transform.
130 @c Then for @code{j} from 0 through @code{n - 1},
132 @c x[j] = sum(y[k] exp(+2 %i %pi j k / n), k, 0, n - 1)
135 Die inverse diskrete Fourier-Transformation ist wie folgt definiert. Wenn
136 @code{x} das Ergebnis der inversen Fourier-Transformation ist, dann gilt f@"ur
137 @code{j} von 0 bis @code{n-1}
141 x[j] = sum(y[k] exp(2 %i %pi j k / n), k, 0, n - 1)
145 $$x_{j}=\sum_{k=0}^{n-1}{y_{k}\,e^{{{2\,i\,\pi\,j\,k}\over{n}}}}$$
148 @c @code{load("fft")} loads this function.
149 @c See also @code{fft} (forward transform), @code{recttopolar}, and
150 @c @code{polartorect}.
152 Mit dem Kommando @code{load("fft")} wird die Funktion geladen. Siehe auch
153 @mref{fft} f@"ur die schnelle Fourier-Transformation.
163 (%i2) fpprintprec : 4 $
164 (%i3) L : [1, 2, 3, 4, -1, -2, -3, -4] $
165 (%i4) L1 : inverse_fft (L);
166 (%o4) [0.0, 14.49 %i - .8284, 0.0, 2.485 %i + 4.828, 0.0,
167 4.828 - 2.485 %i, 0.0, - 14.49 %i - .8284]
169 (%o5) [1.0, 2.0 - 2.168L-19 %i, 3.0 - 7.525L-20 %i,
170 4.0 - 4.256L-19 %i, - 1.0, 2.168L-19 %i - 2.0,
171 7.525L-20 %i - 3.0, 4.256L-19 %i - 4.0]
172 (%i6) lmax (abs (L2 - L));
182 (%i2) fpprintprec : 4 $
183 (%i3) L : [1, 1 + %i, 1 - %i, -1, -1, 1 - %i, 1 + %i, 1] $
184 (%i4) L1 : inverse_fft (L);
185 (%o4) [4.0, 2.711L-19 %i + 4.0, 2.0 %i - 2.0,
186 - 2.828 %i - 2.828, 0.0, 5.421L-20 %i + 4.0, - 2.0 %i - 2.0,
189 (%o5) [4.066E-20 %i + 1.0, 1.0 %i + 1.0, 1.0 - 1.0 %i,
190 1.55L-19 %i - 1.0, - 4.066E-20 %i - 1.0, 1.0 - 1.0 %i,
191 1.0 %i + 1.0, 1.0 - 7.368L-20 %i]
192 (%i6) lmax (abs (L2 - L));
197 @c --- 28.05.2011 DK -----------------------------------------------------------
199 @deffn {Funktion} fft (@var{x})
201 @c Computes the complex fast Fourier transform. @var{x} is a list or array
202 @c (named or unnamed) which contains the data to transform. The number of
203 @c elements must be a power of 2. The elements must be literal numbers
204 @c (integers, rationals, floats, or bigfloats) or symbolic constants, or
205 @c expressions @code{a + b*%i} where @code{a} and @code{b} are literal numbers
206 @c or symbolic constants.
208 Berechnet die schnelle Fourier-Transformation. Das Argument @var{x} ist eine
209 Liste oder ein Array mit den Daten, die zu transformieren sind. Die Anzahl der
210 Elemente muss eine Potenz von 2 sein. Die Elemente m@"ussen Zahlen (ganze,
211 rationale, Gleitkommazahlen oder gro@ss{}e Gleitkommazahlen) oder numerische
212 Konstanten sein. Weiterhin k@"onnen die Elemente komplexe Zahlen
213 @code{a + b*%i} sein, wobei der Realteil und der Imagin@"arteil wiederum Zahlen
214 oder numerische Konstanten sein m@"ussen.
216 @c @code{fft} returns a new object of the same type as @var{x}, which is not
217 @c modified. Results are always computed as floats or expressions
218 @c @code{a + b*%i} where @code{a} and @code{b} are floats.
220 @code{inverse_fft} gibt ein neues Objekt vom selben Typ wie @var{x} zur@"uck.
221 Die Ergebnisse sind immer Gleitkommazahlen oder komplexe Zahlen
222 @code{a + %i*b}, wobei @code{a} und @code{b} Gleitkommazahlen sind.
224 @c The discrete Fourier transform is defined as follows.
225 @c Let @code{y} be the output of the transform.
226 @c Then for @code{k} from 0 through @code{n - 1},
228 @c y[k] = (1/n) sum(x[j] exp(-2 %i %pi j k / n), j, 0, n - 1)
231 Die diskrete Fourier-Transformation ist wie folgt definiert. Wenn @code{y} das
232 Ergebnis der Fourier-Transformation ist, dann gilt f@"ur @code{k} von 0 bis
237 y[k] = (1/n) sum(x[j] exp(-2 %i %pi j k / n), j, 0, n - 1)
241 $$y_{k}={{1}\over{n}}
242 \sum_{j=0}^{n-1}{x_{j}\,e^ {- {{2\,i\,\pi\,j\,k}\over{n}} }}$$
245 @c When the data @var{x} are real,
246 @c real coefficients @code{a} and @code{b} can be computed such that
248 Sind die Daten @var{x} reelle Zahlen, dann werden die reellen Koeffizienten
249 @var{a} und @var{b} so berechnet, dass gilt
253 x[j] = sum (a[k] * cos (2*%pi*j*k / n)
254 + b[k] * sin (2*%pi*j*k / n), k, 0, n/2)
258 $$x_{j}=\sum_{k=0}^{{{n}\over{2}}}{\left(b_{k}\,\sin \left({{2\,\pi\,
259 j\,k}\over{n}}\right)+a_{k}\,\cos \left({{2\,\pi\,j\,k}\over{n}}
267 a[0] = realpart (y[0])
272 $$a_{0}={\it realpart}\left(y_{0}\right)$$
276 @c and, for k from 1 through n/2 - 1,
278 und f@"ur @var{k} von 1 bis @code{n/2-1}
282 a[k] = realpart (y[k] + y[n - k])
283 b[k] = imagpart (y[n - k] - y[k])
287 $$a_{k}={\it realpart}\left(y_{n-k}+y_{k}\right)$$
288 $$b_{k}={\it imagpart}\left(y_{n-k}-y_{k}\right)$$
295 a[n/2] = realpart (y[n/2])
300 $$a_{{{n}\over{2}}}={\it realpart}\left(y_{{{n}\over{2}}}\right)$$
301 $$b_{{{n}\over{2}}}=0$$
304 @c @code{load("fft")} loads this function.
305 @c See also @code{inverse_fft} (inverse transform), @code{recttopolar}, and
306 @c @code{polartorect}.
308 Das Kommando @code{load("fft")} l@"adt die Funktion.
309 Siehe auch @mref{inverse_fft} f@"ur die inverse schnelle Fourier-Transformation.
317 (%i2) fpprintprec : 4 $
318 (%i3) L : [1, 2, 3, 4, -1, -2, -3, -4] $
320 (%o4) [0.0, - 1.811 %i - .1036, 0.0, .6036 - .3107 %i, 0.0,
321 .3107 %i + .6036, 0.0, 1.811 %i - .1036]
322 (%i5) L2 : inverse_fft (L1);
323 (%o5) [1.0, 2.168L-19 %i + 2.0, 7.525L-20 %i + 3.0,
324 4.256L-19 %i + 4.0, - 1.0, - 2.168L-19 %i - 2.0,
325 - 7.525L-20 %i - 3.0, - 4.256L-19 %i - 4.0]
326 (%i6) lmax (abs (L2 - L));
334 (%i2) fpprintprec : 4 $
335 (%i3) L : [1, 1 + %i, 1 - %i, -1, -1, 1 - %i, 1 + %i, 1] $
338 (%o4) [0.5, .3536 %i + .3536, - 0.25 %i - 0.25,
339 0.5 - 6.776L-21 %i, 0.0, - .3536 %i - .3536, 0.25 %i - 0.25,
342 (%i5) L2 : inverse_fft (L1);
343 (%o5) [1.0 - 4.066E-20 %i, 1.0 %i + 1.0, 1.0 - 1.0 %i,
344 - 1.008L-19 %i - 1.0, 4.066E-20 %i - 1.0, 1.0 - 1.0 %i,
345 1.0 %i + 1.0, 1.947L-20 %i + 1.0]
346 (%i6) lmax (abs (L2 - L));
350 @c Computation of sine and cosine coefficients.
352 Berechnung der Sinus- und Kosinus-Koeffizienten.
356 (%i2) fpprintprec : 4 $
357 (%i3) L : [1, 2, 3, 4, 5, 6, 7, 8] $
358 (%i4) n : length (L) $
359 (%i5) x : make_array (any, n) $
360 (%i6) fillarray (x, L) $
362 (%i8) a : make_array (any, n/2 + 1) $
363 (%i9) b : make_array (any, n/2 + 1) $
364 (%i10) a[0] : realpart (y[0]) $
366 (%i12) for k : 1 thru n/2 - 1 do
367 (a[k] : realpart (y[k] + y[n - k]),
368 b[k] : imagpart (y[n - k] - y[k]));
370 (%i13) a[n/2] : y[n/2] $
372 (%i15) listarray (a);
373 (%o15) [4.5, - 1.0, - 1.0, - 1.0, - 0.5]
374 (%i16) listarray (b);
375 (%o16) [0, - 2.414, - 1.0, - .4142, 0]
376 (%i17) f(j) := sum (a[k] * cos (2*%pi*j*k / n) + b[k]
377 * sin (2*%pi*j*k / n), k, 0, n/2) $
378 (%i18) makelist (float (f (j)), j, 0, n - 1);
379 (%o18) [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0]
383 @c --- 28.05.2011 DK -----------------------------------------------------------
385 @deffn {Funktion} horner (@var{expr}, @var{x})
386 @deffnx {Funktion} horner (@var{expr})
388 @c Returns a rearranged representation of @var{expr} as in Horner's rule, using
389 @c @var{x} as the main variable if it is specified. @code{x} may be omitted in
390 @c which case the main variable of the canonical rational expression form of
391 @c @var{expr} is used.
393 Formt ein Polynom @var{expr} in das Horner-Schema um. Mit @var{x} wird die
394 Variable angegeben, f@"ur die das Horner-Schema zu bilden ist. Wird das
395 Argument @var{x} nicht angegeben, wird die Hauptvariable des kanonischen
396 Ausdrucks @var{expr} f@"ur die Bildung des Horner-Schemas genutzt.
398 @c @code{horner} sometimes improves stability if @code{expr} is
399 @c to be numerically evaluated. It is also useful if Maxima is used to
400 @c generate programs to be run in Fortran. See also @code{stringout}.
402 Das Horner-Schema kann die Stabilit@"at der numerischen Berechnung eines
403 Ausdrucks verbessern.
408 (%i1) expr: 1e-155*x^2 - 5.5*x + 5.2e155;
410 (%o1) 1.0E-155 x - 5.5 x + 5.2E+155
411 (%i2) expr2: horner (%, x), keepfloat: true;
412 (%o2) (1.0E-155 x - 5.5) x + 5.2E+155
413 (%i3) ev (expr, x=1e155);
414 Maxima encountered a Lisp error:
416 floating point overflow
418 Automatically continuing.
419 To reenable the Lisp debugger set *debugger-hook* to nil.
420 (%i4) ev (expr2, x=1e155);
425 @c --- 28.05.2011 DK -----------------------------------------------------------
427 @anchor{find_root_error}
428 @anchor{find_root_abs}
429 @anchor{find_root_rel}
430 @deffn {Funktion} find_root (@var{expr}, @var{x}, @var{a}, @var{b})
431 @deffnx {Funktion} find_root (@var{f}, @var{a}, @var{b})
432 @deffnx {Optionsvariable} find_root_error
433 @deffnx {Optionsvariable} find_root_abs
434 @deffnx {Optionsvariable} find_root_rel
436 @c Finds a root of the expression @var{expr} or the function @var{f} over the
437 @c closed interval @math{[@var{a}, @var{b}]}. The expression @var{expr} may be
438 @c an equation, in which case @code{find_root} seeks a root of
439 @c @code{lhs(@var{expr}) - rhs(@var{expr})}.
441 Findet die Nullstellen eines Ausdrucks @var{expr} oder einer Funktion @var{f}
442 in dem Intervall @code{[@var{a}, @var{b}]}. Der Ausdruck @var{expr} kann eine
443 Gleichung sein. In diesem Fall sucht die Funktion @code{find_root} die
444 Nullstellen f@"ur den Ausdruck @code{lhs(@var{expr}) - rhs(@var{expr})}.
446 @c Given that Maxima can evaluate @var{expr} or @var{f} over
447 @c @math{[@var{a}, @var{b}]} and that @var{expr} or @var{f} is continuous,
448 @c @code{find_root} is guaranteed to find the root, or one of the roots if there
451 Kann Maxima den Ausdruck @var{expr} oder die Funktion @var{f} in dem Intervall
452 @code{[@var{a}, @var{b}]} f@"ur alle Werte auswerten und ist der Ausdruck
453 @var{expr} oder die Funktion @var{f} in dem Intervall stetig, dann ist sicher,
454 dass @code{find_root} die Nullstelle oder zumindest eine Nullstelle findet,
455 wenn mehrere Nullstellen vorhanden sind.
457 @c @code{find_root} initially applies binary search.
458 @c If the function in question appears to be smooth enough,
459 @c @code{find_root} applies linear interpolation instead.
461 @code{find_root} beginnt mit einer bin@"aren Suche der Nullstelle. Erscheint
462 die Funktion als glatt genug, wendet Maxima einen Algorithmus mit einer linearen
463 Interpolation f@"ur die Suche der Nullstelle an.
465 @c The accuracy of @code{find_root} is governed by @code{find_root_abs} and
466 @c @code{find_root_rel}. @code{find_root} stops when the function in question
467 @c evaluates to something less than or equal to @code{find_root_abs},
468 @c or if successive approximants @var{x_0}, @var{x_1} differ by no more than
469 @c @code{find_root_rel * max(abs(x_0), abs(x_1))}. The default values of
470 @c @code{find_root_abs} and @code{find_root_rel} are both zero.
472 Die Genauigkeit der Nullstellensuche wird von den Optionsvariablen
473 @code{find_root_abs} und @code{find_root_rel} kontrolliert. @code{find_root}
474 endet, wenn die Auswertung der Funktion ein Ergebnis hat, das kleiner als
475 @code{find_root_abs} ist oder wenn aufeinander folgende Auswertungen
476 Ergebnisse @var{x_0} und @var{x_1} haben, die sich voneinander weniger als
477 @code{find_root_rel * max(abs(x_0), abs(x_1))} unterscheiden. Der Standardwert
478 der Optionsvariablen @code{find_root_abs} und @code{find_root_rel} ist Null.
480 @c @code{find_root} expects the function in question to have a different sign at
481 @c the endpoints of the search interval. When the function evaluates to a
482 @c number at both endpoints and these numbers have the same sign, the behavior
483 @c of @code{find_root} is governed by @code{find_root_error}.
484 @c When @code{find_root_error} is @code{true}, @code{find_root} prints an error
485 @c message. Otherwise @code{find_root} returns the value of
486 @c @code{find_root_error}. The default value of @code{find_root_error} is
489 @code{find_root} erwartet, dass die Funktion an den Endpunkten des Intervalls
490 f@"ur die Nullstellensuche ein unterschiedliches Vorzeichen hat. Hat die
491 Funktion an den Endpunkten des Intervalls dasselbe Vorzeichen, wird das
492 Verhalten der Funktion @code{find_root} von der Optionsvariablen
493 @code{find_root_error} kontrolliert. Hat @code{find_root_error} den Wert
494 @code{true}, wird eine Fehlermeldung ausgegeben. Ansonsten wird von
495 @code{find_root} der Wert von @code{find_root_error} als Ergebnis
496 zur@"uckgegeben. Der Standardwert von @code{find_root_error} ist @code{true}.
498 @c If @var{f} evaluates to something other than a number at any step in the
499 @c search algorithm, @code{find_root} returns a partially-evaluated
500 @c @code{find_root} expression.
502 Kann die Funktion @var{f} bei der Nullstellensuche nicht zu einer Zahl
503 ausgewertet werden, gibt @code{find_root} ein teilweise ausgewertetes Ergebnis
506 @c The order of @var{a} and @var{b} is ignored; the region in which a root is
507 @c sought is @math{[min(@var{a}, @var{b}), max(@var{a}, @var{b})]}.
509 Die Reihenfolge der Grenzen des Intervalls @var{a} und @var{b} wird ignoriert.
510 @code{find_root} sucht die Nullstellen immer in dem Intervall
511 @code{[min(@var{a}, @var{b}), max(@var{a}, @var{b})]}.
516 (%i1) f(x) := sin(x) - x/2;
518 (%o1) f(x) := sin(x) - -
520 (%i2) find_root (sin(x) - x/2, x, 0.1, %pi);
521 (%o2) 1.895494267033981
522 (%i3) find_root (sin(x) = x/2, x, 0.1, %pi);
523 (%o3) 1.895494267033981
524 (%i4) find_root (f(x), x, 0.1, %pi);
525 (%o4) 1.895494267033981
526 (%i5) find_root (f, 0.1, %pi);
527 (%o5) 1.895494267033981
528 (%i6) find_root (exp(x) = y, x, 0, 100);
530 (%o6) find_root(%e = y, x, 0.0, 100.0)
531 (%i7) find_root (exp(x) = y, x, 0, 100), y = 10;
532 (%o7) 2.302585092994046
534 (%o8) 2.302585092994046
538 @c -----------------------------------------------------------------------------
539 @node Einf@"uhrung in Fourierreihen, Funktionen und Variablen f@"ur Fourierreihen, Funktionen und Variablen f@"ur die schnelle Fourier-Transformation, Fourier-Transformationen
540 @section Einf@"uhrung in Fourierreihen
541 @c -----------------------------------------------------------------------------
543 @c The @code{fourie} package comprises functions for the symbolic computation
544 @c of Fourier series.
545 @c There are functions in the @code{fourie} package to calculate Fourier
546 @c integral coefficients and some functions for manipulation of expressions.
548 Das Paket @code{fourie} enth@"alt Funktionen f@"ur die symbolische Berechnungen
549 von Fourierreihen. Weiterhin enth@"alt das Paket Funktionen, um
550 Fourierkoeffizienten zu berechnen und einige weitere Funktionen.
552 @c -----------------------------------------------------------------------------
553 @node Funktionen und Variablen f@"ur Fourierreihen, , Einf@"uhrung in Fourierreihen, Fourier-Transformationen
554 @section Funktionen und Variablen f@"ur Fourierreihen
555 @c -----------------------------------------------------------------------------
559 @c --- 28.05.2011 DK -----------------------------------------------------------
561 @deffn {Funktion} equalp (@var{x}, @var{y})
563 @c Returns @code{true} if @code{equal (@var{x}, @var{y})} otherwise @code{false}
564 @c (doesn't give an error message like @code{equal (x, y)} would do in this
567 Gibt @code{true} zur@"uck, wenn @code{equal(@var{x}, @var{y})} das Ergebnis
568 @code{true} hat. Ansonsten ist das Ergebnis @code{false}.
571 @c --- 28.05.2011 DK -----------------------------------------------------------
572 @deffn {Funktion} remfun (@var{f}, @var{expr})
573 @deffnx {Funktion} remfun (@var{f}, @var{expr}, @var{x})
575 @c @code{remfun (@var{f}, @var{expr})} replaces all occurrences of
576 @c @code{@var{f} (@var{arg})} by @var{arg} in @var{expr}.
578 @code{remfun(@var{f}, @var{expr}} ersetzt @code{@var{f}(@var{arg})} durch
579 @var{arg} im Ausdruck @var{expr}.
581 @c @code{remfun (@var{f}, @var{expr}, @var{x})} replaces all occurrences of
582 @c @code{@var{f} (@var{arg})} by @var{arg} in @var{expr} only if @var{arg}
583 @c contains the variable @var{x}.
585 @code{remfun(@var{f}, @var{expr}, @var{x})} ersetzt @code{@var{f} (@var{arg})}
586 durch @var{arg} im Ausdruck @var{expr} nur dann, wenn @var{arg} die Variable
590 @c --- 28.05.2011 DK -----------------------------------------------------------
592 @deffn {Funktion} funp (@var{f}, @var{expr})
593 @deffnx {Funktion} funp (@var{f}, @var{expr}, @var{x})
595 @c @code{funp (@var{f}, @var{expr})}
596 @c returns @code{true} if @var{expr} contains the function @var{f}.
598 @code{funp(@var{f}, @var{expr})} hat das Ergebnis @code{true}, wenn der
599 Ausdruck @var{expr} die Funktion @var{f} enth@"alt.
601 @c @code{funp (@var{f}, @var{expr}, @var{x})} returns @code{true} if @var{expr}
602 @c contains the function @var{f} and the variable @var{x} is somewhere in the
603 @c argument of one of the instances of @var{f}.
605 @code{funp(@var{f}, @var{expr}, @var{x})} hat das Ergebnis @code{true}, wenn
606 der Ausdruck @var{expr} die Funktion @var{f} enthält und die Variable @var{x}
607 ein Argument der Funktion @var{f} ist.
610 @c --- 28.05.2011 DK -----------------------------------------------------------
612 @deffn {Funktion} absint (@var{f}, @var{x}, @var{halfplane})
613 @deffnx {Funktion} absint (@var{f}, @var{x})
614 @deffnx {Funktion} absint (@var{f}, @var{x}, @var{a}, @var{b})
616 @c @code{absint (@var{f}, @var{x}, @var{halfplane})}
617 @c returns the indefinite integral of @var{f} with respect to
618 @c @var{x} in the given halfplane (@code{pos}, @code{neg}, or @code{both}).
619 @c @var{f} may contain expressions of the form
620 @c @code{abs (x)}, @code{abs (sin (x))}, @code{abs(a) * exp (-abs(b) * abs(x))}.
622 @code{absint(@var{f}, @var{x}, @var{halfplane})} gibt das unbestimmte Integral
623 der Funktion @var{f} f@"ur die Variable @var{x} zur@"uck. Das Integral wird in
624 der angegebenen Halbebene @code{pos}, @code{neg} oder f@"ur beide Halbebenen
625 mit @code{both} berechnet. Der Integrand kann die Betragsfunktion enthalten:
626 @code{abs(x)}, @code{abs(sin(x))}, @code{abs(a) * exp(-abs(b) * abs(x))}.
628 @c @code{absint (@var{f}, @var{x})} is equivalent to
629 @c @code{absint (@var{f}, @var{x}, pos)}.
631 @code{absint(@var{f}, @var{x})} ist @"aquivalent zu
632 @code{absint(@var{f}, @var{x}, pos)}.
634 @c @code{absint (@var{f}, @var{x}, @var{a}, @var{b})} returns the definite
635 @c integral of @var{f} with respect to @var{x} from @var{a} to @var{b}.
636 @c SAME LIST AS ABOVE ??
637 @c @var{f} may include absolute values.
639 @code{absint(@var{f}, @var{x}, @var{a}, @var{b})} gibt das bestimmte Integral
640 der Funktion @var{f} f@"ur die Variable @var{x} in den Grenzen @var{a} und
641 @var{b} zur@"uck. Der Integrand kann die Betragsfunktion enthalten.
644 @c --- 28.05.2011 DK -----------------------------------------------------------
646 @deffn {Funktion} fourier (@var{f}, @var{x}, @var{l})
648 Berechnet die Fourier-Koeffizienten @code{a[0]}, @code{a[n]} und @code{b[n]}
649 der Funktion @code{@var{f}(@var{x})} f@"ur das Intervall @code{[-l, l]}. Die
650 Fourierreihe ist definiert als:
656 f(x) = > (b sin(-------) + a cos(-------))
662 Die Koeffizienten der Fourierreihe werden folgenderma@ss{}en berechnet:
678 a = l I f(x) cos(%pi l n x) dx
688 b = l I f(x) sin(%pi l n x) dx
694 @code{fourier} weist die Fourier-Koeffizienten Zwischenmarken zu. Die
695 Zwischenmarken werden als eine Liste zur@"uckgegeben.
697 Der Index der Summe ist immer das Symbol @var{n}. Sinus- und Kosinusfunktionen
698 mit ganzzahligen Vielfachen von @code{%pi} werden nicht automatisch vereinfacht.
699 Dies kann mit der Funktion @mref{foursimp} erreicht werden, der als Argument
700 die Liste der Fourier-Koeffizienten @"ubergeben wird.
702 Mit der Funktion @mref{fourexpand} kann die Fourierreihe aus den
703 Fourier-Koeffizienten konstruiert werden. Siehe auch die Funktion
704 @mrefdot{totalfourier}
706 Mit den Funktionen @mref{fourcos} und @mref{foursin} werden jeweils die
707 Koeffizienten der Kosinus- und Sinus-Entwicklung berechnet.
712 (%i1) load("fourie")$
714 (%i2) fourier(x, x, 1);
721 sin(%pi n) cos(%pi n)
722 (%t4) b = 2 (---------- - ----------)
726 (%o4) [%t2, %t3, %t4]
739 (%o7) [%t5, %t6, %t7]
740 (%i8) fourexpand(%, x, 1, inf);
744 2 > -------------------
748 (%o8) - ---------------------------
753 @c --- 28.05.2011 DK -----------------------------------------------------------
755 @deffn {Funktion} foursimp (@var{l})
757 @code{foursimp} wird auf das Ergebnis der Funktion @mref{fourier} angewendet,
758 um Sinus- und Kosinus-Funktionen zu vereinfachen, die ganzzahlige Vielfache
759 von @code{%pi} enthalten. Das Argument @var{l} ist eine Liste mit den
760 Koeffizienten der Fourierreihe, f@"ur die die Vereinfachung ausgef@"uhrt werden
763 @code{sin(n %pi)} wird zu @code{0} vereinfacht, wenn die Optionsvariable
764 @mref{sinnpiflag} den Wert @code{true} hat, und @code{cos(n %pi)} wird zu
765 @code{(-1)^n}, wenn die Optionsvariable @mref{cosnpiflag} den Wert @code{true}
768 Siehe die Funktion @mref{fourier} f@"ur ein Beispiel.
771 @c --- 28.05.2011 DK -----------------------------------------------------------
773 @defvr {Optionsvariable} sinnpiflag
774 Standardwert: @code{true}
776 Kontrolliert die Vereinfachung der Sinus-Funktion durch die Funktion
777 @code{foursimp}. Siehe die Funktion @mrefdot{foursimp}
780 @c --- 28.05.2011 DK -----------------------------------------------------------
782 @defvr {Optionsvariable} cosnpiflag
783 Standardwert: @code{true}
785 Kontrolliert die Vereinfachung der Kosinus-Funktion durch die Funktion
786 @code{foursimp}. Siehe die Funktion @mrefdot{foursimp}
789 @c NEEDS EXPANSION. EXPLAIN x AND p HERE (DO NOT REFER SOMEWHERE ELSE)
791 @c --- 28.05.2011 DK -----------------------------------------------------------
793 @deffn {Funktion} fourexpand (@var{l}, @var{x}, @var{p}, @var{limit})
795 Konstruiert aus der Liste der Fourier-Koeffizienten @var{l} eine Fourierreihe
796 mit @var{limit} Termen. Das Argument @var{limit} kann @code{inf} sein. Die
797 Argumente @var{x} und @var{p} haben dieselbe Bedeutung wie f@"ur die Funktion
800 Siehe die Funktion @mref{fourier} f@"ur ein Beispiel.
803 @c --- 28.05.2011 DK -----------------------------------------------------------
805 @deffn {Funktion} fourcos (@var{f}, @var{x}, @var{p})
807 @c Returns the Fourier cosine coefficients for @code{@var{f}(@var{x})} defined
808 @c on @code{[0, @var{p}]}.
810 Gibt die Kosinus-Koeffizienten einer Fourierreihe f@"ur die Funktion
811 @code{@var{f}(@var{x})} zur@"uck, die auf dem Intervall @code{[0, @var{p}]}
815 @c --- 28.05.2011 DK -----------------------------------------------------------
817 @deffn {Funktion} foursin (@var{f}, @var{x}, @var{p})
819 @c Returns the Fourier sine coefficients for @code{@var{f}(@var{x})} defined on
820 @c @code{[0, @var{p}]}.
822 Gibt die Sinus-Koeffizienten einer Fourierreihe f@"ur die Funktion
823 @code{@var{f}(@var{x})} zur@"uck, die auf dem Intervall @code{[0, @var{p}]}
829 @c --- 28.05.2011 DK -----------------------------------------------------------
830 @anchor{totalfourier}
831 @deffn {Funktion} totalfourier (@var{f}, @var{x}, @var{l})
833 Gibt die Fourierreihe der Funktion @var{f(x)} f@"ur das Intervall
834 @code{[@var{-l}, @var{l}]} zur@"uck. Das Ergebnis wird berechnet, indem
835 die nacheinander die Funktionen @mref{foursimp} und @mref{fourexpand} auf das
836 Ergebnis der Funktion @mref{fourier} angewendet werden.
841 (%i1) load("fourie")$
843 (%i2) totalfourier(x, x, 1);
850 sin(%pi n) cos(%pi n)
851 (%t4) b = 2 (---------- - ----------)
870 2 > -------------------
874 (%o7) - ---------------------------
883 @c --- 28.05.2011 DK -----------------------------------------------------------
885 @deffn {Funktion} fourint (@var{f}, @var{x})
887 @c Constructs and returns a list of the Fourier integral coefficients of
888 @c @code{@var{f}(@var{x})} defined on @code{[minf, inf]}.
890 Konstruiert eine Liste der Fourierintegral-Koeffizienten der Funktion
891 @code{@var{f}(@var{x})}, die auf dem Intervall @code{[minf, inf]} definiert ist.
896 @c --- 28.05.2011 DK -----------------------------------------------------------
898 @deffn {Funktion} fourintcos (@var{f}, @var{x})
900 @c Returns the Fourier cosine integral coefficients for @code{@var{f}(@var{x})}
901 @c on @code{[0, inf]}.
903 Gibt die Koeffizienten des Kosinus-Fourierintegrals der Funktion
904 @code{@var{f}(@var{x})} zur@"uck, die auf dem Intervall @code{[0, inf]}
911 @c --- 28.05.2011 DK -----------------------------------------------------------
913 @deffn {Funktion} fourintsin (@var{f}, @var{x})
915 @c Returns the Fourier sine integral coefficients for @code{@var{f}(@var{x})}
916 @c on @code{[0, inf]}.
918 Gibt die Koeffizienten des Sinus-Fourierintegrals der Funktion
919 @code{@var{f}(@var{x})} zur@"uck, die auf dem Intervall @code{[0, inf]}
923 @c --- End of Numerical.de.texi ------------------------------------------------