- #1

- 31

- 0

I'm new to Matlab, and I'm trying to evaluate a function via fast fourier transform using Matlab, then compare the values at each gridpoint with the exact value.

The function is

y1 = cos(x)-20*sin(5*x)+6*sin(12*x)

on the interval [-pi, pi], using n = 9 gridpoints.

I first tried to find the Fourier coefficients F1:

n = 9;

x = -pi:(2*pi/(n-1)):pi;

y1 = cos(x)-20*sin(5*x)+6*sin(12*x);

F1 = fft(y1);

I checked the values of my coefficients with the formula given by my teacher:

F1_k = SUM[y1(x_j)*exp(pi*i*j*k/m)]

where m = n/2, k = 0, 1, ..., 2m-1, and SUM is from j = 0 to j = 2m-1.

The coefficients matched.

Then I tried to compute the function F(x) at each grid point x_j using the formula

F(x) = (1/m)*SUM(F1_k*exp(i*k*x))

where SUM is from k = 0 to 2m-1

(This is the formula given by my teacher.)

for j=1:1:n

sum=0;

for k=1:1:n

sum=sum+(F1(k)*(exp(i*(k-1)*x(j))));

end

F(j)=sum/(n/2);

end

However, the values for F(x) that I got were

-0.2222 -14.8231i

-15.3243 +36.4597i

22.2864 -22.5086i

-4.6765 + 1.8450i

-2.0000 + 0.0000i

-30.6032 -12.5842i

26.5710 +26.7933i

-7.6067 -17.8277i

-0.2222 -14.8231i

instead of the actual values

-1

-14.849242

20

-13.435029

1

14.849242

-20

13.435029

-1

What is wrong with my program?

Thank you.

Regards,

Rayne