#import "@preview/physica:0.9.6": * #import "lib.typ": ccases #import "@preview/lilaq:0.5.0" as lq = problem 4 == a) to find the fourier series of $ f(x) = ccases( 0, -pi < x < 0 "or" pi/2 < x <= pi, x, 0 <= x <= pi/2, ) $ we can use the formulae for the coefficients $ a_0 & = 1/pi integral_(-pi)^pi f(x) dd(x) \ & = 1/pi integral_0^(pi slash 2) x dd(x) \ & = 1/(2 pi) [x^2]_0^(pi slash 2) \ & = pi/8 $ $ a_n & = 1/pi integral_(-pi)^pi f(x) cos(n x) dd(x) \ & = 1/pi integral_0^(pi slash 2) x cos(n x) dd(x) \ & = 1/pi [x/n sin(n x) + 1/n^2 cos(n x)]_0^(pi slash 2) \ & = 1/(2 n) sin(pi/2 n) + 1/(pi n^2) (cos (pi/2 n) - 1) $ then for the different cases of $n mod 4$ $ a_n = ccases( 0, n equiv 0, 1/(2 n) - 1/(pi n^2), n equiv 1, -2/(pi n^2), n equiv 2, -1/(2 n) - 1/(pi n^2), n equiv 3, ) $ then for the $sin$ terms $ b_n & = 1/pi integral_(-pi)^pi f(x) sin(n x) dd(x) \ & = 1/pi integral_0^(pi slash 2) x sin(n x) dd(x) \ & = 1/pi [1/n^2 sin(n x) - x/n cos(n x)]_0^(pi slash 2) \ & = 1/(pi n^2) sin(pi/2 n) - 1/(2 n) cos(pi/2 n) $ then similar $n mod 4$ computations $ b_n = ccases( -1/(2 n), n equiv 0, 1/(pi n^2), n equiv 1, 1/(2 n), n equiv 2, -1/(pi n^2), n equiv 3 ) $ then putting it all together $ f(x) = a_0/2 + sum_(n=1)^oo a_n cos(n x) + sum_(n=1)^oo b_n sin (n x) $ which is our final fourier series for $f(x)$. #{ let a_0 = calc.pi / 8 let a(n) = { if calc.rem-euclid(n, 4) == 0 { 0 } else if calc.rem-euclid(n, 4) == 1 { 1 / (2 * n) - 1 / (calc.pi * n * n) } else if calc.rem-euclid(n, 4) == 2 { -2 / (calc.pi * n * n) } else if calc.rem-euclid(n, 4) == 3 { -1 / (2 * n) - 1 / (calc.pi * n * n) } } let b(n) = { if calc.rem-euclid(n, 4) == 0 { -1 / (2 * n) } else if calc.rem-euclid(n, 4) == 1 { 1 / (calc.pi * n * n) } else if calc.rem-euclid(n, 4) == 2 { 1 / (2 * n) } else if calc.rem-euclid(n, 4) == 3 { -1 / (calc.pi * n * n) } } let fourier(x, n: 50) = ( a_0 / 2 + range(1, n).map(n => a(n) * calc.cos(n * x)).sum() + range(1, n).map(n => b(n) * calc.sin(n * x)).sum() ) let f(x) = { let t = calc.rem-euclid(x, 2 * calc.pi) if 0 <= t and t <= calc.pi / 2 { t } else { 0 } } let xs = lq.linspace(-3 * calc.pi, 3 * calc.pi, num: 100) let configs = ( (n: 5), (n: 20), (n: 100), ) for config in configs { lq.diagram( title: [the fourier series of $f(x)$ with $N = #config.n$], xlabel: $x$, ylabel: $y$, width: 100%, height: 32%, xlim: (-3 * calc.pi, 3 * calc.pi), xaxis: ( locate-ticks: lq.locate-ticks-linear.with(unit: calc.pi), format-ticks: lq.format-ticks-linear.with(suffix: $pi$), ), lq.plot(xs, x => fourier(x, n: config.n), mark: none), lq.plot(xs, f, mark: none), ) } } == b) let $ f(x) = ccases( 0, -pi < x < 0, x, 0 < x < pi/2, pi - x, pi/2 < x <= pi ) $ then we can proceed as usual to calculate the coefficients of the fourier series, utilising symmetries of $x$ and $pi - x$ on the given intervals. $ a_0 & = 1/pi integral_(-pi)^pi f(x) dd(x) \ & = 1/pi (integral_0^(pi slash 2) x dd(x) + integral_(pi slash 2)^pi (pi - x) dd(x)) \ & = 2/pi integral_0^(pi slash 2) x dd(x) \ & = 1/pi [x^2]_0^(pi slash 2) \ & = pi / 4 $ $ a_n & = 1/pi integral_(-pi)^pi f(x) cos(n x) dd(x) \ & = 1/pi (integral_0^(pi slash 2) x cos(n x) dd(x) + integral_(pi slash 2)^pi (pi - x) cos(n x) dd(x)) \ & = 1/pi ([x/n sin(n x) + 1/n^2 cos(n x)]_0^(pi slash 2) \ & + [(pi-x)/n sin(n x) - 1/n^2 cos(n x)]_(pi slash 2)^pi) \ & = 1/pi ([cancel(pi/(2 n) sin(pi/2 n)) + 1/n^2 cos(pi/2 n) - 1/n^2] \ & + [1/n^2 (-1)^(n+1) - cancel(pi/(2 n) sin(pi/2 n)) + 1/n^2 cos(pi/2 n)]) \ & = 1/(pi n^2) (2 cos(pi/2 n) - 1 + (-1)^(n + 1)) $ notice that for odd $n$, $a_n = 0$, since the cosine is zero and the alternating sign is fixed to 1, canceling with the constant term. thus we can shorten it further with a definition for $n = 2 k$ $ a_n & = 1/(4 pi k^2) (2 cos(pi k) - 1 + (-1)^(2k + 1)) \ & = 1/(2 pi k^2) ((-1)^k - 1) \ & = 2/(pi n^2) ((-1)^(n slash 2) - 1) $ similarly $b_n$, we can recognize the symmetry earlier in our calculations $ b_n & = 1/pi integral_(-pi)^pi f(x) sin(n x) dd(x) \ & = 1/pi (integral_0^(pi slash 2) x sin(n x) dd(x) + integral_(pi slash 2)^pi (pi - x) sin(n x) dd(x)) \ & = 1/pi (1 - (-1)^n) integral_0^(pi slash 2) x sin(n x) dd(x) $ notice that for even $n$, $b_n = 0$, let $n = 2k + 1$ $ b_n & = 1/pi (1 - (-1)^(2k + 1)) integral_0^(pi slash 2) x sin ((2k + 1)x) dd(x) \ & = 1/pi (1 + (-1)^(2k)) [1/n^2 sin(n x) - x/n cos(n x)]_0^(pi slash 2) \ & = 2/(pi n^2) sin(pi/2 n) \ & = 2/(pi n^2) (-1)^((n-1)/2) $ #{ let a_0 = calc.pi / 4 let a(n) = { if calc.rem-euclid(n, 2) == 0 { 2 / (calc.pi * n * n) * (calc.pow(-1, n / 2) - 1) } else { 0 } } let b(n) = { if calc.rem-euclid(n, 2) == 1 { 2 / (calc.pi * n * n) * calc.pow(-1, (n - 1) / 2) } else { 0 } } let fourier(x, n: 50) = ( a_0 / 2 + range(1, n).map(n => a(n) * calc.cos(n * x)).sum() + range(1, n).map(n => b(n) * calc.sin(n * x)).sum() ) let f(x) = { let t = calc.rem-euclid(x, 2 * calc.pi) if 0 < t and t < calc.pi / 2 { t } else if calc.pi / 2 < t and t <= calc.pi { calc.pi - t } else { 0 } } let xs = lq.linspace(-3 * calc.pi, 3 * calc.pi, num: 100) let configs = ( (n: 5), (n: 20), (n: 100), ) for config in configs { lq.diagram( title: [the fourier series of $f(x)$ with $N = #config.n$], xlabel: $x$, ylabel: $y$, width: 100%, height: 32%, xlim: (-3 * calc.pi, 3 * calc.pi), xaxis: ( locate-ticks: lq.locate-ticks-linear.with(unit: calc.pi), format-ticks: lq.format-ticks-linear.with(suffix: $pi$), ), lq.plot(xs, x => fourier(x, n: config.n), mark: none), lq.plot(xs, f, mark: none), ) } } == c) let $ f(x) = ccases( -pi - x, -pi < x < -pi/2, x, -pi/2 < x < pi/2, pi - x, pi/2 < x <= pi, ) $ then $ a_0 & = 1/pi integral_(-pi)^pi f(x) dd(x) \ & = 1/pi (integral_(-pi)^(-pi slash 2) (-pi - x) dd(x) + cancel(integral_(-pi slash 2)^(pi slash 2) x dd(x)) + integral_(pi slash 2)^pi (pi - x) dd(x)) \ & = 2/pi integral_(pi slash 2)^pi (pi - x) dd(x) \ & = 2/pi ([pi^2 - pi^2/2] - 1/2 [pi^2 - pi^2/4]) \ & = 2 pi - pi - pi + pi/2 \ & = pi/2 $ $ a_n & = 1/pi integral_(-pi)^pi f(x) cos(n x) dd(x) \ & = 2/pi integral_(pi slash 2)^pi (pi - x) cos(n x) dd(x) \ & = 2/pi [1/n^2 cos(n x) + (pi - x)/n sin(n x)]_(pi slash 2)^pi \ & = 2/pi (1/n^2 (-1)^n - 1/n^2 cos(pi/2 n) - pi/(2 n) sin(pi/2 n)) \ $ $ b_n & = 1/pi integral_(-pi)^pi f(x) sin(n x) dd(x) \ & = 2/pi (integral_(pi slash 2)^pi (pi - x) sin(n x) dd(x) + integral_0^(pi slash 2) x sin(n x) dd(x)) \ & = 2/pi ([(x - pi)/n cos(n x) - 1/n^2 sin(n x)]_(pi slash 2)^pi \ & + [1/n^2 sin(n x) - x/n cos(n x)]_0^(pi slash 2)) \ & = 2/pi (- pi/(2 n) cos(pi/2 n) - cancel(1/n^2 sin(pi/2 n)) \ & + cancel(1/n^2 sin(pi/2 n)) - pi/(2 n) cos(pi/2 n)) \ & = 2/n cos(-pi/2 n) $ we could figure out what these expressions equal in each case ($mod 4$), but for the sake of brevity, i'll leave it at that. #{ let a_0 = calc.pi / 2 let a(n) = ( 2 / calc.pi * ( 1 / (n * n) * calc.pow(-1, n) - 1 / (n * n) * calc.cos(calc.pi / 2 * n) - calc.pi / (2 * n) * calc.sin(calc.pi / 2 * n) ) ) let b(n) = ( 2 / n * calc.cos(-calc.pi / 2 * n) ) let fourier(x, n: 50) = ( a_0 / 2 + range(1, n).map(n => a(n) * calc.cos(n * x)).sum() + range(1, n).map(n => b(n) * calc.sin(n * x)).sum() ) let f(x) = { let t = calc.rem-euclid(x, 2 * calc.pi) if -calc.pi < t and t < -calc.pi / 2 { -calc.pi - t } else if -calc.pi / 2 < t and t < calc.pi / 2 { t } else { calc.pi - t } } let xs = lq.linspace(-3 * calc.pi, 3 * calc.pi, num: 100) let configs = ( (n: 5), (n: 20), (n: 100), ) for config in configs { lq.diagram( title: [the fourier series of $f(x)$ with $N = #config.n$], xlabel: $x$, ylabel: $y$, width: 100%, height: 32%, xlim: (-3 * calc.pi, 3 * calc.pi), xaxis: ( locate-ticks: lq.locate-ticks-linear.with(unit: calc.pi), format-ticks: lq.format-ticks-linear.with(suffix: $pi$), ), lq.plot(xs, x => fourier(x, n: config.n), mark: none), lq.plot(xs, f, mark: none), ) } } as we can see, i've made a mistake in my calculations.