I cant figure out why my function is giving me NaN and not an answer
15 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Colleen Gibbons
le 15 Fév 2017
Modifié(e) : Walter Roberson
le 15 Fév 2017
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 commentaires
Réponse acceptée
Rahul K
le 15 Fév 2017
Modifié(e) : Rahul K
le 15 Fév 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 commentaires
Plus de réponses (0)
Voir également
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!