how to use a while loop to perform an infinite series approximation

So I have to write a program using a while loop that uses the alternating series approximation for sin(x) using a while loop and compare it to the matlab sin(x) using an error function. so far I have:
clc
clear
x=input('Enter the value of x to compute sin(x): ');
error=1;
n=0;
while error >= 1*(10^-5);
terms = ((-1)^n)*(((x^(n+1)))/factorial(n+1));
SINx=sum(terms);
n=n+1;
error=abs((sin(x)-SINx)/sin(x))*100;
end
And my loop does nothing. Any ideas?

 채택된 답변

Tom
Tom 2012년 7월 2일
편집: Tom 2012년 7월 2일
Here's a shabby way of doing it...
x=pi/2; %test: sin(pi/2)=1;
error=1;
n=1;
count=0;
while error >= 1*(10^-3);
%x -x^3/3! +x^5/5! ...
count=count+1;
terms(count)=(-1)^(count+1)*(x^n)/factorial(n);
SINx=sum(terms);
n=n+2;
error=abs((sin(x)-SINx)/sin(x))*100;
end
disp(SINx)

추가 답변 (1개)

Walter Roberson
Walter Roberson 2012년 7월 2일

0 개 추천

You are only generating a single value in "terms", and the sum() is being applied to that single value. You are not accumulating the values from the terms with n=0, n=1, n=2, etc..

댓글 수: 2

That is true; also I think the series is incorrect- sine is something like this:x -x^3/3! +x^5/5! ...
yes I see the error in the series -- I have to fix where the N starts counting for it to be right -- but how do I accumulate the n terms? do I need the while loop to be embedded in a For loop or vice versa?

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

질문:

Joe
2012년 7월 2일

댓글:

2016년 11월 1일

Community Treasure Hunt

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

Start Hunting!

Translated by