Search All of the Math Forum:

Views expressed in these public forums are not endorsed by NCTM or The Math Forum.

Notice: We are no longer accepting new posts, but the forums will continue to be readable.

Topic: help with writing a short program using square waves, fourier
series expansion

Replies: 3   Last Post: Feb 21, 2013 10:06 AM

 Messages: [ Previous | Next ]
 Derek Goring Posts: 3,922 Registered: 12/7/04
Re: help with writing a short program using square waves, fourier
series expansion

Posted: Feb 20, 2013 9:47 PM

On Tuesday, February 19, 2013 2:37:06 PM UTC+13, laura wrote:
> A square wave of period 2L is a step function which is equal to 1 for x from 0 to L, then is equal to -1 for x from L to 2L.
>
>
>
> A square wave can be approximated by this Fourier Series expansion:
>
> infinity
>
> f(x )=(4/pi) ?((1/n)sin(npix/L))
>
> n=1,2,3,5....
>
> I need to write a program that prompts the user for a maximum value for n and a value for L. Using those values, I have to compute the Fourier Series expansion for a square wave and plot the result.
>
> L must be a positive number, and n must be a positive odd integer. If the user does not provide an acceptable number, you should detect the error, display an error message, and stop your script.
>
> You should evaluate the function for 500 values of x, evenly distributed from 0 to 2L.
>
>
>
> I know this is alot but I have no idea how to even start it! If you can at least start me off that would be great!
>
> I know i need to get an input, detect an error, stop the script, and evenly distrubute 500 points im just not sure how. thanks again!

It's almost impossible to follow this thread because you have top posted.

The first line is correct, but just about everything after that is wrong I'm afraid.
You have defined x as a vector, now y must be a vector also.
Why did you define it as a scalar 4/pi ?

The equation is a summation over n=1,2,3...
yet you are looping over some other complicated variable.
Why not simply:
for n=1:nmx

At each step, you calculate the sine and put it into y, then in the next step you overwrite y. You need to add each to the previous.
y=y + (4/pi) etc
but to do this, you must first define y as a vector filled with zeros:
y=zeros(1,length(x));

Why are you checking the value of L after you've used it?
Shouldn't this go before you use it?

Date Subject Author
2/18/13 Derek Goring
2/20/13 Derek Goring
2/21/13 Steven Lord