Filter löschen
Filter löschen

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

3 Ansichten (letzte 30 Tage)
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?

Akzeptierte Antwort

Tom
Tom am 2 Jul. 2012
Bearbeitet: Tom am 2 Jul. 2012
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)

Weitere Antworten (1)

Walter Roberson
Walter Roberson am 2 Jul. 2012
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 Kommentare
Tom
Tom am 2 Jul. 2012
That is true; also I think the series is incorrect- sine is something like this:x -x^3/3! +x^5/5! ...
Joe
Joe am 2 Jul. 2012
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?

Melden Sie sich an, um zu kommentieren.

Community Treasure Hunt

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

Start Hunting!

Translated by