I cant figure out why my function is giving me NaN and not an answer

1 view (last 30 days)
degree=input('Enter the value of x in degrees to compute sin(x): ');
rad=(pi/180)*degree;
x=rad
error=1;
n=0;
while error >=(10^-5);
terms = ((-1)^n)*(((x^(n+1)))/factorial(n+1));
dsin=sum(terms);
n=n+1;
error=abs((sin(x)-dsin)/sin(x))*100;
end
disp(['dsin(x)= ',num2str(dsin)])
Enter the value of x in degrees to compute sin(x): 90
x =
1.5708
dsin(x)= NaN

Accepted Answer

Rahul Kalampattel
Rahul Kalampattel on 15 Feb 2017
Edited: Rahul Kalampattel on 15 Feb 2017
The line dsin=sum(terms) isn't summing anything, since terms isn't a vector. You can either make it a vector, or initialise dsin and change the line to dsin=dsin+terms.
Also your Taylor series for sine was using the wrong indices, you only need odd numbers for n, so increment +2 instead of +1 (making sure that the +/- signs are still in the right places).
% Edited code %
degree=input('Enter the value of x in degrees to compute sin(x): ');
rad=(pi/180)*degree;
x=rad;
error=1;
n=0;
dsin=0;
while error >=(10^-5)
newTerms = ((-1)^(n/2))*(((x^(n+1)))/factorial(n+1))
dsin=dsin+newTerms
n=n+2;
error=abs((sin(x)-dsin)/sin(x))*100
end
disp(['sin(x)= ',num2str(dsin)])

More Answers (0)

Categories

Find more on Mathematics 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!