MATLAB: Help Using Newton Rhapson Method for Colebrook equation

newton rhapson

For context, the homework assignment wants us to use the Newton Rhapson method to solve for the friction value using Colebrook's equation. I have my code below but I keep getting errors saying that in line 18 matrix dimensions must agree. I'm not exactly sure what the issue is and our professor told us to approach the problem this way. Any help would be greatly appreciated. Code is attached

Best Answer

Hello Mary,
The problem is with the function:
diff(h(x))
This function operates with vectors and it only computes the difference. Also, to obtain the derivative you need to divide by an appropriate step size. You have two options here:
  1. Compute the exact derivative with a symbolic asistant (or by hand ...) and then add to your code in line 16.
  2. Approximate the derivative with a centered finite difference (or backward,forward).
I used here the second option,
x0 = 0.01; %Guess for initial x
x=x0;
dx = 1e-3; % Step size for the centered finite difference
for i=0:100000
y=x;
m = (h(x+dx) - h(x-dx)) / (2*dx); % centered finite difference
x = y-(h(x)/m);
if x==y
break
end
end
Best.