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

 채택된 답변

Alan Stevens
Alan Stevens 2020년 10월 27일

1 개 추천

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

R Abhinandan
R Abhinandan 2020년 10월 27일
편집: R Abhinandan 2020년 10월 27일
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 2020년 10월 27일
Thank you, im sorry i didnt know that we have to save before running the code.

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

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Symbolic Math Toolbox에 대해 자세히 알아보기

질문:

2020년 10월 27일

댓글:

2020년 10월 27일

Community Treasure Hunt

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

Start Hunting!

Translated by