I cant figure out why my function is giving me NaN and not an answer
    5 views (last 30 days)
  
       Show older comments
    
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
0 Comments
Accepted Answer
  Rahul K
      
 on 15 Feb 2017
        
      Edited: Rahul K
      
 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)])
0 Comments
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
