필터 지우기
필터 지우기

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

조회 수: 2 (최근 30일)
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

채택된 답변

Rahul Kalampattel
Rahul Kalampattel 2017년 2월 15일
편집: Rahul Kalampattel 2017년 2월 15일
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개)

카테고리

Help CenterFile Exchange에서 Mathematics에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by