---
title: "Lecture 14: Szeregi Fouriera"
lecture_number: 14
has_solutions: true
has_exercises: true
file_format: mystnb
kernelspec:
  name: sagemath
  display_name: SageMath
---

```{include} ../_includes/sagecell-loader.md
```

# Szeregi Fouriera

## Harmoniki

:::{narration}

Niech $\omega > 0$ oraz $a, b\in\rr$, przy czym $a^2 + b^2 \neq 0$.
:::

:::{prf:definition}

[GEOGEBRA](https://www.geogebra.org/calculator/wrqqkswr)
**Harmoniką** {index}`harmonika` nazywamy funkcję $f:\rr\to\rr$
o okresie $\dfrac{2\pi} \omega$
zadaną wzorem

$$
f(t) = a \cos (\omega t) + b \sin (\omega t).
$$

Liczbę $\omega$ nazywamy
**pulsacją** {index}`harmonika; pulsacja` tej harmoniki.
:::

```{code-cell} sage
:tags: [remove-input, hide-output]
show(plot(
   [3*cos(x), -4*sin(x), 5*cos(x+atan2(4,3))],
   (x, -pi, pi),
   thickness=2, aspect_ratio=1,
   legend_label=[r'$3\cos x$', r'$-4\sin x$', r'$5\cos(x+\varphi)$']
   ),
   transparent=True, frame=False)
```

:::{prf:remark}

W zastosowaniach ważna jest również inna postać harmoniki

$$
a \cos (\omega t) + b \sin (\omega t) = r \cos(\omega t + \varphi),
$$

gdzie
$ r > 0$
   oraz
$\varphi \in \rr$.

W celu znalezienia zależności między parametrami zauważmy, że

$$
r \cos(\omega t + \varphi)
   = r \cos (\omega t)\cdot \cos \varphi
   - r \sin (\omega t)\cdot \sin \varphi,
$$

więc

$$
\begin{cases}
      a = r \cos \varphi \\
      b = -r \sin \varphi
   \end{cases}
   \Leftrightarrow
   \quad
   \begin{cases}
      r^2 = a^2 + b^2        \\
      \cos \varphi = \dfrac a r \\
      \sin \varphi = -\dfrac b r
   \end{cases}
   .
$$

Odwołując się do liczb zespolonych
możemy zapisać równość
$
\quad
a - bj = r\cdot\left(\cos \varphi + j \sin \varphi\right),
\quad
$
z której otrzymamy równoważne zależności:

$$
r = |a-bj| = \sqrt{a^2 + b^2} ,
   \quad
   \varphi = \ArgPrincipal \Paren{a - b j}
.
$$

:::

:::{prf:definition}

Liczbę $r > 0$ nazywamy
**amplitudą**, {index}`harmonika; amplituda`
zaś $\varphi$ --
**fazą początkową** {index}`harmonika; fazą początkowa`
tej harmoniki.
:::

## Szeregi trygonometryczne

```{code-cell} sage
:tags: [remove-input, hide-output]
show(
plot(
[cos(0*x), cos(x), cos(2*x), cos(3*x), cos(4*x)],
(x, -pi, pi),
thickness=2, aspect_ratio=1,
legend_label=[r'$\cos 0\cdot x$', r'$\cos x$', r'$\cos 2x$', r'$\cos 3x$', r'$\cos 4x$']
),
   transparent=True, frame=False
)
```

```{code-cell} sage
:tags: [remove-input, hide-output]
show(
plot(
[sin(x), sin(2*x), sin(3*x), sin(4*x)],
(x, -pi, pi),
thickness=2, aspect_ratio=1,
legend_label=[r'$\sin x$', r'$\sin 2x$', r'$\sin 3x$', r'$\sin 4x$']
),
   transparent=True, frame=False
)
```

:::{narration}

Przypomnijmy dwa ciągi funkcyjne:

1. funkcji trygonometrycznych cosinus, gdzie $\ell\in\rr_+$ jest ustalone
   i $f_n:\rr \to \rr$,

   $$
   \displaystyle f_n(x) = \cos \frac {n\pi x}{\ell},
   \qquad
   n\in \nn_0

   $$

   Wspólny okres dla tych funkcji wynosi $T=2\ell$.

2. funkcji trygonometrycznych sinus, gdzie $\ell\in\rr_+$ jest ustalone
   i $f_n:\rr \to \rr$,

   $$
   \displaystyle f_n(x) = \sin \frac {n\pi x}{\ell},
   \qquad
   n\in \nn
   .
   $$

   Wspólny okres dla tych funkcji wynosi $T=2\ell$.

   Ustalmy $\ell\in\rr_+$ i
   niech $(a_n)_{n\in\nn_0}$ i $(b_n)_{n\in\nn}$ będą ciągami liczb rzeczywistych.

   Rozważmy ciąg funkcyjny $(f_n: \rr \to \rr)_{n\in\nn_0}$,
   harmonik o pulsacji $\dfrac {n\pi}{\ell}$
   (czyli okresie $\dfrac {2\ell} n$ dla $n\in \nn$):

   $$
   f_0(x) & = \frac{a_0} 2\ifcdot\cos \frac {0\pi x}{\ell} = \frac{a_0} 2,
      \\
   f_n(x) & = a_n\ifcdot\cos \frac {n\pi x}{\ell}
      + b_n\ifcdot\sin \frac {n\pi x}{\ell}
      \qquad
      \text{dla }n\in\nn.
   $$

   Funkcje $f_n$ mają wspólny okres $2\ell$,
   więc są jednoznacznie wyznaczone przez swoje wartości
   na przedziale $[-\ell, \ell]$.

   Zatem w zależności od potrzeby możemy zajmować się:

     - funkcjami obciętymi $f_n : [-\ell, \ell] \to \rr$

     - funkcjami okresowymi $f_n : \rr \to \rr$ o wspólnym okresie $2\ell$.
  :::

:::{prf:definition}

[GEOGEBRA](https://www.geogebra.org/calculator/db5ewqgr)
**Wielomianem trygonometrycznym** {index}`wielomian; trygonometryczny`
na przedziale $[-\ell, \ell]$
stopnia $n$ nazywamy $n$-tą sumę częściową tego ciągu

$$
S_n(x) = \sum_{k=0}^n f_k(x)
    & = \frac{a_0} 2 + \sum_{k=1}^n \left[a_k\ifcdot\cos \frac {k\pi x}{\ell}
      + b_k\ifcdot\sin \frac {k\pi x}{\ell} \right]
\\
    & = \frac{a_0} 2
   + \left( a_1\ifcdot\cos \frac {\pi x}{\ell}
   + b_1\ifcdot\sin \frac {\pi x}{\ell} \right)
   + \ldots
   + \left( a_n\ifcdot\cos \frac {n\pi x}{\ell}
   + b_n\ifcdot\sin \frac {n\pi x}{\ell} \right)
   \\
    & =
   \left(
   \frac {a_0} 2
   +
   a_1\ifcdot\cos \frac {\pi x}{\ell}
   + \ldots
   + a_n\ifcdot\cos \frac {n\pi x}{\ell}
   \right)
   + \left(
   b_1\ifcdot\sin \frac {\pi x}{\ell}
   + \ldots
   + b_n\ifcdot\sin \frac {n\pi x}{\ell}
   \right) .
$$

**Szeregiem trygonometrycznym** {index}`szereg; trygonometryczny`
na przedziale $[-\ell, \ell]$ nazywamy
ciąg sum częściowych $(S_n)_{n\in\nn}$ oraz jego granicę

$$
S(x) = \frac{a_0} 2 + \Series \left[a_n\ifcdot\cos \frac {n\pi x}{\ell}
      + b_n\ifcdot\sin \frac {n\pi x}{\ell} \right] ,
$$

gdzie
liczby $a_n$ dla $n\in\nn_0$, oraz $b_n$ dla $n\in\nn$ nazywamy
**współczynnikami szeregu trygonometrycznego**.
:::

:::{prf:remark}

1. W powyższych definicjach możemy przyjąć jedną z dwóch interpretacji:

   - $S_n, S : [-\ell, \ell] \to \rr$
   - $S_n, S : \rr \to \rr$ są funkcjami okresowymi o wspólnym okresie
     $T = 2\ell$.

2. W teorii sygnałów:

   - $f_0 :\rr \to \rr$ to sygnał stały
   - $f_n : \rr \to \rr$ to sygnał harmoniczny
     o okresie podstawowym $\displaystyle\frac {2\ell} n$.

     W szczególności,
     $f_1$ jest sygnałem harmonicznym podstawowym o okresie $2\ell$.
   - suma częściowa $S_n : \rr \to \rr$
     odpowiada wypadkowej tych sygnałów z odpowiednimi amplitudami.

3. Z rozważań o harmonikach wiemy, że dla $n\in\nn$ mamy

   $$
   \begin{aligned}
   f_n(x) & = a_n\ifcdot\cos \frac {n\pi x}{\ell}
   + b_n\ifcdot\sin \frac {n\pi x}{\ell}
   = r_n \ifcdot\cos\left(\frac {n\pi x}{\ell} + \varphi_n\right),
   \end{aligned}
   $$

   gdzie
   $r_n = \Absolute{a_n - b_n j} \geq 0$, oraz
   $\varphi_n = \ArgPrincipal\Paren{a_n - b_n j} \in \left(-\pi, \pi \right]
   $ jeśli $a_n\cdot b_n\neq 0$.

   Stąd szereg trygonometryczny można inaczej zapisać w postaci

   $$
   S(x) = \frac {a_0} 2 + \Series r_n \ifcdot\cos\left(\frac {n\pi x}{\ell} + \varphi_n\right).
   $$

:::

## Warunki Dirichleta

:::{narration}

Niech $X\subseteq \rr$ oraz $a,b \in \rr$, $a< b$.
:::

:::{prf:definition}

Funkcję $f:X\to\rr$, ograniczoną w przedziale $(a, b)$,
nazywamy
**przedziałami monotoniczną** {index}`funkcja; przedziałami monotoniczna`
w tym przedziale,
jeżeli można go podzielić
na skończoną liczbę podprzedziałów,
wewnątrz których funkcja $f$ jest monotoniczna.
:::

```{code-cell} sage
:tags: [remove-input, hide-output]
show(plot(
x - floor(x),
(x, -1.3, 1.3),
thickness=2, aspect_ratio=1,
color=PWBlue,
legend_label=r'$x-[x]$'
),
   transparent=True, frame=False)
```

:::{prf:example}
:class: [example]

Funkcja $f:\rr\to \rr$,

$$
f(x) = x - [x],
$$

jest przedziałami monotoniczna na każdym przedziale $(a, b)$.
:::

```{code-cell} sage
:tags: [remove-input, hide-output]
show(plot(
   sin(x^(-1)),
   (x, 0.01, .1),
   thickness=2, aspect_ratio=.05,
   color=PWBlue,
   legend_label=r'$\sin\frac{1}{x}$'
   ),
   transparent=True, frame=False)
```

:::{prf:example}
:class: [example]

Funkcja $f:(0, + \infty)\to \rr$,

$$
f(x) = \sin \frac 1 x,
$$

- dla każdego $b>0$, nie jest przedziałami monotoniczna w przedziale $(0, b)$

- dla każdych $b > a >0$, jest przedziałami monotoniczna na każdym przedziale $(a, b)$.

Zauważmy, że $f$ jest złożeniem funkcji $\sin x$ oraz $\frac 1 x$,
które są przedziałami monotoniczne na każdym podprzedziale $\rr\setminus\Set{0}$.

Zatem złożenie funkcji przedziałami monotonicznych nie musi mieć tej własności.
:::

:::{prf:example}
:class: [example]

Podobnie suma funkcji przedziałami monotonicznych nie musi mieć tej własności.

W tym celu można pokazać, że $f_1(x) = x^2\sin\frac 1 x + 3x$ oraz $f_2(x) = -3x$
są monotoniczne (więc również na przedziałami) w przedziale $(0,+\infty)$,
ale ich suma $f_1(x) + f_2(x) = x^2\sin\frac 1 x$ nie jest nawet przedziałami monotoniczna.
:::

:::{prf:proposition}

Jeśli ograniczona funkcja $f:(a,b)\to\rr$
ma skończoną liczbę ekstremów lokalnych,
to jest przedziałami monotoniczna.
:::

:::{prf:definition}

Funkcja $f:X\to \rr $, ograniczona w przedziale $(a,b)$,
spełnia w przedziale $[a, b]$
**warunki Dirichleta** {index}`warunki Dirichleta`, jeżeli:

1. $f$ jest przedziałami monotoniczna w $(a, b)$
2. $f$ jest ciągła w $(a, b)$,
   z wyjątkiem co najwyżej skończonej liczby punktów nieciągłości I-go rodzaju,
   przy czym w każdym punkcie nieciągłości $x_0$
   spełniony jest warunek

   $$
   f(x_0) = \frac 1 2 \left(\LimIn{x_0^-} f(x) + \LimIn{x_0^+} f(x)  \right)
   $$

3. na końcach $[a, b]$ spełnione są równości

   $$
   f(a) = f(b) = \frac 1 2 \left( \LimIn{a^+} f(x) + \LimIn{b^-} f(x) \right).
   $$

   Warunki te nazywamy odpowiednio: pierwszym, drugim i trzecim warunkiem Dirichleta.
:::

```{code-cell} sage
:tags: [remove-input, hide-output]
show(plot(
x - floor(x),
(x, -1,-0.001),
thickness=2, aspect_ratio=1,
color=PWBlue,
legend_label=r'$x-[x]$'
) +
plot(
x - floor(x),
(x, 0,0.999),
thickness=2, aspect_ratio=1,
color=PWRed,
legend_label=r'$x-[x]$'
),
   transparent=True, frame=False)
```

::::{exercise}
:label: lec-14-ex-01
:class: [exercise]

Funkcja $f:[-1, 1]\to \rr$,
$f(x) = x - [x],$
nie spełnia warunków Dirichleta na przedziale $[-1,\ 1]$.

Jak należy zmienić jej wartości w punktach nieciągłości i na brzegu dziedziny,
by warunki były spełnione?

:::{note}
:class: [see-problem]

Pomoże rozwiązać {numref}`prob-16-ex-01`, {numref}`prob-16-ex-02`, {numref}`prob-16-ex-03`, {numref}`prob-16-ex-04`, {numref}`prob-16-ex-05`, {numref}`prob-16-ex-06`, {numref}`prob-16-ex-07`, {numref}`prob-16-ex-08`, {numref}`prob-16-ex-09`.
:::

::::

:::{solution-without-reference}
:class: [solution] dropdown

1. Funkcja jest rosnąca na $(-1, 0)$ i na $(0, 1)$
   więc jest przedziałami monotoniczna.
2. Funkcja jest ciągła w przedziale $(-1, 1)$
   poza punktem $x_0 = 0$.

   Drugi warunek Dirichleta będzie spełniony
   jeśli

   $$
   \begin{aligned}
   f(0) & = \frac 1 2 \left(\LimIn{0^-} f(x) + \LimIn{0^+} f(x)  \right)
   = \frac 1 2 \Paren{\LimIn{0^-} \Paren{x+1} + \LimIn{0^+} x }
   = \frac 1 2 \Paren{1 + 0} = \frac 1 2
   .
   \end{aligned}
   $$

3. Trzeci warunek Dirichleta będzie spełniony jeśli

   $$
   f(-1) = f(1)
   = \frac 1 2 \Paren{ \LimIn{-1^+} f(x) + \LimIn{1^-} f(x) }
   = \frac 1 2 \Paren{ \LimIn{-1^+} \Paren{x+1} + \LimIn{1^-} x }
   = \frac 1 2 \Paren{ 0 + 1} = \frac 1 2
   .
   $$

:::

## Szereg trygonometryczny Fouriera

:::{narration}

Niech $\ell >0$
i niech $f: [-\ell, \ell] \to \rr$ będzie funkcją całkowalną.
:::

:::{prf:definition}

Przyjmijmy:

```{math}
:label: eq-FourierCoeff

\begin{aligned}
      a_n & = \frac 1 \ell \IntDef{-\ell}{\ell}{f(x)\cdot \cos \frac {n\pi x}{\ell} },
      \qquad \text{dla } n\in \nn_0 ,
      \\
      b_n & = \frac 1 \ell \IntDef{-\ell}{\ell}{f(x)\cdot \sin \frac {n\pi x}{\ell} },
      \qquad \text{dla } n\in \nn ,
\end{aligned}
```

w szczególności

$$
a_0  = \frac 1 \ell \IntDef{-\ell}{\ell}{f(x)}.
$$

Szereg trygonometryczny

$$
S_f(x) = \frac{a_0} 2 + \Series \left[a_n\ifcdot\cos \frac {n\pi x}{\ell}
      + b_n\ifcdot\sin \frac {n\pi x}{\ell} \right],
$$

nazywamy
**szeregiem trygonometrycznym Fouriera** {index}`szereg; trygonometryczny Fouriera`
funkcji $f$ w przedziale $[-\ell, \ell]$.
:::

:::{prf:theorem} Dirichleta

Niech $\ell >0$
i niech $f: [-\ell, \ell] \to \rr$ będzie funkcją całkowalną
spełniającą warunki Dirichleta na przedziale $[-\ell,\ell]$.

Wówczas

1. dla każdego $x\in  [-\ell, \ell]$
   zachodzi równość

   $$
   f(x) = S_f(x) = \frac{a_0} 2 + \Series \left[a_n\ifcdot\cos \frac {n\pi x}{\ell}
   + b_n\ifcdot\sin \frac {n\pi x}{\ell} \right],
   $$

   gdzie współczynniki $a_n, b_n$ dane są wzorami {eq}`eq-FourierCoeff`

2. jeśli dla każdego $x\in  [-\ell, \ell],$

   $$
   f(x) = \frac{a_0} 2 + \Series \left[a_n\ifcdot\cos \frac {n\pi x}{\ell}
   + b_n\ifcdot\sin \frac {n\pi x}{\ell} \right],
   $$

   to współczynniki $a_n, b_n$ dane są wzorami {eq}`eq-FourierCoeff`.
:::

:::{prf:corollary}

Jeśli $f:\rr \to \rr$ jest funkcją całkowalną, okresową o okresie podstawowym
$2\ell$, spełniającą warunki Dirichleta na przedziale $[-\ell,\ell]$,
to powyższa równość jest prawdziwa dla $x\in \rr$ i

$$
\begin{aligned}
a_n & = \frac 1 \ell \IntDef{x_0}{x_0+ 2\ell}{f(x)\cdot \cos \frac {n\pi x}{\ell} },
\\
   b_n & = \frac 1 \ell \IntDef{x_0}{x_0 + 2\ell}{f(x)\cdot \sin \frac {n\pi x}{\ell} },
\end{aligned}
$$

dla $n\in \nn_0$, gdzie $x_0\in\rr$ można wybrać dowolnie (w szczególności można przyjąć $x_0 = 0$).
:::

:::{prf:remark}

1. Jeśli dla funkcji $f$ zachodzi równość z powyższego twierdzenia,
   to mówimy, że funkcja $f$ rozwija się w szereg Fouriera w przedziale $[-\ell, \ell]$.
2. Punkt 2. z powyższego twierdzenia mówi, że
   rozwinięcie w szereg Fouriera funkcji $f$ jest jednoznaczne jeśli tylko istnieje.
3. Jeśli $f:[-\ell, \ell]\to \rr$ jest funkcją przedziałami monotoniczną
   i nieciągłą w skończonej liczbie punktów, przy czym są to nieciągłości I-go
   rodzaju, to można "poprawić" jej wartości w tych punktach,
   tak by warunki Dirichleta były spełnione.

   Następnie można rozwinąć "poprawioną" funkcję w szereg Fouriera
   i równość z twierdzenia Dirichleta, będzie zachodzić we wszystkich
   punktach ciągłości $f$ z przedziału $(-\ell, \ell)$.
4. Jeśli $f:[-\ell, \ell] \to \rr$
   jest **nieparzysta**
   i rozwija się w szereg Fouriera,
   to:

   - funkcja
     $\displaystyle x \mapsto f(x)\cdot \cos \frac {n\pi x}{\ell} $ jest nieparzysta
     jako iloczyn funkcji nieparzystej i parzystej; to implikuje, że

     $$
     a_n  = \frac 1 \ell \IntDef{-\ell}{\ell}{f(x)\cdot \cos \frac {n\pi x}{\ell} } = 0,
     \qquad \text{dla } n\in \nn_0
     $$

   - funkcja
     $\displaystyle x \mapsto f(x)\cdot \sin \frac {n\pi }{\ell} x $ jest parzysta,
     jako iloczyn funkcji nieparzystych; to implikuje, że

     $$
     b_n  = \frac 2 \ell \IntDef{0}{\ell}{f(x)\cdot \sin \frac {n\pi x}{\ell} },
     \quad \text{dla } n\in \nn.
     $$

   Mówimy, że funkcja $f$ rozwija się w
   **szereg sinusów**: {index}`szereg; sinusów`

   $$
   \quad
   f(x) = \Series b_n\ifcdot\sin \frac {n\pi x}{\ell}.
   $$

5. Analogicznie, jeśli $f: [-\ell, \ell] \to \rr$
   jest **parzysta**
   i rozwija się w szereg Fouriera,
   to:

   - funkcja
     $\displaystyle x \mapsto f(x)\cdot \cos \frac {n\pi x}{\ell} $ jest parzysta
     jako iloczyn funkcji parzystych; to implikuje, że

     $$
     a_n  = \frac 2 \ell \IntDef{0}{\ell}{f(x)\cdot \cos \frac {n\pi x}{\ell} },
     \quad \text{dla } n\in \nn_0
     $$

   - funkcja
     $\displaystyle x \mapsto f(x)\cdot \sin \frac {n\pi }{\ell} x $ jest nieparzysta,
     jako iloczyn funkcji parzystej i nieparzystej; to implikuje, że

     $$
     b_n  = \frac 1 \ell \IntDef{-\ell}{\ell}{f(x)\cdot \sin \frac {n\pi x}{\ell} } = 0,
     \quad \text{dla } n\in \nn.
     $$

   Mówimy, że funkcja $f$ rozwija się w
   **szereg cosinusów**: {index}`szereg; cosinusów`

   $$
   f(x) = \frac{a_0} 2 + \Series a_n\ifcdot\cos \frac {n\pi x}{\ell}.
   $$

:::

```{code-cell} sage
:tags: [remove-input, hide-output]
N = 4
Left = -pi/2
Right = pi/2
f = piecewise([((Left, Right), sin(x))])

show(
   plot(f,
   (Left, Right),
   thickness=2,
   aspect_ratio=1,
   color=PWBlue,
   legend_label=r'$f(x)$'
   ) +
   PartialFourierSeries(f, Left, Right, N)
   ,
   transparent=True, frame=False
)
from IPython.display import Math, display
display(Math(r"f_{N}(x) = " + latex(f.fourier_series_partial_sum(N))))
```

```{code-cell} sage
:tags: [remove-input, hide-output]
N = 15
Left = -pi/2
Right = pi/2
f = piecewise([((Left, Right), sin(x))])

show(
   plot(f,
   (Left, Right),
   thickness=2,
   aspect_ratio=1,
   color=PWBlue,
   legend_label=r'$f(x)$'
   ) +
   PartialFourierSeries(f, Left, Right, N)
   ,
   transparent=True, frame=False
)
from IPython.display import Math, display
display(Math(r"f_{N}(x) = " + latex(f.fourier_series_partial_sum(N))))
```

::::{exercise}
:label: lec-14-ex-02
:class: [exercise]

Znajdźmy rozwinięcie Fouriera (w szczególności współczynniki $a_n$ i $b_n$)
funkcji $f(x) = \sin x$ w przedziale $[-\ell, \ell]$ dla:

:::{container} columns-3-auto

1. $\ell = 2\pi$
2. $\ell = \pi$
3. $\displaystyle \ell = \frac \pi 2$.

:::

:::{note}
:class: [see-problem]

Pomoże rozwiązać {numref}`prob-16-ex-01`.
:::

::::

```{code-cell} sage
:tags: [remove-cell]
from myst_nb import glue
from IPython.display import Math

# Maxima asks "Is 2*n equal to 1?" while integrating sin(2nx)·sin(x); n >= 1 here.
assume(n, 'integer')
assume(2*n > 1)

fourier_bn_sin = Math(
    r'\begin{aligned}'
    r'b_n &= \frac 2 \ell \IntDef{0}{\ell}{f(x)\cdot \sin \frac{n\pi x}{\ell}}'
    r'= ' + Fourier(b, n, pi/2, sin(x), limit_mode=1) +
    r'\\ &= \frac{4}{\pi} \IntDef{0}{\frac{1}{2}\pi}{'
    r'\frac{1}{2} \Brack{-\cos((2n+1)x) - \cos(-(2n-1)x)} }'
    r'\\ &= ' + FourierComputeInt(b, n, pi/2, sin(x), limit_mode=1) +
    r'\\ &= ' + FourierComputeIntSubstitute(b, n, pi/2, sin(x), limit_mode=1) +
    r'\\ &= ' + FourierComputeIntSubstituteAndSubtract(b, n, pi/2, sin(x), limit_mode=1) +
    r'= '     + FourierComputeIntSubstituteAndSubtractFullSimplify(b, n, pi/2, sin(x), limit_mode=1) +
    r'= \frac{8n \cdot (-1)^{n+1}}{\pi \cdot \Paren{4n^2 - 1}} .'
    r'\end{aligned}'
)

glue("fourier_bn_sin", fourier_bn_sin, display=False)

forget(2*n > 1)
forget(n, 'integer')
```

:::{solution-without-reference}
:class: [solution] dropdown

W każdym z trzech przypadków sprawdzamy warunki Dirichleta:

- Funkcja jest przedziałami monotoniczna, bo ma skończoną liczbę ekstremów lokalnych.
- Funkcja jest ciągła.
- Trzeci warunek Dirichleta będzie spełniony jeśli

  $$
  f(-\ell) = f(\ell)
  = \frac 1 2 \Paren{ \LimIn{-\ell^+} \sin x + \LimIn{\ell^-} \sin x }
  = \frac 1 2 \Paren{ \sin(-\ell) + \sin(\ell)} = 0
  .
  $$

W pierwszych dwóch przypadkach warunek jest spełniony,
zaś w trzecim należy przyjąć $f\Paren{-\frac \pi 2} = f\Paren{\frac \pi 2} = 0.$

Ponadto zauważmy, że funkcja jest nieparzysta, więc
$
\quad
\Forall{n \in \nn_0} a_n = 0. $

1. Jeśli
   $
   \quad
   \ell = 2\pi$,
   $\quad$
   to
   $
   \quad
   \dfrac {n\pi x}{\ell} = \dfrac {n\pi x}{2\pi} = n\cdot \dfrac {x}{2}.
   \quad
   $
   Zapiszmy funkcję w postaci

   $$
   f(x) = 1\cdot \sin\Paren{2\cdot \frac x 2 }
   = 0\cdot \sin\Paren{1\cdot \frac x 2 }
   + 1\cdot \sin\Paren{2\cdot \frac x 2 }
   + 0\cdot \sin\Paren{3\cdot \frac x 2 }
   + \ldots .
   $$

   To jest rozwinięcie w szereg Fouriera!

   Stąd wniosek, że:

   $$
   b_1 = 0,
   \quad
   b_2 = 1,
   \quad
   b_3 = 0,
   \ldots
   \qlq
   b_2 = 1
   \ \wedge \
   \Forall{n\in \nn\setminus\Set{2}} b_n = 0
   \, .
   $$

2. Jeśli
   $
   \quad
   \ell = \pi$,
   $\quad$
   to
   $
   \quad
   \dfrac {n\pi x}{\ell} = \dfrac {n\pi x}{\pi} = n\cdot x .
      \quad
   $
      Zapiszmy funkcję w postaci

   $$
   f(x) = 1\cdot \sin\Paren{1\cdot x }
   = 1\cdot \sin\Paren{1\cdot x }
   + 0\cdot \sin\Paren{2\cdot x }
   + 0\cdot \sin\Paren{3\cdot x }
   + \ldots .
   $$

   To jest rozwinięcie w szereg Fouriera!

   Stąd wniosek, że:

   $$
   b_1 = 1,
   \quad
   b_2 = 0,
   \quad
   b_3 = 0,
   \ldots
   \qlq
   b_1 = 1
   \ \wedge \
   \Forall{n\in \nn_2} b_n = 0
   \, .
   $$

3. Jeśli
   $
   \quad
   \ell = \dfrac \pi 2$,
   $\quad$
   to
   $
   \quad
   \dfrac {n\pi x}{\ell} = \dfrac {n\pi x}{\frac \pi 2} = n\cdot 2x .
   \quad
   $
   Tym razem musimy policzyć całki:

```{glue:math} fourier_bn_sin
```

   Zatem

   $$
   \sin(x) = \Series \frac {8 n \cdot (-1)^{n+1}} {\pi\cdot\Paren{4 n^2 - 1}}
   \ifcdot \sin \Paren{2n x}
   \quad
   \text{dla }
   x \in \Brack{-\tfrac \pi 2, \tfrac \pi 2} .
   $$

:::

```{code-cell} sage
:tags: [remove-input, hide-output]
show(plot(
   1 + 3*sin(2*x)*cos(3*x)
   ,
   (x, -pi,pi),
   thickness=3,
   aspect_ratio=1,
   color=PWBlue,
   legend_label=r'$1+3\sin 2x\cos 3x$'
   ),
   transparent=True, frame=False)
```

::::{exercise}
:label: lec-14-ex-03
:class: [exercise]

Rozwińmy w szereg Fouriera
funkcję

$$
f(x) = 1 + 3\sin 2 x\cdot \cos 3x
$$

w przedziale $[-\pi, \pi]$ i podajmy wartości całek:

$$
I_1 = \frac 1 \pi \IntDef{-\pi}{\pi} {f(x) \cos 5x},
   \quad
   I_2 = \frac 2 \pi \IntDef{-\pi}{\pi} {f(x) \sin 5x}.
$$

:::{note}
:class: [see-problem]

Pomoże rozwiązać {numref}`prob-16-ex-02`, {numref}`prob-16-ex-06`.
:::

::::

:::{solution-without-reference}
:class: [solution] dropdown

Pozostawiam czytelnikowi sprawdzenie warunków Dirichleta.

Jeśli
$
\quad
\ell = \pi$,
$\quad$
to
$
\quad
\dfrac {n\pi x}{\ell} = \dfrac {n\pi x}{\pi} = n\cdot x .
\quad
$
Korzystając ze wzorów redukcyjnych zapiszmy funkcję w postaci

$$
f(x) = 1 + 3\sin 2 x\cdot \cos 3x
   = 1 + 3\cdot \tfrac 1 2\Paren{\sin (2-3) x +  \sin(2+3)x}
   = 1 - \tfrac 3 2 \sin \Paren{1\cdot x} + \tfrac 3 2 \sin \Paren{5\cdot x}
   .
$$

To jest rozwinięcie w szereg Fouriera.

Stąd wniosek, że:

$$
\frac {a_0} 2 = 1
   \ \imply \
   a_0 = 2
   \quad
    &
   \wedge
   \quad
   \Forall{n\in \nn} a_n = 0
   \, ,
   \\
   b_1 = -\tfrac 3 2,
   \quad
   b_5 = \tfrac 3 2,
   \quad
    &
   \wedge
   \quad
   \Forall{n\in \nn\setminus\Set{1,5}} b_n = 0
   \, .
$$

W celu obliczenia całek zauważamy, że:

$$
\begin{aligned}
I_1 & = \frac 1 \pi \IntDef{-\pi}{\pi} {f(x) \cos 5x} = a_5 = 0,
   \\
   I_2 & = 2\cdot \frac 1 \pi \IntDef{-\pi}{\pi} {f(x) \sin 5x} = 2 \cdot b_5 = 3.
\end{aligned}
$$

:::

```{code-cell} sage
:tags: [remove-input, hide-output]
var('A')
a = pi
f = piecewise([((-pi,0), -a*2^(-1)), ((0,pi), a*2^(-1))])
g(x) = A

show(plot(
a*2^(-1)*sgn(x),
(x, -pi,-0.001),
thickness=2, aspect_ratio=1,
color=PWBlue,
legend_label=r'$\frac{A}{2}\operatorname{sgn}x$'
) +
plot(
a*2^(-1)*sgn(x),
(x, 0.001,pi),
thickness=2,
color=PWRed,
legend_label=r'$\frac{A}{2}\operatorname{sgn}x$'
) +
point((0,0), color = PWBlue, size = 40) +
point((-pi,0), color = PWBlue, size = 40) +
point((pi,0), color = PWBlue, size = 40),
   transparent=True, frame=False)
```

::::{exercise}
:label: lec-14-ex-04
:class: [exercise]

Niech $A\in \rr $.

Rozwińmy w szereg Fouriera funkcję
$f :[-\pi,\pi] \to \rr$,

$$
f(x) =\begin{cases}
   A\cdot \sgn x & \text{dla } x \in (-\pi, \pi)     \\
   0       & \text{dla } x \in \Set{-\pi, \pi}
   \end{cases} .
$$

:::{note}
:class: [see-problem]

Pomoże rozwiązać {numref}`prob-16-ex-03`, {numref}`prob-16-ex-05`, {numref}`prob-16-ex-07`, {numref}`prob-16-ex-09`.
:::

::::

```{code-cell} sage
:tags: [remove-cell]
from myst_nb import glue
from IPython.display import Math


var('A')
g = lambda x: A

fourier_bn_const = Math(
    r'\begin{aligned}'
    r'b_n &= \frac 2 \ell \IntDef{0}{\ell}{f(x)\cdot \sin \frac{n\pi x}{\ell}}'
    r'= ' + Fourier(b, n, pi, g, limit_mode=1) +
    r'\\ &= ' + FourierComputeInt(b, n, pi, g, limit_mode=1) +
    r'= '     + FourierComputeIntSubstituteAndSubtractFullSimplify(b, n, pi, g, limit_mode=1) +
    r'= -\frac{2A}{n\pi} \Paren{(-1)^n - 1} .'
    r'\end{aligned}'
)

glue("fourier_bn_const", fourier_bn_const, display=False)
```

:::{solution-without-reference}
:class: [solution] dropdown

Pozostawiam czytelnikowi sprawdzenie warunków Dirichleta.

Ponieważ funkcja jest nieparzysta, to
$
\quad
\Forall{n \in \nn_0} a_n = 0. $

Pozostaje obliczenie współczynników (dla $n\in \nn$)

```{glue:math} fourier_bn_const
```

Zauważmy, że jedynie nieparzyste wyrazy są niezerowe:

$$
\Forall{k \in \nn} b_{2k} = 0\, ,
   \quad
   b_{2k-1} = \frac {4A} {(2k-1)\pi}\, .
$$

Zatem

$$
f(x) = \Series[k]\frac {4A} {(2k-1) \pi}
   \ifcdot \sin \Paren{(2k-1) x}
   \quad
   \text{dla }
   x \in \Brack{- \pi,\, \pi } .
$$

Przyjmując $A = \tfrac \pi 2$ otrzymamy następujące wykresy:

:::

```{code-cell} sage
:tags: [remove-input, hide-output]
N = 5
Left = -pi
Right = pi
a = pi
f = piecewise([((-pi,0), -a*2^(-1)), ((0,pi), a*2^(-1))])

show(
   plot(f,
   (Left, Right),
   thickness=2,
   aspect_ratio=1,
   color=PWBlue,
   legend_label=r'$f(x)$'
   ) +
   PartialFourierSeries(f, Left, Right, N)
   ,
   transparent=True, frame=False
)
from IPython.display import Math, display
display(Math(r"f_{N}(x) = " + latex(f.fourier_series_partial_sum(N))))
```

```{code-cell} sage
:tags: [remove-input, hide-output]
N = 29
Left = -pi
Right = pi
a = pi
f = piecewise([((-pi,0), -a*2^(-1)), ((0,pi), a*2^(-1))])

show(
   plot(f,
   (Left, Right),
   thickness=2,
   aspect_ratio=1,
   color=PWBlue,
   legend_label=r'$f(x)$'
   ) +
   PartialFourierSeries(f, Left, Right, N)
   ,
   transparent=True, frame=False
)
from IPython.display import Math, display
display(Math(r"f_{N}(x) = " + latex(f.fourier_series_partial_sum(N))))
```

## Rozwinięcie Fouriera rozszerzenia do funkcji okresowej

:::{narration}

Jeżeli funkcja $f:(a, a+2\ell) \to \rr$ spełnia 1. i 2. warunek Dirichleta
w przedziale $(a, a+2\ell)$,
to można ją przedłużyć do funkcji okresowej $\tilde f: \rr \to \rr$ o okresie $2\ell$, tak aby:

1. dla każdego $x \in (a, a+2\ell)$ zachodziło $\tilde f(x) = f(x)$ (tzn. $\tilde f|_{(a, a+2\ell)} = f$)
2. funkcja $\tilde f$ spełniała wszystkie trzy warunki Dirichleta w przedziale $[-\ell, \ell]$.

Funkcję $\tilde f$ można rozwinąć w szereg Fouriera $S_{\tilde f}$ w przedziale $[-\ell, \ell]$.

Z twierdzenia Dirichleta i warunku 1. wynika, że
$f(x) = \tilde f(x) =  S_{\tilde f}(x)$
dla każdego $x \in (a, a+2\ell)$.

W ten sposób rozwinęliśmy funkcję $f$ w szereg Fouriera
w przedziale $(a, a+2\ell)$.
:::

::::{exercise}
:label: lec-14-ex-05
:class: [exercise]

Zgodnie z powyższą procedurą rozwińmy w szereg Fouriera funkcję

$$
f:(0,2\pi) \to \rr,
   \quad
   f(x) = x
   .
$$

:::{note}
:class: [see-problem]

Pomoże rozwiązać {numref}`prob-16-ex-04`, {numref}`prob-16-ex-08`.
:::

::::

```{code-cell} sage
:tags: [remove-cell]
f = piecewise([((0,2*pi), x)])
```

```{code-cell} sage
:tags: [remove-input, hide-output]
show(plot(
   x+2*pi,
   (x, -2*pi,-0.001),
   thickness=2, aspect_ratio=1,
   color=PWBlue,
   legend_label=r'$x+2\pi$'
   ) +
   plot(
   x,
   (x, 0.001,2*pi),
   thickness=2,
   color=PWRed,
   legend_label=r'$x$'
   ) +
   point((-2*pi,pi), color = PWBlue, size = 40) +
   point((0,pi), color = PWBlue, size = 40) +
   point((2*pi,pi), color = PWBlue, size = 40),
   transparent=True, frame=False)
```

```{code-cell} sage
:tags: [remove-cell]
from myst_nb import glue
from IPython.display import Math


part_0_2 = IntegrationByPartsNewline(x, x, cos(n*x), '')

body_01 = latex((x * cos(n * x)).integrate(x))
content = rf"""
\\int x \cos(nx)\, dx & = {part_0_2} \\ & = {body_01} + C
"""
glue('fourier_cos_integral', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)

part_1_2 = IntegrationByPartsNewline(x, x, sin(n*x), '.(.)')

body_01 = latex((x * sin(n * x)).integrate(x))
content = rf"""
\begin{{aligned}} \int x \sin(nx)\, dx & = {part_1_2} \\ & = {body_01} + C\ . \end{{aligned}}
"""
glue('fourier_sin_integral', Math(r"\begin{aligned}" + content + r"\end{aligned}"), display=False)
```

```{code-cell} sage
:tags: [remove-cell]
from myst_nb import glue
from IPython.display import Math


f_id = x

fourier_coeffs = Math(
    r'\begin{aligned}'
    r'a_n &= \frac 1 \ell \IntDef{-\ell}{\ell}{f(x)\cdot \cos \frac{n\pi x}{\ell}}'
    r'= \frac 1 \ell \IntDef{0}{2\ell}{f(x)\cdot \cos \frac{n\pi x}{\ell}}'
    r'\\ &= ' + Fourier(a, n, pi, f_id, limit_mode=2) +
    r'= '     + FourierComputeInt(a, n, pi, f_id, limit_mode=2) +
    r'\\ &= ' + FourierComputeIntSubstitute(a, n, pi, f_id, limit_mode=2) +
    r'= 0 \quad \text{dla } n\in \nn'
    r'\\ a_0 &= ' + Fourier(a, 0, pi, f_id, limit_mode=2) +
    r'= '         + FourierComputeInt(a, 0, pi, f_id, limit_mode=2) +
    r'= '         + FourierComputeIntSubstitute(a, 0, pi, f_id, limit_mode=2) +
    r'= 2\pi'
    r'\\ b_n &= \frac 1 \ell \IntDef{-\ell}{\ell}{f(x)\cdot \sin \frac{n\pi x}{\ell}}'
    r'= \frac 1 \ell \IntDef{0}{2\ell}{f(x)\cdot \sin \frac{n\pi x}{\ell}}'
    r'\\ &= ' + Fourier(b, n, pi, f_id, limit_mode=2) +
    r'= '     + FourierComputeInt(b, n, pi, f_id, limit_mode=2) +
    r'\\ &= ' + FourierComputeIntSubstitute(b, n, pi, f_id, limit_mode=2) +
    r'= -\frac{2}{n} .'
    r'\end{aligned}'
)

glue("fourier_coeffs", fourier_coeffs, display=False)
```

:::{solution-without-reference}
:class: [solution] dropdown

Dla danej funkcji mamy:

$$
a = 0,
   \quad
   \ell = \pi.
$$

Przedłużamy ją do funkcji okresowej jak pokazano na rysunku.

Funkcja nie jest ani parzysta, ani nieparzysta,
więc
musimy obliczyć wszystkie współczynniki.

Będziemy potrzebować dwóch całek nieoznaczonych:

```{glue:math} fourier_cos_integral
```

```{glue:math} fourier_sin_integral
```

Korzystając z tych obliczeń otrzymujemy:

```{glue:math} fourier_coeffs
```

Podsumowując,

$$
f(x) = \frac {2\pi} 2 + \Series -\frac {2} {n}
   \ifcdot \sin n x
   \quad
   \text{dla }
   x \in \Paren{0,\, 2\pi } .
$$

:::

```{code-cell} sage
:tags: [remove-input, hide-output]
N = 5
Left = 0
Right = 2*pi
f = piecewise([((Left,Right), x)])

show(
   plot(f,
   (Left, Right),
   thickness=2,
   aspect_ratio=1,
   color=PWBlue,
   legend_label=r'$f(x)$'
   ) +
   PartialFourierSeries(f, Left, Right, N)
   ,
   transparent=True, frame=False
)
from IPython.display import Math, display
display(Math(r"f_{N}(x) = " + latex(f.fourier_series_partial_sum(N))))
```

```{code-cell} sage
:tags: [remove-input, hide-output]
N = 13
Left = 0
Right = 2*pi
f = piecewise([((Left,Right), x)])

show(
   plot(f,
   (Left, Right),
   thickness=2,
   aspect_ratio=1,
   color=PWBlue,
   legend_label=r'$f(x)$'
   ) +
   PartialFourierSeries(f, Left, Right, N)
   ,
   transparent=True, frame=False
)
from IPython.display import Math, display
display(Math(r"f_{N}(x) = " + latex(f.fourier_series_partial_sum(N))))
```
