Why do I get this error: A(I): index out of bounds; value 2 out of bound 1 (line 13)
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
function root=newtonmethod(f,fprime,x0,maxiter,tol)
%input:
% f string that names the function f(x).
% fprime string that names the derivative f’(x).
% x0 the initial point
% tol is the termination tolerances
% maxiter the maximum number of iteration
x(1) = x0;
n = 2;
while abs(f(x(n))) > tol & n < maxiter
m = n+1;
x(m) = x(n) - f(x(n))/fprime(x(n));
if x(n) - f(x(n))/fprime(x(n)) < 0
root = x(n);
break;
end
end
root = x(n)
0 Kommentare
Antworten (2)
Daniel kiracofe
am 13 Nov. 2016
Because the very first time the while statement's condition is checked, n=2, and x is a vector that has 1 element. You are asking to evaluate the 2nd element of an array that has only 1 element. You probably want to start with n=1 instead of n=2.
0 Kommentare
Roger Stafford
am 14 Nov. 2016
Besides the error that Daniel gives you, another error is that ’n’ never changes within your while-loop, so the (corrected) loop would never stop unless you just happened to start with the right value.
0 Kommentare
Siehe auch
Kategorien
Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!