Finding an approximation for cos(x) using for loops
11 views (last 30 days)
Show older comments
Laura
on 17 Nov 2013
Commented: Weeraphol Egsaphung
on 23 Sep 2017
Hi there,
I recently got help on creating a script to calculate the value of cos(x) using for loops. The question asks:
"Write a script which will calculate the value of cos(x) (ask the user for the value of x and n):
cos(x)=( from k=1 –> n )∑(-1) ̂(k-1)(x ̂(2(k-1))/(2(k-1))!)
" I had real problems getting the answer and so asked a tutor to help me with it. She managed to get the code working but I failed to understand how it actually works. (her explanation was not very clear)
So, I have sat staring at it for ages and it still doesn't make sense to me.
Here it is:
% Ask user for values x, n
x=input('Please enter a value for x: '); %cos angle
x_rad=x*pi/180;
n=input('Please enter a value for n: '); %nth term
%factorial
fact=1;
sum=0;
for k=1:n
initial=-1;
for a=0:(k-1)
initial=(-1)*initial;
end
numerator=1;
for b=1:2*(k-1)
numerator=numerator*x_rad;
end
for t=1:2*(k-1)
fact=fact*t;
end
total=(initial*numerator)/fact;
sum=sum+total;
end
fprintf('cos(%d)=%6.6f \n',x,sum);
Can anyone explain how this code is working in the for loop? I am so confused.
Also, any advice on a simpler way to do this?
Thanks so much, Laura
2 Comments
Accepted Answer
Umair Nadeem
on 17 Nov 2013
Edited: Umair Nadeem
on 17 Nov 2013
The code has been developed using a more complex approach. You can simply implement the equation you gave above. Here is how to do it.
% Ask user for values x, n
x=input('Please enter a value for x: '); %cos angle
x_rad=x*pi/180;
n=input('Please enter a value for n: '); %nth term
% Initialize resultant variable
sum=0;
for k=1:n
initial = (-1)^(k-1);
numerator = x_rad^(2*(k-1));
denominator = factorial(2*(k-1));
total=(initial*numerator)/denominator;
sum=sum+total;
end
fprintf('cos(%d)=%6.6f \n',x,sum);
It will give the same result. You dont have to use nested for loops to calculate the values of ^ (to the power), you can do it right away.
Hope it helps
1 Comment
Weeraphol Egsaphung
on 23 Sep 2017
Hi, I wonder the value of >> fprintf('cos(%d)=%6.6f \n',x,sum); if I want it sin How could I use the code
More Answers (0)
See Also
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!