Finding roots using Newton raphson method

Here is my code and my output is a function and not a numerical value as I expected. Can anyone debug this code?
syms f y x df
f=@(y) exp(y)-(sin(pi*y/3));
df=@(y) exp(y)-((pi*cos(pi*y/3))/3);
x(1)=-3.0;
error=0.00001;
for i=1:10
x(i+1)=x(i)-((f(x(i)))/df(x(i)));
err(i)=abs((x(i+1)-x(i))/x(i));
if err(i)<error
break
end
end
root=x(i);
output:
- (sin((pi*(exp(-3)/(pi/3 + exp(-3)) + 3))/3) + exp(- exp(-3)/(pi/3 + exp(-3)) - 3))/(exp(- exp(-3)/(pi/3 + exp(-3)) - 3) - (pi*cos((pi*(exp(-3)/(pi/3 + exp(-3)) + 3))/3))/3) - exp(-3)/(pi/3 + exp(-3)) - 3

 Réponse acceptée

Alan Stevens
Alan Stevens le 27 Oct 2020
Just get rid of the first line, you don't need it
f=@(y) exp(y)-(sin(pi*y/3));
df=@(y) exp(y)-((pi*cos(pi*y/3))/3);
x(1)=-3.0;
error=0.00001;
for i=1:10
x(i+1)=x(i)-((f(x(i)))/df(x(i)));
err(i)=abs((x(i+1)-x(i))/x(i));
if err(i)<error
break
end
end
root=x(i);
disp(root)

3 commentaires

R Abhinandan
R Abhinandan le 27 Oct 2020
Modifié(e) : R Abhinandan le 27 Oct 2020
Still im getting the output as a function and not the root
output:
- (sin((pi*(exp(-3)/(pi/3 + exp(-3)) + 3))/3) + exp(- exp(-3)/(pi/3 + exp(-3)) - 3))/(exp(- exp(-3)/(pi/3 + exp(-3)) - 3) - (pi*cos((pi*(exp(-3)/(pi/3 + exp(-3)) + 3))/3))/3) - exp(-3)/(pi/3 + exp(-3)) - 3
expected output:
-3.0844
This is what I get:
>> f=@(y) exp(y)-(sin(pi*y/3));
df=@(y) exp(y)-((pi*cos(pi*y/3))/3);
x(1)=-3.0;
error=0.00001;
for i=1:10
x(i+1)=x(i)-((f(x(i)))/df(x(i)));
err(i)=abs((x(i+1)-x(i))/x(i));
if err(i)<error
break
end
end
root=x(i);
disp(root)
-3.0454
R Abhinandan
R Abhinandan le 27 Oct 2020
Thank you, im sorry i didnt know that we have to save before running the code.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Symbolic Math Toolbox dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by