MATLAB: I cant figure out why the function is giving me NaN and not an answer

codingsin functiontaylor series

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

Best Answer

  • 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)])