what's wrong with the code?

1 visualizzazione (ultimi 30 giorni)
B
B il 20 Mar 2015
Commentato: B il 20 Mar 2015
Hi, what's wrong with the following code?
=========================================================================================================x=pi/4; n=2; sum=2; while(1) m=2*n-1; sumnew=sum+(-1)^(n-1)*x^m/factorial(m); error=(sumnew-sum)/sumnew; n=n+1; sum=sumnew; if error<0.001; break end end

Risposta accettata

Andrei Bobrov
Andrei Bobrov il 20 Mar 2015
Try it
x= pi/4;
n = 2;
sum1 = 2;
er = 1;
while abs(er) > 0.001
m = 2*n-1;
sumnew = sum1+(-1)^(n-1)*x^m/factorial(m);
er = (sumnew-sum1)/sumnew;
n = n+1;
sum1 = sumnew;
end

Più risposte (1)

Roger Stafford
Roger Stafford il 20 Mar 2015
If you were trying to calculate sin(pi/4), you started with the wrong values for n and sum1. For sin(pi/4) it should be the following. (As yours stands, it computes 2+sin(pi/4)-pi/4.)
x=pi/4;
n=1; % <-- Start with n = 1
sum1=0; % <-- Start with sum1 = 0
while(1)
m=2*n-1;
sumnew=sum1+(-1)^(n-1)*x^m/factorial(m);
error=abs((sumnew-sum1)/sumnew); % <-- Also this should be absolute value
n=n+1;
sum1=sumnew;
if error<0.001; break end
end
[Note: Like Andrei, I substituted 'sum1' for 'sum' because the latter symbol is reserved for matlab's 'sum' function.]
  3 Commenti
B
B il 20 Mar 2015
I'm not sure if the problem is related to the computer it self. It's very slow right now..
B
B il 20 Mar 2015
First code is working now.. Thanks Andrei Bobrov

Accedi per commentare.

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by