how to solve Index exceeds the number of array elements (1)?

Hy guys im writing the following code
% creating an array for D %
D_array = 1:1:40;
% preallocation for optimal distance & cost %
Optimal_distance = zeros(1,length(D));
Cost = zeros(1,length(D));
% Newton's Raphson Method %
for j = 1:length(D_array)
D = D_array(j);
% Newton-Raphson's Method %
% initial guess %
x0 = 60;
% 1st derivative value %
fx = @(x) (C_S1)*sqrt(D^(2)+x.^(2))+(C_O1)*(L-x);
% 2nd derivative value %
gx = @(x) ((C_S1)*x./sqrt(x.^(2)+D^2))-(C_O1);
g = g(x0);
Precision = 0.01;
while abs(g) > Precision
% new 1st derivative value %
f= fx(x0);
% Newton-Raphson's formula %
x0 = x0 - f/g;
% new 2nd derivative value %
g= gx(x0);
end
Cost(j) = g;
Optimal_distance(j) = x0;
end
Im trying to get values of x0 where my value of D changes but when i run the code i get the following error message;
Index exceeds the number of array elements (1).
Error in Q1c (line 32)
g = g(x0);
How can I solve this problem?

 Accepted Answer

Maybe you mean:
g = gx(x0);
% ^

5 Comments

oh thanks, what a silly mistake
Now i fixed it but my code is not really finishing its run, could you help me out in this?
I assume abs(g) > Precision is not a matching criterion. I cannot run your code to test this, because there are missing variables, at least C_S1.
% data %
L = 120;
C_S1 = 2.5e+06;
C_O1 = 2e+06;
Use the debugger to check the values: g does not reach a fix point near to 0, but it is iterating between -4499994.58631 and 499560.68281.
How can I modify my code so i can get a proper output?

Sign in to comment.

More Answers (0)

Products

Release

R2020b

Community Treasure Hunt

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

Start Hunting!