#import "../lab-template.typ" #import lab-template: * #import "@preview/cetz:0.2.2": canvas, plot #show: doc => lab( num: 1, name: [Ряды Фурье], doc ) = Вещественные функции Придумайте числа $a, b, t_0, t_1, t_2$ такие, что $a, b > 0$ и $t_2 > t_1 > t_0 > 0$. Рассмотрите следующие функции $f : RR -> RR$ и для каждой из функции: - Постройте график $f(t)$ - Рассмотрите частичные суммы Фурье $F_N$ и $G_N$ вида $ F_N (t) = a_0/2 + sum^N_(n=1) (a_n cos(omega_n t) + b_n sin(omega_n t)) $ $ G_N (t) = sum^N_(n=-N) c_n e^(i omega_n t) $ где $omega_n = (2 pi n)/T$ - Приведите формулы для вычисления коэффициентов $(a_n, b_n)$ и $c_n$ для каждого случая. Если значения некоторых из них очевидны, укажите это. Для первой функции (квадратная волна) и $n=0, 1, 2$ вычислите значения указанных коэффициентов вручную. - Напишите программу, которая вычисляет коэффициениты Фурье $(a_n, b_n)$ и $c_n$ для произвольного $N$. Приведите в отчёте коэффициенты для случая $N = 3$. - Постройте графики $F_N (t)$ и $G_N (t)$ для пяти различных значений $N$. Сравните их друг с другом и с графиком исходной функции $f(t)$. - Проверьте выполнение равенства Парсеваля для коэффициентов $(a_n, b_n)$ и $c_n$. == *Квадратная волна* Периодическая функция с периодом $T = t_2 - t_0$ такая, что $ f(t) = cases( a\, & t in [t_0, t_1), b\, & t in [t_1, t_2) ) $ Пусть $a = 1, b = 2$ и $t_0 = 1, t_1 = 2, t_2 = 3$. В таком случае конечная функция будет вида: $ f(t) = cases( 1\, & t in [1, 2), 2\, & t in [2, 3) ) $ Построим график данной функции: #figure( canvas(length: 0.9cm, { plot.plot(size: (8, 4), x-tick-step: 1, y-tick-step: 1, x-min: -3, x-max: 3, y-min: 0, y-max: 3, x-grid: true, y-grid: true, x-label: [$t$], y-label: [$f(t)$], { plot.add(domain: (-2.99, 2.99), t => { let (t0, t1, t2) = (1, 2, 3) if t < 0 { t = -t + 1 } let abs_rem = calc.rem(t, t2 - t0) if abs_rem >= t0 and abs_rem < t1 { return 1 } else { return 2 } }, line: "hvh", samples: 100) } ) }), caption: [График квадратной волны $f(t)$] ) #pagebreak() Период функции равен $T = t_2 - t_0 = 2$, рассмотрим функцию на промежутке $[1; 3]$ и найдём коэффициенты $a_0, a_n, b_n, c_n$: $ a_0 &= 1/(T/2) integral^(3)_(1) f(t)upright(d)t = integral^3_1 f(t)upright(d)t = (integral^2_1 1 + integral^3_2 2)upright(d)t = (lr(t|)^2_1 + lr(2t|)^3_2) \ &= 2 - 1 + 6 - 4 = 3 $ $ a_n &= 1/(T/2) integral^3_1 f(t)cos(omega_n t)upright(d)t = integral^3_1 f(t)cos(pi n t)upright(d)t \ &= (integral^2_1 cos(pi n t) + integral^3_2 2cos(pi n t))upright(d)t = lr(sin(pi n t)/(pi n)|)^2_1 + lr((2sin(pi n t))/(pi n)|)^3_2 \ &= overbrace(sin(2pi n)/(pi n), 0) - overbrace(sin(pi n)/(pi n), 0) + (2overbrace(sin(3pi n), 0))/(pi n) - overbrace((2sin(2pi n))/(pi n), 0) = 0 $ $ b_n &= 1/(T/2) integral^3_1 f(t)sin(omega_n t)upright(d)t = integral^3_1 f(t)sin(pi n t)upright(d)t \ &= (integral^2_1 sin(pi n t) + integral^3_2 2sin(pi n t))upright(d)t = lr(-cos(pi n t)/(pi n)|)^2_1 - lr((2cos(pi n t))/(pi n)|)^3_2 \ &= -cos(2pi n)/(pi n) + cos(pi n)/(pi n) - (2cos(3pi n))/(pi n) + (2cos(2pi n))/(pi n) \ &= cos(2pi n)/(pi n) + cos(pi n)/(pi n) - (2cos(pi n))/(pi n) = 1/(pi n) - cos(pi n)/(pi n) = (1 - (-1)^n)/(pi n) \ &= cases( 0\, & n = 2k, 2/(pi n)\, & n = 2k - 1 ), k in ZZ $ $ c_n &= 1/T integral^3_1 f(t)e^(-i omega_n t) = 1/2 integral^3_1 f(t)e^(-i pi n t) = 1/2 (integral^2_1 e^(-i pi n t) + integral^3_2 2e^-(i pi n t))upright(d)t \ &= 1/2 (lr(-(i e^(-i pi n t))/(pi n)|)^2_1 - lr((2i e^(-i pi n t))/(pi n)|)^3_2) = -(i e^(-2i pi n))/(2pi n) + (i e^(-i pi n))/(2pi n) - (2i e^(-3i pi n))/(2pi n) + (2i e^(-2i pi n))/(2pi n) \ &= (i e^(-2i pi n))/(2pi n) - (i e^(-i pi n))/(2pi n) = i/(2pi n) - (i(-1)^n)/(2pi n) = (i(1 - (-1)^n))/(2pi n) \ &= cases( 0\, & n = 2k, i/(pi n)\, & n = 2k - 1 ), k in ZZ $ $ a_0 &= 3, a_n = 0, c_0 = a_0\/2 = 1.5 \ b_n &= cases( 0\, & n = 2k, 2/(pi n)\, & n = 2k - 1 ), k in ZZ \ c_n &= cases( 0\, & n = 2k, i/(pi n)\, & n = 2k - 1 ), k in ZZ $ Вычислим значения коэффициентов для $n = 0, 1, 2$: $ A = vec(a_0, a_1, a_2) = vec(3, 0, 0), B = vec(b_0, b_1, b_2) = vec(0, 2/pi, 0), C = vec(c_0, c_1, c_2) = vec(3, i/pi, 0) $ Вручную считать тяжко, поэтому напишем программу на _Python_, которая будет принимать на вход $N$ и считать коэффициенты по найденным формулам: #figure(```python from sys import argv from math import pi function_formulas = [ # 1. Square wave { 'an': lambda n: 3 if n == 0 else 0, 'bn': lambda n: 0 if n % 2 == 0 else 2 / (pi * n), 'cn': lambda n: 3 if n == 0 else (0 if n % 2 == 0 else 1j / (pi * n)) } ] index, nn = int(argv[1]), int(argv[2]) formulas = function_formulas[index - 1] coefficients = {'an': [], 'bn': [], 'cn': []} for coefficient in coefficients: for n in range(0, nn + 1): calc = formulas[coefficient](n) coefficients[coefficient].append(f'{n}: {calc:.5g}') if coefficient == 'cn' and n != 0: calc = formulas[coefficient](-n) coefficients[coefficient].insert(0, f'{-n}: {calc:.5g}') for coefficient in coefficients: print(f'{coefficient} values: ', coefficients[coefficient]) ```, caption: "Код программы для подсчета коэффициентов") Программа принимает на вход номер задания соответствующей функции и произвольное $N$ и выводит подсчитанные коэффициенты $a_n, b_n, c_n$ для $n = 0,1,2...N$. Список _function_formulas_ хранит формулы для расчетов коэффитциентов в виде лямда выражений для каждой функции, данный список будет расширяться по мере нахождения формул для других функций. Воспользуемся программой для нахождения коэффициентов для $N = 3$, нас интересует функция 1 - квадратная волна, вызывыаем программу с аргументами _1_ и _3_: #figure(``` $ python fourier.py 1 3 an values: ['0: 3', '1: 0', '2: 0', '3: 0'] bn values: ['0: 0', '1: 0.63662', '2: 0', '3: 0.21221'] cn values: ['-3: -0-0.1061j', '-2: 0', '-1: -0-0.31831j', '0: 3', '1: 0+0.31831j', '2: 0', '3: 0+0.1061j'] ```, caption: "Ввывод программы для первой функции") Значения коэффициентов для $n = 0, 1, 2$ совпадают с посчитанными вручную, значит высока вероятность, что программа работает корректно. Также стоит заметить, что программа округляет коэффициенты до 5 знаков после запятой и считает дополнительно коэффициенты $c_n$ для отрицательных $n$ Запишем частичные суммы Фурье $F_3$ и $G_3$ с учётом подсчитанных коэффициентов: $ F_3(t) = 3/2 + 0.63662sin(pi t) + 0.21221sin(3pi t) $ $ G_3(t) = -0.1061i e^(-3i pi t) -0.31831i e^(-i pi t) + 3/2 + 0.31831i e^(i pi t) + 0.1061i e^(3i pi t) $ С помощью программы из @prog, подсчитаем также коэффициенты для $N = 5, 7, 9$, после чего построим график $F_N (t)$ для значений $N = 1, 3, 5, 7, 9$ и сравним их с $f(t)$. Графики $G_N (t)$ получатся аналогичны $F_N (t)$, поскольку изначальная функция не является комплексной (вещественная часть будет совпадать, а комплексной части - нет): #figure( canvas(length: 1.75cm, { plot.plot(size: (8, 4), x-tick-step: 1, y-tick-step: 1, x-min: -3, x-max: 3, y-min: 0, y-max: 3, x-grid: true, y-grid: true, x-label: [$t$], y-label: [$F_N (t)$], { plot.add(domain: (-2.99, 2.99), t => { let (t0, t1, t2) = (1, 2, 3) if t < 0 { t = -t + 1 } let abs_rem = calc.rem(t, t2 - t0) if abs_rem >= t0 and abs_rem < t1 { return 1 } else { return 2 } }, line: "hvh", samples: 100, label: [$f(t)$#v(1em)]) plot.add(domain: (-2.99, 2.99), t => { 3/2 + 0.63662*calc.sin(calc.pi*t) }, line: "spline", samples: 100, label: [$F_1(t)$#v(1em)]) plot.add(domain: (-2.99, 2.99), t => { 3/2 + 0.63662*calc.sin(calc.pi*t) + 0.21221*calc.sin(3*calc.pi*t) }, line: "spline", samples: 100, label: [$F_3(t)$#v(1em)]) plot.add(domain: (-2.99, 2.99), t => { 3/2 + 0.63662*calc.sin(calc.pi*t) + 0.21221*calc.sin(3*calc.pi*t) + 0.12732*calc.sin(5*calc.pi*t) }, line: "spline", samples: 100, label: [$F_5(t)$#v(1em)]) plot.add(domain: (-2.99, 2.99), t => { 3/2 + 0.63662*calc.sin(calc.pi*t) + 0.21221*calc.sin(3*calc.pi*t) + 0.12732*calc.sin(5*calc.pi*t) + 0.090946*calc.sin(7*calc.pi*t) }, line: "spline", samples: 100, label: [$F_7(t)$#v(1em)]) plot.add(domain: (-2.99, 2.99), t => { 3/2 + 0.63662*calc.sin(calc.pi*t) + 0.21221*calc.sin(3*calc.pi*t) + 0.12732*calc.sin(5*calc.pi*t) + 0.090946*calc.sin(7*calc.pi*t) + 0.070736*calc.sin(9*calc.pi*t) }, line: "spline", samples: 100, style: (stroke: purple), label: [$F_9(t)$]) } ) }), caption: [Графики частичных сумм Фурье первой функции $F_N (t)$ и $f(t)$] ) Из графиков видно, что сумма Фурье $F_N (t)$ сходится к исходной функции $f(t)$ при $N -> infinity$ - коэффициенты $a_n, b_n, c_n$ подсчитаны верно. Проверим выполнение равенства Парсеваля: $ 1/(T/2) integral^3_1 (f(t))^2 upright(d)t = a_0^2/2 + sum^infinity_(n=1) (a_n^2 + b_n^2) $ Вычислим левую часть: $ 1/(T/2) integral^3_1 (f(t))^2 upright(d)t = (integral^2_1 1^2 + integral^3_2 2^2) upright(d)t = lr(t|)^2_1 + lr(4t|)^3_2 = 2 - 1 + 12 - 8 = 5 $ #pagebreak() Подробнее рассмотрим ряд из правой части равенства: $ sum^infinity_(n=1) (a_n^2 + b_n^2) = sum^infinity_(n=1) b_n^2 $ Коэффициент $b_n$ задан частями, при чётных $n$ он равен $0$, а при нечётных $2/(pi n)$. В таком случае можно игнорировать все чётные значения $n$ ($2k$) и рассматривать лишь нечётные ($2k - 1$): $ sum^infinity_(n=1) b_n^2 = sum^infinity_(k=1) (2/(pi(2k - 1)))^2 = 4/pi^2 sum^infinity_(k=1) 1/(2k - 1)^2 $ Полученный нами ряд состоит из элементов ${1, 1/9, 1/25, 1/49...}$. Рассмотрим ряды ${1/k^2; k in NN}$ и ${1/(4k^2); k in NN}$. Они состоят соответсвенно из элементов ${1, 1/4, 1/9, 1/16, 1/25, 1/36, 1/49...}$ и ${1/4, 1/16, 1/36...}$. Заметим, что исключив из ряда ${1/k^2; k in NN}$ элементы ряда ${1/(4k^2); k in NN}$, мы получим наш исходный ряд, следовательно, сумма элементов исходного ряда будет равна разности сумм элементов рядов ${1/k^2; k in NN}$ и ${1/(4k^2); k in NN}$: $ sum^infinity_(k=1) 1/(2k - 1)^2 = sum^infinity_(k=1) 1/k^2 - sum^infinity_(k=1) 1/(4k^2) = 3/4 sum^infinity_(k=1) 1/k^2 = 3/4 dot pi^2/6 = pi^2/8 $ $ sum^infinity_(n=1) (a_n^2 + b_n^2) = sum^infinity_(n=1) b_n^2 = 4/pi^2 dot pi^2/8 = 1/2 $ $ a_0^2/2 + sum^infinity_(n=1) (a_n^2 + b_n^2) = 9/2 + 1/2 = 10/2 = 5 $ $ underbrace(integral^3_1 (f(t))^2 upright(d)t, 5) = underbrace(a_0^2/2 + sum^infinity_(n=1) (a_n^2 + b_n^2), 5) $ Левая и правая части равны - равенство Парсеваля выполняется. == Любая *чётная* периодическая функция по вашему выбору Проанализируем следующую чётную функцию: $ f(t) = cases( t + 1\, & t in [-2; 0), -t + 1\, & t in [0; 2) ) $ Построим график данной функции: #figure( canvas(length: 0.85cm, { plot.plot(size: (8, 4), x-tick-step: 1, y-tick-step: 1, x-min: -5, x-max: 5, y-min: -2, y-max: 2, x-grid: true, y-grid: true, x-label: [$t$], y-label: [$f(t)$], { plot.add(domain: (-4.99, 4.99), t => { let (t0, t1, t2) = (-2, 0, 2) let tt = calc.rem(calc.abs(t) - t0, t2 - t0) + t0 if tt >= t0 and tt < t1 { return tt + 1 } else { return -tt + 1 } }, line: "linear", samples: 1000) } ) }), caption: [График треугольной волны $f(t)$] ) По графику данной функции видно, что это - треугольная волна, $T = 4$, $omega_n = (pi n)/2$. Рассмотрим функцию на промежутке $[-2; 2]$ и найдём коэффициенты $a_0, a_n, b_n, c_n$, пользуясь свойствами чётности функции: $ a_0 &= 1/(T/2) integral^2_(-2) underbrace(f(t), "even") upright(d)t = 1/2 dot 2integral^2_0 f(t) upright(d)t = integral^2_0 (-t + 1) upright(d)t \ &= 2lr((-t^2/2 + t)|)^2_0 = -4 + 4 = 0 $ $ a_n &= 1/(T/2) integral^2_(-2) underbrace(underbrace(f(t), "even")underbrace(cos(omega_n t), "even"), "even") upright(d)t = 1/2 dot 2integral^2_0 (-t + 1)cos(omega_n t) upright(d)t = integral^2_0 cos(omega_n t) upright(d)t - integral^2_0 t cos(omega_n t) upright(d)t \ &= lr((sin(omega_n t))/omega_n|)^2_0 - lr((t sin(omega_n t))/omega_n|)^2_0 + integral^2_0 sin(omega_n t)/omega_n upright(d)t \ &= (2overbrace(sin(pi n), 0))/(pi n) - (2overbrace(sin(0), 0))/(pi n) - (4overbrace(sin(pi n), 0))/(pi n) - lr((cos(omega_n t))/omega_n^2|)^2_0 = -(4cos(pi n))/(pi^2 n^2) + (4cos(0))/(pi^2 n^2) \ &= (4(1 - (-1)^n))/(pi^2 n^2) = cases( 0 \, & n = 2k, 8/(pi^2 n^2) \, & n = 2k - 1, ), k in ZZ $ Поскольку интеграл нечётной функции (которая получается в результате умножения чётной и нечётной) на симметричном интервале равен 0, то $b_n$ также равен 0: $ b_n = 1/(T/2) integral^2_(-2) underbrace(underbrace(f(t), "even")underbrace(sin(omega_n t), "odd"), "odd") upright(d)t = 0 $ Для подсчёта коэффициента $c_n$ воспользуемся способом отличным от пункта 1 - вычислим его с помощью уже известных нам коэффициентов $a_n$ и $b_n$: $ c_0 = a_0/2 = 0 $ $ c_n = (a_n - i b_n)/2 = a_n/2 = cases( 0 \, & n = 2k, 4/(pi^2 n^2) \, & n = 2k - 1, ), k in ZZ $ $ c_(-n) = (a_n + i b_n)/2 = a_n/2 = cases( 0 \, & n = 2k, 4/(pi^2 n^2) \, & n = 2k - 1, ), k in ZZ $ #pagebreak() Дополним программу @prog новой чётной функцией: #figure(```python ... function_formulas = [ ... # 2. Even func { 'an': lambda n: 0 if n == 0 else (0 if n % 2 == 0 else 8 / (pi ** 2 * n ** 2)), 'bn': lambda n: 0, 'cn': lambda n: 0 if n == 0 else (0 if n % 2 == 0 else 4 / (pi ** 2 * n ** 2)) } ... ] ... ```, caption: "Дополнение программы чётной функцией") Вновь воспользуемся программой для вычисления коэффициентов для $N=3$ и запишем частичные суммы Фурье: #figure(``` $ python fourier.py 2 3 an values: ['0: 0', '1: 0.81057', '2: 0', '3: 0.090063'] bn values: ['0: 0', '1: 0', '2: 0', '3: 0'] cn values: ['-3: 0.045032', '-2: 0', '-1: 0.40528', '0: 0', '1: 0.40528', '2: 0', '3: 0.045032'] ```, caption: "Ввывод программы для второй функции") $ F_3(t) = 0.81057cos(pi/2 t) + 0.090063cos((3pi)/2 t) $ $ G_3(t) = 0.045032e^(-(3i pi)/2 t) + 0.40528e^(-(i pi)/2 t) + 0.40528e^((i pi)/2 t) + 0.045032e^((3i pi)/2 t) $ С помощью программы из @prog, подсчитаем также коэффициенты для $N = 5, 7, 9$, после чего построим график $F_N (t)$ для значений $N = 1, 3, 5, 7, 9$ и сравним их с $f(t)$: #figure( canvas(length: 1.75cm, { plot.plot(size: (8, 4), x-tick-step: 1, y-tick-step: 1, x-min: -5, x-max: 5, y-min: -2, y-max: 2, x-grid: true, y-grid: true, x-label: [$t$], y-label: [$F_N (t)$], { plot.add(domain: (-4.99, 4.99), t => { let (t0, t1, t2) = (-2, 0, 2) let tt = calc.rem(calc.abs(t) - t0, t2 - t0) + t0 if tt >= t0 and tt < t1 { return tt + 1 } else { return -tt + 1 } }, line: "linear", samples: 1000, label: [$f(t)$#v(1em)]) plot.add(domain: (-4.99, 4.99), t => { 0.81057*calc.cos(calc.pi/2*t) }, line: "spline", samples: 100, label: [$F_1(t)$#v(1em)]) plot.add(domain: (-4.99, 4.99), t => { 0.81057*calc.cos(calc.pi/2*t) + 0.090063*calc.cos(3*calc.pi/2*t) }, line: "spline", samples: 100, label: [$F_3(t)$#v(1em)]) plot.add(domain: (-4.99, 4.99), t => { 0.81057*calc.cos(calc.pi/2*t) + 0.090063*calc.cos(3*calc.pi/2*t) + 0.032423*calc.cos(5*calc.pi/2*t) }, line: "spline", samples: 100, label: [$F_5(t)$#v(1em)]) plot.add(domain: (-4.99, 4.99), t => { 0.81057*calc.cos(calc.pi/2*t) + 0.090063*calc.cos(3*calc.pi/2*t) + 0.032423*calc.cos(5*calc.pi/2*t) + 0.016542*calc.cos(7*calc.pi/2*t) }, line: "spline", samples: 100, label: [$F_7(t)$#v(1em)]) plot.add(domain: (-4.99, 4.99), t => { 0.81057*calc.cos(calc.pi/2*t) + 0.090063*calc.cos(3*calc.pi/2*t) + 0.032423*calc.cos(5*calc.pi/2*t) + 0.016542*calc.cos(7*calc.pi/2*t) + 0.010007*calc.cos(9*calc.pi/2*t) }, line: "spline", samples: 100, style: (stroke: purple), label: [$F_9(t)$]) } ) }), caption: [Графики частичных сумм Фурье треугольной волны $F_N (t)$ и $f(t)$] ) #pagebreak() Из графиков видно, что сумма Фурье $F_N (t)$ сходится к исходной функции $f(t)$ при $N -> infinity$ - коэффициенты $a_n, b_n, c_n$ подсчитаны верно. Проверим выполнение равенства Парсеваля: $ 1/(T/2) integral^2_(-2) (f(t))^2 upright(d)t = a_0^2/2 + sum^infinity_(n=1) (a_n^2 + b_n^2) $ $ 1/(T/2) integral^2_(-2) (f(t))^2 upright(d)t &= 1/2 integral^2_(-2) underbrace(underbrace(f(t), "even")underbrace(f(t), "even"), "even") upright(d)t = integral^2_0 (f(t))^2 upright(d)t = integral^2_0 (-t + 1)^2 upright(d)t \ &= integral^2_0 (t^2 - 2t + 1) upright(d)t = lr((t^3/3-t^2+t)|)^2_0 = 8/3 - 4 + 2 = 2/3 $ $ a^2_0/2 + sum^infinity_(n=1) (a^2_n + b^2_n) &= sum^infinity_(n=1) a^2_n = sum^infinity_(n=1) (cases( 0 \, & n = 2k, 8/(pi^2 n^2) \, & n = 2k - 1, ), k in ZZ)^2 = sum^infinity_(k=1) 64/(pi^4 (2k-1)^4) \ &= 64/pi^4 underbracket(sum^infinity_(k=1) 1/(2k - 1)^4, #[@sq-wave]) = 64/pi^4 (sum^infinity_(k=1) 1/k^4 - sum^infinity_(k=1) 1/(2k)^4) = 64/pi^4 sum^infinity_(k=1) 15/16k^4 \ &= 60/pi^4 sum^infinity_(k=1) 1/k^4 = 60/pi^4 dot pi^4/90 = 2/3 $ Левая часть равняется правой, значит равенство выполняется - коэффициенты подсчитаны верно. == Любая *нечётная* периодическая функция по вашему выбору Проанализируем следующую нечётную функцию: $ f(t) = t, t in [-1; 1) $ Построим график данной функции: #figure( canvas(length: 1.25cm, { plot.plot(size: (8, 4), x-tick-step: 1, y-tick-step: 1, x-min: -5, x-max: 5, y-min: -2, y-max: 2, x-grid: true, y-grid: true, x-label: [$t$], y-label: [$f(t)$], { plot.add(domain: (-4.99, 4.99), t => { let (t0, t2) = (-1, 1) if t < 0 { -calc.rem(-t - t0, t2 - t0) - t0 } else { calc.rem(t - t0, t2 - t0) + t0 } }, line: "linear", samples: 1000) } ) }), caption: [График треугольной волны $f(t)$] ) #pagebreak() Период функции $T = 2$, $omega_n = pi n$. Рассмотрим функцию на промежутке $[-1; 1]$ и найдём коэффициенты $a_0, a_n, b_n, c_n$, пользуясь свойствами нечётности функции: Поскольку интеграл нечётной фнукции на симметричном интервале равен 0, то $a_0$ и $a_n$ также равны 0: $ a_0 = 1/(T/2) integral^1_(-1) underbrace(f(t), "odd") upright(d)t = 0 $ $ a_n = 1/(T/2) integral^1_(-1) underbrace(underbrace(f(t), "odd")underbrace(cos(omega_n t), "even"), "odd") = 0 $ $ b_n &= 1/(T/2) integral^1_(-1) underbrace(underbrace(f(t), "odd")underbrace(sin(omega_n t), "odd"), "even") = 2integral^1_0 t sin(omega_n t) = -lr((2t cos(omega_n t))/omega_n|)^1_0 + 2integral^1_0 cos(omega_n t)/omega_n upright(d)t \ &= -lr((2t cos(omega_n t))/omega_n|)^1_0 + lr((2sin(omega_n t))/omega_n^2|)^1_0 = lr((2sin(omega_n t) - 2t omega_n cos(omega_n t))/omega_n^2|)^1_0 \ &= (2overbrace(sin(pi n), 0) - 2pi n cos(pi n))/(pi^2 n^2) - (2pi n overbrace(sin(0), 0))/(pi^2 n^2) = (-2(-1)^n)/(pi n) = (2(-1)^(n+1))/(pi n) $ $ c_0 = a_0/2 = 0 $ $ c_n = (a_n - i b_n)/2 = -(i b_n)/2 = (-1)^n/(pi n) $ $ c_(-n) = (a_n + i b_n)/2 = (i b_n)/2 = (-1)^(n+1)/(pi n) $ Дополним программу @prog новой нечётной функцией: #figure(```python ... function_formulas = [ ... # 3. Odd func { 'an': lambda n: 0, 'bn': lambda n: 0 if n == 0 else 2 * (-1) ** (n + 1) / (pi * n), 'cn': lambda n: 0 if n == 0 else (-1) ** n / (pi * n) if n > 0 else (-1) ** (n + 1) / (pi * n) } ... ] ... ```, caption: "Дополнение программы нечётной функцией") #pagebreak() Вновь воспользуемся программой для вычисления коэффициентов для $N=3$ и запишем частичные суммы Фурье: #figure(``` $ python fourier.py 3 3 an values: ['0: 0', '1: 0', '2: 0', '3: 0'] bn values: ['0: 0', '1: 0.63662', '2: -0.31831', '3: 0.21221'] cn values: ['-3: -0.1061', '-2: 0.15915', '-1: -0.31831', '0: 0', '1: -0.31831', '2: 0.15915', '3: -0.1061'] ```, caption: "Ввывод программы для третьей функции") $ F_3(t) = 0.63662sin(pi t) - 0.31831sin(2pi t) + 0.21221sin(3pi t) $ $ G_3(t) = -0.1061e^(-3i pi t) + 0.15915e^(-2i pi t) - 0.31831e^(-i pi t) - 0.31831e^(i pi t) + 0.15915e^(2i pi t) - 0.1061e^(3i pi t) $ С помощью программы из @prog, подсчитаем также коэффициенты для $N = 5, 7, 9$, после чего построим график $F_N (t)$ для значений $N = 1, 3, 5, 7, 9$ и сравним их с $f(t)$: #figure( canvas(length: 1.75cm, { plot.plot(size: (8, 4), x-tick-step: 1, y-tick-step: 1, x-min: -5, x-max: 5, y-min: -2, y-max: 2, x-grid: true, y-grid: true, x-label: [$t$], y-label: [$F_N (t)$], { plot.add(domain: (-4.99, 4.99), t => { let (t0, t2) = (-1, 1) if t < 0 { -calc.rem(-t - t0, t2 - t0) - t0 } else { calc.rem(t - t0, t2 - t0) + t0 } }, line: "linear", samples: 1000, label: [$f(t)$#v(1em)]) plot.add(domain: (-4.99, 4.99), t => { 0.63662*calc.sin(calc.pi*t) }, line: "spline", samples: 100, label: [$F_1(t)$#v(1em)]) plot.add(domain: (-4.99, 4.99), t => { 0.63662*calc.sin(calc.pi*t) - 0.31831*calc.sin(2*calc.pi*t) + 0.21221*calc.sin(3*calc.pi*t) }, line: "spline", samples: 100, label: [$F_3(t)$#v(1em)]) plot.add(domain: (-4.99, 4.99), t => { 0.63662*calc.sin(calc.pi*t) - 0.31831*calc.sin(2*calc.pi*t) + 0.21221*calc.sin(3*calc.pi*t) - 0.15915*calc.sin(4*calc.pi*t) + 0.12732*calc.sin(5*calc.pi*t) }, line: "spline", samples: 100, label: [$F_5(t)$#v(1em)]) plot.add(domain: (-4.99, 4.99), t => { 0.63662*calc.sin(calc.pi*t) - 0.31831*calc.sin(2*calc.pi*t) + 0.21221*calc.sin(3*calc.pi*t) - 0.15915*calc.sin(4*calc.pi*t) + 0.12732*calc.sin(5*calc.pi*t) - 0.1061*calc.sin(6*calc.pi*t) + 0.090946*calc.sin(7*calc.pi*t) }, line: "spline", samples: 100, label: [$F_7(t)$#v(1em)]) plot.add(domain: (-4.99, 4.99), t => { 0.63662*calc.sin(calc.pi*t) - 0.31831*calc.sin(2*calc.pi*t) + 0.21221*calc.sin(3*calc.pi*t) - 0.15915*calc.sin(4*calc.pi*t) + 0.12732*calc.sin(5*calc.pi*t) - 0.1061*calc.sin(6*calc.pi*t) + 0.090946*calc.sin(7*calc.pi*t) - 0.039789*calc.sin(8*calc.pi*t) + 0.070736*calc.sin(9*calc.pi*t) }, line: "spline", samples: 100, style: (stroke: purple), label: [$F_9(t)$]) } ) }), caption: [Графики частичных сумм Фурье чётной функции $F_N (t)$ и $f(t)$] ) Из графиков видно, что сумма Фурье $F_N (t)$ сходится к исходной функции $f(t)$ при $N -> infinity$ - коэффициенты $a_n, b_n, c_n$ подсчитаны верно. Проверим выполнение равенства Парсеваля: $ 1/(T/2) integral^1_(-1) (f(t))^2 upright(d)t = a_0^2/2 + sum^infinity_(n=1) (a_n^2 + b_n^2) $ $ 1/(T/2) integral^1_(-1) (f(t))^2 upright(d)t = integral^1_(-1) underbrace(underbrace(f(t), "odd")underbrace(f(t), "odd"), "even") upright(d)t = 2integral^1_0 (f(t))^2 upright(d)t = 2integral^1_0 t^2 upright(d)t = lr((2t^3)/3|)^1_0 = 2/3 $ $ a^2_0/2 + sum^infinity_(n=1) (a^2_n + b^2_n) = sum^infinity_(n=1) b^2_n = sum^infinity_(n=1) ((2(-1)^(n+1))/(pi n))^2 = 4/pi^2 sum^infinity_(n=1) 1/n^2 = 4/pi^2 dot pi^2/6 = 2/3 $ Левая часть равняется правой, равенство выполняется - коэффициенты подсчитаны верно. #pagebreak() == Любая периодическая функция по вашему выбору, график которой состоит не только из прямых линий, и которая не является *ни чётной, ни нечётной* Проанализируем следующую функцию, которая не является ни чётной, ни нечётной: $ f(t) = cases( -t^2 - 2t\, t in [-2; 0), 2t^2 - 4t\, t in [0; 2) ) $ Построим график данной функции: #figure( canvas(length: 1.25cm, { plot.plot(size: (8, 4), x-tick-step: 1, y-tick-step: 1, x-min: -5, x-max: 5, y-min: -3, y-max: 3, x-grid: true, y-grid: true, x-label: [$t$], y-label: [$f(t)$], { plot.add(domain: (-4.99, 4.99), t => { let (t0, t1, t2) = (-2, 0, 2) if t < t0 { t = -t + t0 } let tt = calc.rem(t - t0, t2 - t0) + t0 if tt >= t0 and tt < t1 { return -tt*tt - 2*tt } else { return 2*tt*tt - 4*tt } }, line: "linear", samples: 1000) } ) }), caption: [График четвёртой функции $f(t)$] ) Период функции $T = 4$, $omega_n = (pi n)/2$. Рассмотрим функцию на промежутке $[-2; 2]$ и найдём коэффициенты $a_0, a_n, b_n, c_n$: $ a_0 &= 1/(T/2) integral^2_(-2) f(t) upright(d)t \ &= ... \ &= -2/3 $ $ a_n &= 1/(T/2) integral^2_(-2) f(t)cos(omega_n t) upright(d)t \ &= ... \ &= (4(1+(-1)^n))/(pi^2 n^2) = cases( 8/(pi^2 n^2)\, & n in 2k, 0\, & n in 2k - 1 ) $ $ b_n &= 1/(T/2) integral^2_(-2) f(t)sin(omega_n t) upright(d)t \ &= ...\ &= (24((-1)^n - 1))/(pi^3 n^3) = cases( 0\, & n in 2k, -48/(pi^3 n^3)\, & n in 2k - 1 ) $ $ c_0 = a_0/2 = -1/3 $ $ c_n = (a_n - i b_n)/2 = cases( 4/(pi^2 n^2)\, & n in 2k, (24i)/(pi^3 n^3)\, & n in 2k - 1 ) $ $ c_(-n) = (a_n + i b_n)/2 = cases( 4/(pi^2 n^2)\, & n in 2k, -(24i)/(pi^3 n^3)\, & n in 2k - 1 ) $ Дополним программу @prog новой функцией: #figure(```python ... function_formulas = [ ... # 4. Not odd and not even func { 'an': lambda n: -2/3 if n == 0 else (8 / (pi ** 2 * n ** 2) if n % 2 == 0 else 0), 'bn': lambda n: 0 if n % 2 == 0 else -48 / (pi ** 3 * n ** 3), 'cn': lambda n: -1/3 if n == 0 else ( (4 / (pi ** 2 * n ** 2) if n % 2 == 0 else 24j / (pi ** 3 * n ** 3)) if n > 0 else (4 / pi ** 2 * n ** 2) if n % 2 == 0 else -24j / (pi ** 3 * n ** 3)) ) } ... ] ... ```, caption: "Дополнение программы четвёртой функцией") #figure(``` $ python fourier.py 4 3 an values: ['0: -0.66667', '1: 0', '2: 0.20264', '3: 0'] bn values: ['0: 0', '1: -1.5481', '2: 0', '3: -0.057336'] cn values: ['-3: -0+0.028668j', '-2: 0.10132', '-1: -0+0.77404j', '0: -0.33333', '1: 0+0.77404j', '2: 0.10132', '3: 0+0.028668j'] ```, caption: "Ввывод программы для четвёртой функции") $ F_3(t) = -0.66667 - 1.5481sin(pi/2 t) + 0.20264cos(pi t) -0.057336sin((3pi)/2 t) $ $ G_3(t) =& 0.028668i e^(-(3i pi)/2 t) + 0.10132e^(-i pi t) - 0.77404i e^(-(i pi)/2 t) - 0.33333 + \ +& 0.77404i e^((i pi)/2 t) + 0.10132e^(i pi t) + 0.028668i e^((3i pi)/2 t) $ С помощью программы из @prog, подсчитаем также коэффициенты для $N = 4, 5$, после чего построим график $F_N (t)$ для значений $N = 1, 2, 3, 4, 5$ и сравним их с $f(t)$: #pagebreak() #figure( canvas(length: 1.75cm, { plot.plot(size: (8, 4), x-tick-step: 1, y-tick-step: 1, x-min: -5, x-max: 5, y-min: -3, y-max: 3, x-grid: true, y-grid: true, x-label: [$t$], y-label: [$F_N (t)$], { plot.add(domain: (-4.99, 4.99), t => { let (t0, t1, t2) = (-2, 0, 2) if t < t0 { t = -t + t0 } let tt = calc.rem(t - t0, t2 - t0) + t0 if tt >= t0 and tt < t1 { return -tt*tt - 2*tt } else { return 2*tt*tt - 4*tt } }, line: "linear", samples: 1000, label: [$f(t)$#v(1em)]) plot.add(domain: (-4.99, 4.99), t => { -1/3 - 1.5481*calc.sin(calc.pi/2*t) }, line: "spline", samples: 100, label: [$F_1(t)$#v(1em)]) plot.add(domain: (-4.99, 4.99), t => { -1/3 - 1.5481*calc.sin(calc.pi/2*t) + 0.20264*calc.cos(calc.pi*t) }, line: "spline", samples: 100, label: [$F_3(t)$#v(1em)]) plot.add(domain: (-4.99, 4.99), t => { -1/3 - 1.5481*calc.sin(calc.pi/2*t) + 0.20264*calc.cos(calc.pi*t) - 0.057336*calc.sin(3*calc.pi/2*t) }, line: "spline", samples: 100, label: [$F_5(t)$#v(1em)]) plot.add(domain: (-4.99, 4.99), t => { -1/3 - 1.5481*calc.sin(calc.pi/2*t) + 0.20264*calc.cos(calc.pi*t) - 0.057336*calc.sin(3*calc.pi/2*t) + 0.050661*calc.cos(2*calc.pi*t) }, line: "spline", samples: 100, label: [$F_7(t)$#v(1em)]) plot.add(domain: (-4.99, 4.99), t => { -1/3 - 1.5481*calc.sin(calc.pi/2*t) + 0.20264*calc.cos(calc.pi*t) - 0.057336*calc.sin(3*calc.pi/2*t) + 0.050661*calc.cos(2*calc.pi*t) - 0.012385*calc.sin(5*calc.pi/2*t) }, line: "spline", samples: 100, style: (stroke: purple), label: [$F_9(t)$]) } ) }), caption: [Графики частичных сумм Фурье четвёртой функции $F_N (t)$ и $f(t)$] ) Из графиков видно, что сумма Фурье $F_N (t)$ сходится к исходной функции $f(t)$ при $N -> infinity$ - коэффициенты $a_n, b_n, c_n$ подсчитаны верно. Проверим выполнение равенства Парсеваля: $ 1/(T/2) integral^2_(-2) (f(t))^2 upright(d)t = a_0^2/2 + sum^infinity_(n=1) (a_n^2 + b_n^2) $ $ 1/(T/2) integral^2_(-2) (f(t))^2 upright(d)t &= 1/2 integral^0_(-2) (-t^2 - 2t)^2 upright(d)t + 1/2 integral^2_0 (2t^2 - 4t)^2 upright(d)t \ &= 1/2 integral^0_(-2) (t^4 + 4t^3 + 4t^2) upright(d)t + 1/2 integral^2_0 (4t^4 - 16t^3 + 16t^2) upright(d)t \ &= lr((t^5/10 + t^4/2 + (2t^3)/3)|)^0_(-2) + lr(((2t^5)/5 - 2t^4 + (8t^3)/3)|)^2_0 \ &= 32/10 - 8 + 16/3 + 64/5 - 32 + 64/3 = -40 + 80/3 + 80/5 = 8/3 $ $ a^2_0/2 + sum^infinity_(n=1) (a^2_n + b^2_n) &= 2/9 + sum^infinity_(k=1) (8/(pi^2 4k^2))^2 + sum^infinity_(k=1) (-48/(pi^3 (2k-1)^3))^2 \ &= 2/9 + 4/pi^4 sum^infinity_(k=1) 1/k^4 + 2304/pi^6 sum^infinity_(k=1) 1/(2k-1)^6 \ &= 2/9 + 4/pi^4 dot pi^4/90 + 2304/pi^6 dot pi^6/960 = 2/9 + 2/45 + 12/5 = 120/45 = 8/3 $ Левая часть равняется правой, равенство выполняется - коэффициенты подсчитаны верно. #pagebreak() = Комплексная функция Задайтесь числами $R, T > 0$ и рассмотрите комплекснозначную функцию $f: RR -> CC$ с периодом $T$ такую, что $ upright("Re")f(t) = cases( R\, & t in [-T/8; T/8), 2R - (8R t)/T\, & t in [T/8; (3T)/8), -R\, & t in [(3T)/8; (5T)/8), -6R + (8R t)/T\, & t in [(5T)/8; (7T)/8) ) #h(3em) upright("Im")f(t) = cases( (8R t)/T\, & t in [-T/8; T/8), R\, & t in [T/8; (3T)/8), 4R - (8R t)/T\, & t in [(3T)/8; (5T)/8), -R\, & t in [(5T)/8; (7T)/8) ) $ Для рассматриваемой функции $f$: - Постройте параметрический график $f(t)$ (кривую на комплексной плоскости). - Рассмотрите частичные суммы Фурье $G_N (t) = sum^N_(n=-N) c_n e^(i omega_n t)$, где $omega_n = (2pi n)/T$ - Вычислите вручную коэффициенты $c_n$ для $n = 0, 1, 2$ - Напишите программу, которая вычисляет коэффициенты Фурье $c_n$ для произвольного $N$. Приведите в отчёте коэффициенты для случая $N = 3$. - Постройте параметрические графики $G_N (t)$ для $N = 1, 2, 3, 10$. Сравните их друг с другом и с параметрическим графиком исходной функции $f(t)$. - Проверьте выполнение равенства Парсеваля Пусть $R = 1$, $T = 8$, получим следующую функцию: $ upright("Re")f(t) = cases( 1\, & t in [-1; 1), 2 - t\, & t in [1; 3), -1\, & t in [3; 5), -6 + t\, & t in [5; 7) ) #h(3em) upright("Im")f(t) = cases( t\, & t in [-1; 1), 1\, & t in [1; 3), 4 - t\, & t in [3; 5), -1\, & t in [5; 7) ) $ Построим график данной функции на вещественной и комплексной плоскостях: #figure( canvas(length: 1.25cm, { plot.plot(size: (8, 4), x-tick-step: 1, y-tick-step: 1, x-min: -10, x-max: 10, y-min: -3, y-max: 3, x-grid: true, y-grid: true, x-label: [t], y-label: [$f(t)$], { plot.add(domain: (-9.99, 9.99), t => { let (t0, t1, t2, t3, t4) = (-1, 1, 3, 5, 7) if t < t0 { t = -t + t0 + 1 } let tt = calc.rem(t - t0, t4 - t0) + t0 if tt >= t0 and tt < t1 { return 1 } else if tt >= t1 and tt < t2 { return 2 - tt } else if tt >= t2 and tt < t3 { return -1 } else { return -6 + tt } }, line: "linear", samples: 1000, label: [Re$f(t)$#v(1em)]) plot.add(domain: (-9.99, 9.99), t => { let (t0, t1, t2, t3, t4) = (-1, 1, 3, 5, 7) if t < t0 { t = -t + t0 - 3 } let tt = calc.rem(t - t0, t4 - t0) + t0 if tt >= t0 and tt < t1 { return tt } else if tt >= t1 and tt < t2 { return 1 } else if tt >= t2 and tt < t3 { return 4-tt } else { return -1 } }, line: "linear", samples: 1000, label: [Im$f(t)$], style: (stroke: yellow)) } ) }), caption: [График комплексной функции $f(t)$] ) #pagebreak() Период функции $T = 8$, $omega_n = (pi n)/4$. Рассмотрим функцию на промежутке $[-1; 7]$ и найдём коэффициент $c_n$: $ c_n &= 1/T integral^7_(-1) f(t)e^(-i omega_n t) upright(d)t \ &= 1/8(integral^1_(-1) (1+i t)e^(-i omega_n t) upright(d)t + integral^3_1 (2-t+i)upright(d)t + integral^5_3 (-1+i(4-t))upright(d)t + integral^7_5 (-6+t-i)upright(d)t) \ &= 1/8(integral^1_(-1) e^(-i omega_n t)upright(d)t + 2integral^3_1 e^(-i omega_n t)upright(d)t + i integral^3_1 e^(-i omega_n t)upright(d)t - integral^5_3 e^(-i omega_n t)upright(d)t + 4i integral^5_3 e^(-i omega_n t)upright(d)t \ &- 6integral^7_5 e^(-i omega_n t)upright(d)t - i integral^7_5 e^(-i omega_n t)upright(d)t + i integral^1_(-1) t e^(-i omega_n t)upright(d)t - integral^3_1 t e^(-i omega_n t)upright(d)t - i integral^5_3 t e^(-i omega_n t)upright(d)t + integral^7_5 t e^(-i omega_n t)upright(d)t) \ &= lr((i e^(-i omega_n t))/(8omega_n)|)^1_(-1) + lr((2i e^(-i omega_n t))/(8omega_n)|)^3_1 - lr((e^(-i omega_n t))/(8omega_n)|)^3_1 - lr((i e^(-i omega_n t))/(8omega_n)|)^5_3 - lr((4 e^(-i omega_n t))/(8omega_n)|)^5_3 - lr((6i e^(-i omega_n t))/(8omega_n)|)^7_5 + lr((e^(-i omega_n t))/(8omega_n)|)^7_5 \ &+ lr((e^(-i omega_n t)(i-omega_n t))/(8omega_n^2)|)^1_(-1) - lr((e^(-i omega_n t)(1+i omega_n t))/(8omega_n^2)|)^3_1 - lr((e^(-i omega_n t)(i-omega_n t))/(8omega_n^2)|)^5_3 + lr((e^(-i omega_n t)(1+i omega_n t))/(8omega_n^2)|)^7_5 \ &= ((-i-omega_n-i omega_n)e^(i omega_n) + (i+1)e^(-i omega_n) + (i-1)e^(-3i omega_n) + (-i-1)e^(-5i omega_n) + (omega_n + 1 + i omega_n)e^(-7i omega_n))/(8omega_n^2) \ &= ((-i-(pi n)/4-i (pi n)/4)e^(i (pi n)/4) + (i+1)e^(-i (pi n)/4) + (i-1)e^(-3i (pi n)/4) + (-i-1)e^(-5i (pi n)/4) + ((pi n)/4 + 1 + i (pi n)/4)e^(-7i (pi n)/4))/((pi^2 n^2)/2) $ $ c_0 &= 1/T integral^7_(-1)f(t)upright(d)t \ &= 1/8(integral^1_(-1) (1+i t) upright(d)t + integral^3_1 (2-t+i) upright(d)t + integral^5_3 (-1+i(4-t)) upright(d)t + integral^7_5 (-6+t-i) upright(d)t) \ &= 1/8(lr((t+(i t^2)/2)|)^1_(-1) + lr((2t+i t-t^2/2)|)^3_1 + lr((-t+4i t-(i t^2)/2)|)^5_3 + lr((-6t+t^2/2-i t)|)^7_5) \ &= 1/8(1+i/2+1-i/2+6+3i-9/2-2-i+1/2-5+20i-(25i)/2+3-12i+(9i)/2-42+49/2 \ &-7i+30-25/2+5i) = 0 $ #pagebreak() Дополним программу @prog новой комплексной функцией: #figure(```python ... function_formulas = [ ... # 5. Complex func { 'an': lambda n: 0, 'bn': lambda n: 0, 'cn': lambda n: 0 if n == 0 else ( complex(-pi * n / 4, -1 - pi * n / 4) * e ** (1j * pi * n / 4) + (1j + 1) * e ** (-1j * pi * n / 4) + (1j - 1) * e ** (-3j * pi * n / 4) + (-1j - 1) * e ** (-5j * pi * n / 4) + complex(1 + pi * n / 4, pi * n / 4) * e ** (-7j * pi * n / 4) ) / (pi ** 2 * n ** 2 / 2) } ... ] ... ```, caption: "Дополнение программы комплексной функцией") #figure(``` $ python fourier.py 5 3 an values: ['0: 0', '1: 0', '2: 0', '3: 0'] bn values: ['0: 0', '1: 0', '2: 0', '3: 0'] cn values: ['-3: -0.12737+3.9996e-17j', '-2: 1.1249e-17+1.1249e-17j', '-1: 1.1249e-17+2.2498e-17j', '0: 0', '1: 1.1463+1.3499e-16j', '2: -6.7493e-17-6.7493e-17j', '3: 3.9996e-17+1.9998e-17j'] ```, caption: "Ввывод программы для копмлексной функции") Из-за погрешностей чисел с плавающей точкой (float), программа выводит очень маленькое число ($~10^(-17)$) в некоторых случаях. В таких ситуациях мы будем воспринимать коэффициент $c_n$ равным нулю. $ G_3(t) = -0.12737e^((-3i pi t)/4) + 1.1463e^((i pi t)/4) $ С помощью программы из @prog, подсчитаем также коэффициенты для $N = 10$, после чего построим график $G_N (t)$ для значений $N = 1, 2, 3, 10$ и сравним их с $f(t)$: #pagebreak() #figure( canvas(length: 1.75cm, { plot.plot(size: (8, 4), x-tick-step: 1, y-tick-step: 1, x-min: -10, x-max: 10, y-min: -3, y-max: 3, x-grid: true, y-grid: true, x-label: [$t$], y-label: [Re$G_N (t)$], { plot.add(domain: (-9.99, 9.99), t => { let (t0, t1, t2, t3, t4) = (-1, 1, 3, 5, 7) if t < t0 { t = -t + t0 + 1 } let tt = calc.rem(t - t0, t4 - t0) + t0 if tt >= t0 and tt < t1 { return 1 } else if tt >= t1 and tt < t2 { return 2 - tt } else if tt >= t2 and tt < t3 { return -1 } else { return -6 + tt } }, line: "linear", samples: 1000, label: [Re$f(t)$#v(1em)]) plot.add(domain: (-9.99, 9.99), t => { 1.1463*calc.cos(calc.pi*t/4) }, line: "spline", samples: 100, label: [Re$G_1(t)$#v(1em)]) plot.add(domain: (-9.99, 9.99), t => { -0.12737*calc.cos(3*calc.pi*t/4) + 1.1463*calc.cos(calc.pi*t/4) }, line: "spline", samples: 100, label: [Re$G_2(t)$#v(1em)]) plot.add(domain: (-9.99, 9.99), t => { -0.12737*calc.cos(3*calc.pi*t/4) + 1.1463*calc.cos(calc.pi*t/4) }, line: "spline", samples: 100, label: [Re$G_3(t)$#v(1em)], style: (stroke: purple)) plot.add(domain: (-9.99, 9.99), t => { 0.023394*calc.cos(7*calc.pi*t/4) - 0.12737*calc.cos(3*calc.pi*t/4) + 1.1463*calc.cos(calc.pi*t/4) - 0.045853*calc.cos(5*calc.pi*t/4) + 0.014152*calc.cos(9*calc.pi*t/4) }, line: "spline", samples: 100, label: [Re$G_10(t)$#v(1em)]) } ) }), caption: [Графики частичных сумм Фурье комплексной функции $G_N (t)$ и $f(t)$ (Вещественная плоскость)] ) #figure( canvas(length: 1.75cm, { plot.plot(size: (8, 4), x-tick-step: 1, y-tick-step: 1, x-min: -10, x-max: 10, y-min: -3, y-max: 3, x-grid: true, y-grid: true, x-label: [$t$], y-label: [Im$G_N (t)$], { plot.add(domain: (-9.99, 9.99), t => { let (t0, t1, t2, t3, t4) = (-1, 1, 3, 5, 7) if t < t0 { t = -t + t0 - 3 } let tt = calc.rem(t - t0, t4 - t0) + t0 if tt >= t0 and tt < t1 { return tt } else if tt >= t1 and tt < t2 { return 1 } else if tt >= t2 and tt < t3 { return 4-tt } else { return -1 } }, line: "linear", samples: 1000, label: [Im$f(t)$#v(1em)], style: (stroke: yellow)) plot.add(domain: (-9.99, 9.99), t => { 1.1463*calc.sin(calc.pi*t/4) }, line: "spline", samples: 100, label: [Im$G_1(t)$#v(1em)]) plot.add(domain: (-9.99, 9.99), t => { 0.12737*calc.sin(3*calc.pi*t/4) + 1.1463*calc.sin(calc.pi*t/4) }, line: "spline", samples: 100, label: [Im$G_2(t)$#v(1em)]) plot.add(domain: (-9.99, 9.99), t => { 0.12737*calc.sin(3*calc.pi*t/4) + 1.1463*calc.sin(calc.pi*t/4) }, line: "spline", samples: 100, label: [Im$G_3(t)$#v(1em)], style: (stroke: purple)) plot.add(domain: (-9.99, 9.99), t => { -0.023394*calc.sin(7*calc.pi*t/4) + 0.12737*calc.sin(3*calc.pi*t/4) + 1.1463*calc.sin(calc.pi*t/4) - 0.045853*calc.sin(5*calc.pi*t/4) + 0.014152*calc.sin(9*calc.pi*t/4) }, line: "spline", samples: 100, label: [Im$G_10(t)$#v(1em)]) } ) }), caption: [Графики частичных сумм Фурье комплексной функции $G_N (t)$ и $f(t)$ (Комплексаня плоскость)] ) Из графиков видно, что сумма Фурье $G_N (t)$ сходится к исходной функции $f(t)$ при $N -> infinity$ - коэффициент $c_n$ подсчитан верно. #pagebreak() Проверим выполнение равенства Парсеваля: $ 1/(T/2) integral^7_(-1) (f(t))^2 upright(d)t = sum^infinity_(n=-infinity) |c_n|^2 $ $ 1/(T/2) integral^7_(-1) (f(t))^2 upright(d)t &= 1/4(integral^1_(-1) (1+i t)^2 upright(d)t + integral^3_1 (2-t+i)^2 upright(d)t integral^5_3 (-1+i(4-t))^2 upright(d)t + integral^7_5 (-6+t-i)^2 upright(d)t) \ &= 1/4(lr((t+i t^2-t^3/3)|)^1_(-1) + lr((3t+4i t-2t^2-i t^2+t^3/3)|)^3_1 \ &+ lr((-15t-8i t+i t^2+4t^2-t^3/3)|)^5_3 + lr((t^3/3-6t^2-i t^2+35t+12i t)|)^7_5)\ &= 1/4(1+i-1/3+1-i-1/3+9+12i-18-9i+9-3-4i+2+i-1/3\ &-75-40i+25i+100-125/3+45+24i-9i-36+9+343/3-294-49i\ &+245+84i-125/3+150+25i-175-60i) = 0 $ $ sum^infinity_(n=-infinity) |c_n|^2 &= sum^infinity_(n=-infinity) lr(|cases( (8sqrt(2))/(pi^2 n^2)\, & n = 8k-7, -(8sqrt(2))/(pi^2 n^2)\, & n = 8k-3 )|)^2, k in ZZ = sum^infinity_(n=-infinity) ((8sqrt(2))/(pi^2 n^2))^2, n = 4k-3, k in ZZ \ &= 128/pi^4 sum^infinity_(k=-infinity) 1/(4k-3)^2 = 128/pi^4 dot pi^4/96 = 4/3 $ Левая и правая часть не равны, поскольку функция $f(t)$ не соответствует условию Дирихле.