Newton's method(calculating theta)

2 visualizzazioni (ultimi 30 giorni)
w = 30; h = 30; b = 3.5; % In inches
f = @(theta) w*sind(theta) - h*cosd(theta) - b;
fp = @(theta) w*cosd(theta)+h*sind(theta);
theta_newt(1) = 49.76; % Set initial guess
tol=0.4771;
n=1;
while n<=1:50
fe = f(theta_newt(1));
fpe = fp(theta_newt(1));
theta_newt(n+1) = theta_newt(n) - fe(n)/fpe(n);
if theta_newt(n+1)< 49.73-tol || theta_newt(n+1)>49.73+tol
return
else
theta=theta_newt(n+1);
end
n=n+1;
end
disp(theta)
why is the code not returning to the loop when it is not calculating the wanted angle?

Risposta accettata

Sriram Tadavarty
Sriram Tadavarty il 16 Mar 2020
Hi Ahmed,
The condition you placed for the while loop is a series of vector. Update the condition as below and code requires minor modifications to work
while n <= 50 % It runs the loop till n becomes 50
fe = f(theta_newt(n));
fpe = fp(theta_newt(n));
theta_newt(n+1) = theta_newt(n) - fe/fpe;
if theta_newt(n+1)< 49.73-tol || theta_newt(n+1)>49.73+tol
return
else
theta=theta_newt(n+1);
end
n=n+1;
end
Hope this helps.
Regards,
Sriram

Più risposte (0)

Community Treasure Hunt

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

Start Hunting!

Translated by