secant method exceeds the number of array

조회 수: 2 (최근 30일)
Faisal Al-Wazir
Faisal Al-Wazir 2022년 10월 2일
편집: Torsten 2022년 10월 2일
hi, i'm trying to solve this question but i don't know why i'm getting error every time i run it
here is the qustion part c
clear
clc
fun=@(x) x^3-6*x^2+11*x-6.1;
x=3.5;
c_factor=0.001;
d=@(x) 3*x^2-12*x+11;
for i=1:100
x(i+2)=x(i)-(fun(x(i))*((x(i+1)-x(i))/(fun(x(i+1))-fun(x(i)))));
e(i)=abs((x(i+1)-x(i))/x(i));
if e(i)<c_factor
break
end
end
Index exceeds the number of array elements. Index must not exceed 1.
fprintf('The root of given equation is: %.4f\n', x(i))

채택된 답변

Torsten
Torsten 2022년 10월 2일
편집: Torsten 2022년 10월 2일
x(i+2)=x(i)-(fun(x(i))*((x(i+1)-x(i))/(fun(x(i+1))-fun(x(i)))));
For i = 1, the evaluation of the right-hand side needs x(1) and x(2).
You didn't define them before the loop. Set
x(1) = 2.5;
x(2) = 3.5;
instead of
x=3.5;

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by