Help with matlab program for cos(x)

  • Thread starter Thread starter baznguy
  • Start date Start date
  • Tags Tags
    Matlab Program
Click For Summary
The discussion revolves around creating a MATLAB function called seriesCos to approximate cos(x) using a series expansion. The user struggles with implementing a while loop that should continue until the absolute difference between successive iterations is less than 1.e-6. The issue identified is that the error variable 'er' is initialized to 0.0, preventing the loop from executing. A suggestion is made to start 'er' with a value greater than 1e-6 to allow the loop to run. The conversation highlights the importance of correctly initializing variables in programming to ensure proper function execution.
baznguy
Messages
1
Reaction score
0

Homework Statement



The function cos(x) can be approximated using the following series expansion:
1df491c1c760cda57c0f4f71cd2f191.png


Write a MATLAB function called seriesCos that takes a single scalar argument, x, uses the above formula to compute cos(x), and returns the result. Your function should use a while loop and continue adding terms to the series until the absolute value of the difference between successive iterations is less than 1.e-6. MATLAB functions that may prove useful include factorial() and abs().

Homework Equations


i can't get it to work and I'm not sure what I am doing wrong.It's not going through the loop or anything

The Attempt at a Solution


function y=seriesCos(x);
%calculate cos(x) through a series
%user call seriesCos(x,n)
%x is number to evaluate n is desire cycles through series
x=input ('Enter x to be evalute: ');
ser=1;
sum=0;
n=1;
er=0.0;
while er>=1e-6
an=(-1)^n*x^(2*n)/(factorial(2*n));
sum=ser;
ser=sum+an;
n=n+1;
er=abs((ser-sum)/(ser));
end
disp (ser)
disp (er)
 
Physics news on Phys.org
look at the line in which you start the while loop and you should see something wrong

what is er defined to be?
 
You are right, it's not going through the loop, because you are telling it not to:

Code:
er=0.0;
while er>=1e-6 
 ...

I suggest setting er to something larger than 1e-6 to start with :P
 

Similar threads

  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 3 ·
Replies
3
Views
1K
  • · Replies 1 ·
Replies
1
Views
2K
Replies
2
Views
1K
  • · Replies 2 ·
Replies
2
Views
3K
Replies
2
Views
2K
  • · Replies 10 ·
Replies
10
Views
3K
  • · Replies 6 ·
Replies
6
Views
5K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 1 ·
Replies
1
Views
1K