partial sum of a series

13 Ansichten (letzte 30 Tage)
SSBGH
SSBGH am 6 Mai 2022
Bearbeitet: Paul am 7 Mai 2022
i have this function and i wrote the following code to calculate the Fourier coefficients
im just stuck with writing a loop which calculate the partial sum of the series till a given number N as well as Plotting the function and the corresponding partial sum (N = 12) on one figure.
can any one help?
  3 Kommentare
SSBGH
SSBGH am 6 Mai 2022
syms x
f = 1/2*(sin(x)+abs(sin(x)));
%%a0
a0_sym= (1/pi)*int(f,x,-pi,pi);
a0= double(a0_sym)
%%an, bn
for n =1:12;
a_sym(n) = (1/pi)*int(f*cos(n*x),x,-pi,pi);
b_sym(n) = (1/pi)*int(f*sin(n*x),x,-pi,pi);
a(n)=double(a_sym(n))
b(n)=double(b_sym(n))
end
here you go
Walter Roberson
Walter Roberson am 6 Mai 2022
syms x
Pi = sym(pi);
f = 1/2*(sin(x) + abs(sin(x)))
f = 
X = linspace(-Pi, Pi);
F = double(subs(f, x, X));
plot(X, F)
fourier(f, x)
ans = 
f2 = piecewise(x >= 0 & x <= 3*Pi/2, sin(x), zeros(size(x)))
f2 = 
F2 = double(subs(f2, x, X));
plot(X, F2)
fourier(f2)
ans = 
sympref('HeavisideAtOrigin', 0);
f3 = (heaviside(x)-heaviside(x-3*Pi/2))*sin(x)
f3 = 
F3 = double(subs(f3, x, X));
plot(X, F3)
simplify(fourier(f3, x), 'steps', 10)
ans = 
Interesting, it appears that you can get a closed formula -- though you have to work at it a bit.

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Paul
Paul am 6 Mai 2022
Bearbeitet: Paul am 7 Mai 2022
Hi SSBGH,
To plot the function, we need a set of x-values to plot over.
As you've done, define the function and the CFS coefficients symbolically
syms x
syms n integer positive % missing from original code!
f = 1/2*(sin(x)+abs(sin(x)));
%%a0
% use sym(pi) when doing symbolic math
Pi = sym(pi);
a0_sym = (1/Pi)*int(f,x,-Pi,Pi); % this equation has been corrected
a_sym(n) = (1/Pi)*int(f*cos(n*x),x,-Pi,Pi)
a_sym(n) = 
b_sym(n) = (1/Pi)*int(f*sin(n*x),x,-Pi,Pi)
b_sym(n) = 
Now define the values of x to make the plot
xvals = -pi:.01:pi;
Now we loop over the CFS coefficients to sum them all up over all values of x
N = 12;
% intialize with a0
fr = double(a0_sym)/2;
for n = 1:N;
a = double(a_sym(n));
b = double(b_sym(n));
% at this point, fill in the RHS
fr = fr + ...
end
Now plot
plot(xvals,1/2*(sin(xvals) + abs(sin(xvals))),xvals,fr)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by