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

 Accepted Answer

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 Comments

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
Thank you, im sorry i didnt know that we have to save before running the code.

Sign in to comment.

More Answers (0)

Categories

Community Treasure Hunt

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

Start Hunting!